actionscript-3 - Flash 事件执行顺序

标签 actionscript-3 flash events

查看下一个代码,告诉我您希望打印什么。然后运行它并检查到底发生了什么。

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 中打开了一个错误.

最佳答案

此代码意味着 Adob​​e 在实际调用事件监听器之前缓存事件监听器列表。在一个对象上为一个特定事件设置两个监听器是一种不寻常的行为,但如果发生这种情况,Adobe 假定应在实际修改此列表之前调用所有监听器。我实际上期待所有 99 位听众都被调用。因此,这种行为甚至可以是设计使然,因为在处理单个事件时重新呈现事件监听器列表会给 Flash 带来过重的负载,从而导致延迟过多。没有人想要滞后。

关于actionscript-3 - Flash 事件执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601068/

相关文章:

actionscript-3 - 以编程方式设置 AIR 窗口位置?

flash - 支持密码保护的任何 AS3/Air Library for Zip 文件

actionscript-3 - 尝试将声音元素捕捉到 Flash CS5-as3

actionscript-3 - AS3 TextField 不应用 <b> 标签

flash - Actionscript TCP 套接字无法为某些人发送消息

javascript - 为什么 `event.preventDefault()` 不适用于两个嵌套的 div?

java - 有没有 Java 到 SWF 的编译器?

flash - 阿拉伯字母在 Flash 中显示为断开连接

javascript - 允许事件继续

Python Tkinter : Text widget unbind mouse wheel