0

それで、私が次のコードを持っているとしましょう:

public function first(text:String):String {
   _text = text;
   dispatchEvent(event);

   //Want this statement to return the value of _text
   //after handler has finished transforming text.
   return _text;
}

//handles the event
public function handler(event:Event):void {
   //does things, then changes the value of _text
   _text = "next text that first needs to return";
}

メソッド(最初)が(ハンドラー)によって変換された後、_textの正しい値を返すことをどのように確認しますか?

前もって感謝します!

4

1 に答える 1

0

ActionScript はシングル スレッド言語であり、イベント ハンドラーは値を返さないため、_text がパッケージ スコープ内の変数である場合、コードは機能すると思います。次のコードはあまり意味がありませんが、first別のクラスから関数を呼び出すと便利です

package
{
    import flash.display.Sprite;
    import flash.events.Event;


    public class EventTest extends Sprite
    {
        public function EventTest()
        {
            addEventListener("sliceText", sliceHandler);

            //will be Some
            var newText:String = first("SomeText");
            trace(newText);
        }

        private var _text:String;

        public function first(text:String):String
        {
            _text = text;

            dispatchEvent(new Event("sliceText"));

            return _text;
        }

        protected function sliceHandler(event:Event):void
        {
            //let's slice text to be more valuable
            _text = _text.slice(0,4);
        }

    }
}
于 2012-04-17T05:59:46.590 に答える