Fly*_*Cat 2 apache-flex flash events dispatcher actionscript-3
简单的问题..我想知道你们什么时候在课堂上扩展EventDispatcher.在我看来,只要我们有导入事件包,我们可以没有问题调度事件....我看到有人在他们的课程中扩展EventDispatcher ...不知道为什么......有人在意解释?太感谢了...
我认为你可能会混淆AS3中的许多对象在继承树中将EventDispatcher扩展得更高的事实,只需要导入flash.events包以便分派事件.例如,许多DisplayObject类扩展了EventDispatcher.以下是几个例子:
Shape » DisplayObject » EventDispatcher » Object
Sprite » DisplayObjectContainer » InteractiveObject » DisplayObject » EventDispatcher » Object
Run Code Online (Sandbox Code Playgroud)
通常我会在每次使用自定义类时扩展EventDispatcher,该类只需要与其范围之外的对象进行通信,这些对象的某些内部属性已更改或某些函数正在发生.这是一个例子:
public class Clock extends EventDispatcher
{
protected var _tick:uint;
protected function run():void
{
if( _tick + 1 > 60 ) {
_tick = 0;
} else {
_tick++;
}
dispatchEvent( new Event( Event.CHANGE ) );
}
public function getTick():uint { return _tick; }
}
Run Code Online (Sandbox Code Playgroud)
有时保持对象的内部细节只读是"重要的".在上面的示例中,当run()
调用该方法时,Clock
该类执行一些内部逻辑,然后调度指示某些内容已更改的事件.任何正在侦听该事件的类都可以调用public getTick()
方法来查找该值_tick
.这隐藏了实现并保护_tick
变量不被外部类更改,同时提供了Clock
可以读取的接口.
归档时间: |
|
查看次数: |
2693 次 |
最近记录: |