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

通常、例に記載されているように、イベントが一度に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.imtqy.comvdin.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"; }); 

Source: https://habr.com/ru/post/J111089/


All Articles