actionscript-3 – Flash事件执行顺序
发布时间:2020-12-15 07:23:30 所属栏目:百科 来源:网络整理
导读:看看下一个代码,告诉我你打算打印什么.然后运行它并检查实际发生了什么. package{ import flash.display.Sprite; import flash.events.Event; public class TestFlashEvents extends Sprite { private static const DUMMY_EVENT:String = "DummyEvent"; priv
看看下一个代码,告诉我你打算打印什么.然后运行它并检查实际发生了什么.
package { import flash.display.Sprite; import flash.events.Event; public class TestFlashEvents extends Sprite { private static const DUMMY_EVENT:String = "DummyEvent"; private var dummyObjects:Vector.<DummyObject> = new Vector.<DummyObject>(100); public function TestFlashEvents() { for(var i:int = 0; i < dummyObjects.length; i++){ dummyObjects[i] = new DummyObject(this); addEventListener(DUMMY_EVENT,dummyObjects[i].listener); } removeEventListener(DUMMY_EVENT,dummyObjects[41].listener); dispatchEvent(new Event(DUMMY_EVENT)); } private var counter:int = 0; public function onGettingEvent(dummyObject:DummyObject):void{ if(counter == 25){ for(var i:int = 0; i < 50; i++){ removeEventListener(DUMMY_EVENT,dummyObjects[i].listener); trace("Removing",dummyObjects[i].id); } } trace("Handeling event",counter,dummyObject.id); counter++; } } } import flash.events.Event; class DummyObject { private static var dummyObjectsCounter:int = 0; public var id:String; private var tester:TestFlashEvents; public function DummyObject(tester:TestFlashEvents) { this.tester = tester; id = "DummyObject " + dummyObjectsCounter; dummyObjectsCounter++; } public function listener(event:Event):void{ tester.onGettingEvent(this); } } removeEventListener函数实际上不起作用.告诉我你怎么看待它.我还在adobe中打开了一个错误. 解决方法
此代码表示Adobe在实际调用事件侦听器之前缓存事件侦听器列表.在一个对象上为一个特定事件提供两个侦听器是一种不寻常的行为,但如果发生这种情况,Adobe会假定在实际修改此列表之前应调用所有侦听器.我实际上期待所有99个听众被召唤.因此,这种行为甚至可以通过设计来实现,因为在处理单个事件时重新呈现事件侦听器列表会给Flash带来太大的负担,因此滞后将会很多.没有人想要滞后.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |