好的,我有一个名为changeHandler
的函数 - 它由其他函数中的几个eventListeners调用。我想编写几个if
语句来评估函数调用的来源,并根据原始函数更改dataProvider
的{{1}}。示例:许多函数中的一个被称为ComboBox
,并且具有如下的eventListener:
displayCarbs()
(我已从上面的函数中删除了所有不必要的代码)
function displayCarbs(event:MouseEvent):void {
myComboBox.addEventListener(Event.CHANGE, changeHandler);
}
中的if
语句将如下所示:
changeHandler
我已经搜索了能够实现这一目标的高低,但我对AS3或词汇没有足够的把握来描述我从谷歌那里得到答案的含义。
答案 0 :(得分:1)
我能想到的最简单的方法......难道你不能简单地创建一个文本字符串,在转到changeHandler之前更新函数名称然后反过来,changeHandler可以检查字符串内容并采取相应的行动。
public var referring_function:String;
function displayCarbs(event:MouseEvent):void
{
referring_function = "displayCarbs";
myComboBox.addEventListener(Event.CHANGE, changeHandler);
}
function displayCarbs(event:Event):void
{
if (referring_function == "displayCarbs")
{ myComboBox2.dataProvider = new DataProvider(carbItems); }
if (referring_function == "displayOthers")
{ myComboBox2.dataProvider = new DataProvider(otherItems); }
// etc etc
}
如果您在检查字符串的 If语句时需要==
或=
,我现在无法记住。
答案 1 :(得分:1)
我知道已经有一个已接受的答案,但根据我收集到的问题,这里有一个解决方案,不需要添加另一个变量来检查:
function displayCarbs(event:MouseEvent):void
{
myComboBox.addEventListener(Event.CHANGE, changeHandler);
}
function changeHandler(event:Event):void
{
var comboBox:ComboBox = event.target as ComboBox;
if (comboBox.dataProvider == uniqueProvider)
{
myComboBox2.dataProvider = new DataProvider(appropriateItems);
}
}
如果基于第一个dataProvider确定第二个dataProvider,这应该有效。这当然要求您的uniqueProvider是一个类成员变量,因此它在处理程序中具有范围。