Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как загруженному swf передать событие ? (http://www.flasher.ru/forum/showthread.php?t=103840)

свинко 13.11.2007 18:16

как загруженному swf передать событие ?
 
Возникла проблема, загруженной свф'ке мне необходимо передать событие из главной
пример:

главная:
Код:

class main_movie {
  public function main_movie() {
    AsBroadcaster.initialize(this);
    // загружаеться второй мувик
    broadcastMessage("onMyEvent"); // <-- это сообщение должно    передаться загруженному мувику
  }

  static function main() {
    var n = new main_movie();
  }
}

загружаемая:
Код:

class lswf {
  function onMyEvent() { // << -- вызываеться при получении сообщения
    // код
  }
}

P.S. если что юзаю mtasc. сильно ногами не пинайте, я недавно изучаю флэш :victory:

alexcon314 13.11.2007 22:00

попробуйте передавать событие через LocalConnection

свинко 14.11.2007 00:05

Большое спасибо, это действительно практически то что я искал. Но возникает вопрос о скорости, подходит ли это для игры ? Тоесть у меня в планах было реализовать загрузку с сервера обьектов(по swf на обьект), которые потом бы взаимодействовали друг с другом по средствам таких сообщений.

alexcon314 14.11.2007 09:12

насколько я знаю, проблемо которых вы говорите, возникать не должно.

terbooter 14.11.2007 13:59

Когда вы инициализируете бродкастер нужно еще и листенера ему добавить
и все будет работать

свинко 14.11.2007 17:36

Ладно с LocalConnection я разобрался, всё работает, то вот хотелось бы понять что с AsBroadcaster.

Вот код простого примерчика написанного мной, в нём ничего неработает :wacko:

Test.as
Код:

import listener;

class Test {
        function Test() {
                AsBroadcaster.initialize(this);
                _root.createEmptyMovieClip("m", 1);
                var loader:MovieClipLoader = new MovieClipLoader();
                var l:listener = new listener(this);
                loader.addListener(l);
                loader.loadClip("o.swf", _root.m);
        }
       
        static function main() {
                var t:Test = new Test();
        }
}

listener.as
Код:

class listener  {
        private var _p:Object;
        function listener(p:Object) {
                _p = p;
        }
        public function onMyEvent() { // <-- этот удаёться вызвать
                trace("listener - onMyEvent");
        }
        public function onLoadStart(target:MovieClip) {
                trace("loading");
        }
        public function        onLoadComplete(target:MovieClip) {
                trace("movie loaded");
                _p.addListener(this);
                _p.addListener(target);
                _p.broadcastMessage("onMyEvent");
        }
}

o.as
Код:

class o {
        public function onMyEvent() { // <-- с этим ничего неполучаеться
                trace("o - onMyEvent");
        }
}



Часовой пояс GMT +4, время: 13:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.