打印

[AS3] 关于MovieClip被实例化并显示在时间轴上的事件

在as2中,下面的Oval被实例化后出现在舞台上时会自动执行onLoad();
class Oval extends MovieClip{
      public function Oval() {
      }
      public function onLoad () {
         trace("onLoad");
      }
}

现在在as3中应该怎么样来实现同样的效果??我用下面的代码会不断的执行onadded(evtObj:Event);
package {
       import flash.display.MovieClip;
       import flash.events.Event;
       import flash.events.EventDispatcher;
       public class TV extends MovieClip {
              public function TV() {
                     this.addEventListener(Event.ADDED,onadded);
              }
              private function onadded(evtObj:Event):void {
                     trace("added");
              }
       }
}

刚学as3,请高手帮我一下
ADDED 是冒泡事件  也就是他的child被添加也会执行这个事件

我看你的意思应该是
ADDED_TO_STAGE

回复 #2 321321321 的帖子

ADDED_TO_STAGE是不是只有他本身被添加才执行啊?
added 事件 和 addedToStage 事件有什么区别啊,头晕啊
帮助上说
added事件是将显示对象添加到显示列表中时调度。 以下方法会触发此事件:DisplayObjectContainer.addChild()、DisplayObjectContainer.addChildAt()。
而addedToStage事件是在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。 以下方法会触发此事件:DisplayObjectContainer.addChild()、DisplayObjectContainer.addChildAt()。

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
看看ADOBE給的例子,你就明白區別了
复制内容到剪贴板
代码:
package {
    import flash.display.Sprite;
    import flash.events.*;
    public class EventExample2 extends Sprite {
        public function EventExample2():void {
            var parentSprite:Sprite = createSprite("parentSprite",200);
            var childSprite:Sprite = createSprite("childSprite",100);
            var childOfChildSprite:Sprite = createSprite("childOfChildSprite",50);
            
            trace(":: Adding to Stage ::");
            this.addChild(parentSprite);
            trace(":: Adding to Stage ::");
            parentSprite.addChild(childSprite);
            trace(":: Adding to Stage ::");
            childSprite.addChild(childOfChildSprite);
        }
        private function createSprite(name:String,size:uint):Sprite {
            trace(":: Creating Sprite ::");
            var newSprite:Sprite = new Sprite();
            newSprite.name = name;
            newSprite.graphics.beginFill(0xFFFFFF * Math.random(),1);
            newSprite.graphics.drawRect(0,0,size,size);
            newSprite.graphics.endFill();
            newSprite.addEventListener(Event.ADDED, spriteAdded);
            newSprite.addEventListener(Event.ADDED_TO_STAGE, spriteAddedToStage);
            newSprite.addEventListener(Event.REMOVED, spriteRemoved);
            newSprite.addEventListener(Event.REMOVED_FROM_STAGE, spriteRemovedFromStage);
            newSprite.addEventListener(MouseEvent.CLICK, remove);
            return newSprite;
        }
        private function remove(event:Event) {
            if(event.target == event.currentTarget) {
                trace(":: Removing Clicked Sprite ::");
                var target:Sprite = Sprite(event.target);
                target.parent.removeChild(target);
            }
        }
        private function spriteRemovedFromStage(event:Event):void {
            trace("REMOVED_FROM_STAGE: " + event.target.name + " : " + event.currentTarget.name);
        }
        private function spriteRemoved(event:Event):void {
            trace("REMOVED: " + event.target.name + " from " + event.currentTarget.name);
        }
        private function spriteAddedToStage(event:Event):void {
            trace("ADDED_TO_STAGE: " + event.target.name + " : " + event.currentTarget.name);
        }
        private function spriteAdded(event:Event):void {
            trace("ADDED: " + event.target.name + " within " + event.currentTarget.name);
        }
    }
}

TOP