イベントリスナーを管理する別の方法

通常、例に記載されているように、イベントが一度に1つずつ発生することはほとんどありません。 人生では、一連のイベント(接続、承認、呼び出しなど)を処理し、各段階で他のイベントも発生する可能性があります(呼び出しのキャンセル、切断)。



起こるべきことを言葉で伝えようとすると、「イベントが発生した場合、そうでない場合、ここをクリックしてタイムアウトが発生した場合」という言葉をたくさん聞くことができます。 ここでは、if-elseのスタイルでイベントプログラムする試みについて説明します。





//  event listener- beginGroup(); //  btn_shoot_mc.addEventListener("click",function ...); // listener     ,   handler // "none" -    // "self" -   listener // "group" -   listener-   wait(btn_shoot_mc,"click",function(e:Object){ // return "group"; }); timeout(2.0,function(e:Object){ //,   return "group"; }); timer(0.5,function(e:Object){ //    return "none"; }); endGroup();
      
      







ActionScript言語の機能では、おなじみのif-else構文を使用できませんが、beginGroupとendGroup内のwait、timeout、timerの呼び出しは、本質的にこの役割を果たします。



別の例:コンテキストメニュー

 import com.github.iovdin.eventtree.*; // items -  MovieClip-       wait(items,"click",function(e:Object){ var item:Sprite = e.currentTarget; //  var h:Function = arguments.callee; addChild(menu); menu.x = item.x; menu.y = item.y; //    nextFrame(function(e:Object){ //     beginGroup, endGroup //       wait(menu,"click",function(e:Object){ //  -  menu.parent.removeChild(menu); //   wait(items,"click",h); return "group"; }); //   stage    MovieClip   wait([stage,item],"click",function(e:Object){ menu.parent.removeChild(menu); //  wait(items,"click",h); return "group"; }); //  item ,     wait(items,"click",function(e:Object){ if(e.currentTarget == item) return "none"; h(e); return "group"; }); }); return "self"; });
      
      






All Articles