zoukankan      html  css  js  c++  java
  • Flash/Flex学习笔记(35):如何正确监听Stage对象的事件

    如果想在一个自定义类中注册对stage对象的监听事件,然后在另一个文档类中使用该类的实例(或在fla的时间轴上使用该类的实例),你会很郁闷的发现:在构造函数中始终无法引用到this.stage(用trace(this.stge)会一直返回null),既然引用都得不到,当然也就无法注册事件了,正确的做法如下:

    view source

    print?

    01
    package{

    02

    03
    import flash.display.Sprite;

    04
    import flash.events.Event;

    05
    import flash.events.MouseEvent;

    06

    07
    public class MyClass extends Sprite{

    08

    09
    public function MyClass(){

    10
    trace("MyClass 构造函数被调用了...");           

    11
    trace(this.stage);//输出null          

    12
    addEventListener(Event.ADDED_TO_STAGE,AddedToStageHandler);

    13
    }

    14

    15
    function AddedToStageHandler(e:Event):void{

    16
    trace(this.stage);//这时才能获得stage引用 

    17

    18
    this.stage.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler)     

    19
    }

    20

    21
    function MouseDownHandler(e:Event):void{

    22
    trace("you clicked the stage");

    23
    }

    24

    25

    26
    }

    27
    }

    即必须在ADDED_TO_STAGE事件以后,才能引用到stage对象,当然还有一个提前是该类的实例必须被addChild,比如象下面这样,可以在fla时间轴的帧代码中这样使用:

    view source

    print?

    1
    var mycls:MyClass = new MyClass();

    2
    addChild(mycls);

  • 相关阅读:
    线程 详解
    登录时,添加图片验证码
    String、StringBuffer、StringBuilder详解
    Random 生成随机数
    down
    九九归一
    小R与手机
    coins
    noip注意事项
    小W计树
  • 原文地址:https://www.cnblogs.com/happysky97/p/1884566.html
Copyright © 2011-2022 走看看