AS3 способы отправки события - PullRequest
0 голосов
/ 09 августа 2010

Мне было интересно узнать разницу между этими двумя методами 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 Вопрос о пользовательских событиях

1 Ответ

1 голос
/ 09 августа 2010

Внутренне они ничем не отличаются. Среда выполнения может оптимизировать код, но я в этом сомневаюсь.

Самое большое отличие состоит в том, что первое немного более читабельно, чем второе. Также я думаю, что вы хотите установить videoResult в первом, а не videoId, поскольку в классе его нет.

EDIT: На самом деле есть небольшая разница в том, что вы создаете неявную ссылку на объект в первой, которая в зависимости от того, где находится код, может зависать или не зависать в течение некоторого времени, что потребляет память. Это Flash, хотя меня это не слишком беспокоит, вы уже используете довольно много памяти, и я не думаю, что одна ссылка на объект события вызовет проблему. Кроме того, он будет собирать мусор, когда среда выполнения обнаружит, что он не используется.

...