清除类(新的ClassName())

时间:2010-07-27 14:35:11

标签: flash actionscript-3 oop

问题:var动物的正面是什么:Pets = new Pets(); ??

脚本:

 package {

   import flash.events.MouseEvent;

   public class Pets {

     public function Pets() {
       // constructor code
       my_btn.addEventListener(MouseEvent.CLICK, onClick)
     }

     private function onClick(e:MouseEvent) {
       trace(Start);
     }
   }
 }

问题:      当我从另一个班级(新宠物())打电话给Pets课程时; ,它运行类,addEventListener工作正常但是:

第一次:跟踪结果

  

开始

第二次:追踪结果

  

开始
    开始

第三次:追踪结果

  

开始
    启动
    开始

以及....

感谢lotttt

1 个答案:

答案 0 :(得分:2)

假设my_btn是舞台上按钮的一个实例,每次创建Pets的新实例时,都会向同一{{1}添加新的MouseEvent.CLICK事件处理程序实例。

有几种不同的方法可以解决这个问题,但这取决于你希望如何运作。如果您只想要存在一个my_btn实例,那么在my_btn类之外添加MouseEvent.CLICK处理程序(并且只添加一次)。如果每个Pets实例都需要自己的按钮,那么您需要为Pets的每个实例实例化my_btn的新实例(目前看起来您正在引用同一个{{1}实例跨所有Pets个实例)。