2011-06-15 49 views
0

在我的文档类中,我生成了一堆动画片段,然后将它们放置在它们自己的类文件中。我想要发生的是,当我用鼠标触摸动画片段时,它们会被删除,并且得分数量会增加一个点。当触发鼠标事件时,如何从画布中删除特定的动画片段?继承人是我到目前为止已经试过,没有removeChild之或removeMovieClip工作:如何删除作为鼠标事件目标的动画片段?

public class Pong extends MovieClip 
    { 
     public var points:int=0; 
     public var timer:Timer=new Timer(100); 
     public function Pong() 
     { 
      // constructor code 
      timer.addEventListener(TimerEvent.TIMER, tick); 
      addEventListener(MouseEvent.MOUSE_OVER,score); 
      timer.start(); 
     } 

     public function tick(TimerEvent) 
     { 
      var clikBloc:clik= new clik(); 
      addChild(clikBloc); 
     } 
     public function score(evt:MouseEvent):int 
     { 
      trace(evt.target); 
      points++; 
      return (points); 
      removeChild(evt.target); 
      removeMovieClip(evt.target); 
     } 

回答

4

你的回报是高,所以没有什么是被执行的。

public function score(evt:MouseEvent):int 
{ 
    trace(evt.target); 
    points++; 

    removeChild(DisplayObject(evt.target)); 

    // or just to be on safe side try 
    // MovieClip(evt.target).parent.removeChild(evt.target) 
    return (points); 
} 
+0

嘿,你是对的。不错的地方。 – Marty 2011-06-15 06:15:31

0

您正在寻找removeChild()

我通常是类对象中创建一个remove()方法,这样就可以方便地调用thing.remove();

它应该是这样的:

public function remove():void 
{ 
    // remove from arrays 
    // remove added event listeners 

    if(parent) parent.removeChild(this); 
} 

而且更好的是,创建一个基类您的可见元素具有上述remove()方法,然后在扩展类中覆盖此类,以便您可以删除特定的侦听器等等。因此,假设上述是一个基类,这是覆盖会是什么样子在延伸类:

override public function remove():void 
{ 
    removeEventListener(MouseEvent.CLICK, _click); 
    super.remove(); 
} 

更新为根据注释:

你可以从调度事件remove()方法并在文档类中侦听它,这会让您增加分数。

public function remove():void 
{ 
    // dispatch removed event 
    var evt:Event = new Event("removed"); 
    dispatchEvent(evt); 

    // remove from arrays 
    // remove added event listeners 

    if(parent) parent.removeChild(this); 
} 

然后,当您创建文档类对象,使用方法:

thing.addEventListener("removed", removed); 

从这里你可以做(​​文档类):

private function removed(e:Event):void 
{ 
    e.target.removeEventListener("removed", removed); 

    points ++; 
} 
+0

我知道你能做到这一点从Object类,但这并不文档类的工作,我不能记录物体类中的得分。那么我是否必须让文档类保持对分数的控制,并且对象类管理自我删除? – 2011-06-15 01:37:22

+0

查看更新。那对你有用吗? – Marty 2011-06-15 01:42:00