AS3 dispatchEvent的方法

时间:2010-08-09 19:10:40

标签: flash events flex dispatchevent

我想知道这两个dispatchEvent方法之间的区别......

//1.
    eventObj:YouTubeSearchEvent = new YouTubeSearchEvent(YouTubeSearchEvent.CHANGE_VIDEO_READY);
                    eventObj.videoId = theOneVideoId;
                    dispatchEvent(event);

//2
    dispatchEvent(new YouTubeSearchEvent(YouTubeSearchEvent.CHANGE_VIDEO_READY, videoId));

根据我的自定义事件,我需要有两个参数......但是想知道第一种方法是否与第二种方法不同......

我的自定义活动:

package com.search.events
{
    import flash.events.Event;

    public class YouTubeSearchEvent extends Event
    {
        public static const FEED_VIDEO_READY:String="feed_video_ready";
        public static const CHANGE_VIDEO_READY:String="change_video_ready";

        public var videoResult:*;

        public function YouTubeSearchEvent(type:String, videoResult:*)
        {
            super(type);

            this.videoResult=videoResult;

        }
    }
}

问题来自我的另一篇文章 AS3 Pass Custom Event Data Question

1 个答案:

答案 0 :(得分:1)

在内部他们并没有什么不同。运行时可能会对代码进行一些优化,但我对此表示怀疑。

最大的区别在于第一个比第二个更具可读性。另外我认为你的意思是将videoResult设置为第一个而不是videoId,因为班级中没有一个。{/ p>

修改 实际上,你在第一个中创建一个激活对象引用有一点点差别,这取决于代码可能会或可能不会挂起一段时间因此消耗内存。这是Flash虽然我不会太在意它,你已经使用了相当多的内存我不认为一个事件对象引用会导致问题。此外,当运行时发现它没有被使用时,它会被垃圾收集。