PDA

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


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

главная:

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");
}
}