0

さて、私は呼び出された関数を持っていますchangeHandler- それは他の関数のいくつかの eventListeners によって呼び出されます。関数呼び出しのソースを評価し、元の関数に応じてmyifを変更するステートメントをいくつか書きたいと思います。例: 多くの関数の 1 つが呼び出され、次のような eventListener があります。dataProviderComboBoxdisplayCarbs()

function displayCarbs(event:MouseEvent):void {
myComboBox.addEventListener(Event.CHANGE, changeHandler);
}

(上記の関数から不要なコードをすべて削除しました)

内のifステートメントは次のchangeHandlerようになります。

if (****referring function = displayCarbs****) {
    myComboBox2.dataProvider = new DataProvider(carbItems);
    }

これを達成できるものを高低で検索しましたが、Googleから回答を得るために何を意味するかを説明するのに十分なAS3または語彙を理解していません.

4

2 に答える 2

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 に基づいて 2 番目の dataProvider が決定される場合に機能します。これにはもちろん、uniqueProvider がクラス メンバー変数であるため、ハンドラ内にスコープがある必要があります。

于 2013-04-18T19:26:20.110 に答える
1

私が考えることができる最も簡単な方法... 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ステートメント==をチェックする必要があるかどうか、または単に=チェックするときは、今は思い出せません。

于 2013-04-18T18:49:23.370 に答える