代码之家  ›  专栏  ›  技术社区  ›  FlyingCat

AS3事件调度方法

  •  0
  • FlyingCat  · 技术社区  · 14 年前

    //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 回复  |  直到 8 年前
        1
  •  1
  •   Matti Lyra    14 年前

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

    最大的区别是第一个比第二个更容易阅读。我也认为你的意思是 videoResult 第一个不是第一个 videoId 因为班上没有人。

    实际上,有一点不同的是,您在第一个引用中创建excplicit对象引用,这取决于代码所在的位置,它可能会或可能不会挂起一段时间,从而消耗内存。这是Flash虽然我不会太在意,但是你已经使用了相当多的内存,我不认为一个事件对象引用会引起问题。此外,当运行时看到它没有被使用时,它会被垃圾回收。