gpt4 book ai didi

flash - 为什么我不能在 Flash CS4 的回调方法中访问组合框?

转载 作者:行者123 更新时间:2023-12-02 02:37:53 25 4
gpt4 key购买 nike

检查这段代码:

import mx.core.View;
var accordianPane = my_acc.createSegment("mcElectrical", "panel0", "Electrical", "payIcon");
accordianPane.comboBox.addItem("test");

这会将标签为“test”的项目添加到影片剪辑的组合框中。它工作得很好。但是,当我将相同的代码放入回调函数时,它失败了。

import mx.core.View;

// Load Cost Guide feed.
var costGuideUrl:String = "http://test/cost-guide.ashx";
var costGuideXml:XML = new XML();
costGuideXml.onLoad = function(success) {
if(success) {
populateAccordian(this);
} else {
// Display error message.
}
};
costGuideXml.load(costGuideUrl);

// Populate Accordian with retrieved XML.
function populateAccordian(costGuideXml:XML) {

var accordianPane = my_acc.createSegment("mcElectrical", "panel0", "Electrical", "payIcon");
accordianPane.comboBox.addItem("test");
// This line definitely executes...
}

关于为什么我无法从回调内部进入组合框的任何想法?

最佳答案

好的,首先看起来您使用的是 AS2。

由于是 as2,问题可能是范围问题。作用域在 as2 和 as3 中的工作方式不同。把我的思绪拉回我as2的日子,当你设置这个回调函数时,你就在costGuideXML的范围内。由于您在此范围内,因此您无权访问 my_acc 变量。

您可能需要使用 Delegate 类来使 populateAccordian 方法在原始类的范围内执行(如果这是在时间轴上,则可能是动画片段)。

类似的东西(虽然这是未经测试的):

import mx.utils.Delegate;

// Load Cost Guide feed.
var costGuideUrl:String = "http://test/cost-guide.ashx";
var costGuideXml:XML = new XML();
costGuideXml.onLoad = Delegate.create(this, xmlLoadedHandler);
costGuideXml.load(costGuideUrl);

function xmlLoadedHandler() : Void
{
populateAccordian(costGuideXml);
}

// Populate Accordian with retrieved XML.
function populateAccordian(costGuideXml:XML) {

var accordianPane = my_acc.createSegment("mcElectrical", "panel0", "Electrical", "payIcon");
accordianPane.comboBox.addItem("test");
// This line definitely executes...
}

关于flash - 为什么我不能在 Flash CS4 的回调方法中访问组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com