![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Вот главный класс приложения:
package { import flash.display.Sprite; import flash.events.Event; import ru.inils.utils.Debugger; public class Main extends Sprite { public function Main():void { Debugger.trace('Main created', Debugger.LEVEL_DEBUG); if (stage) { init(); }else { addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(event:Event = null):void { var test:GameLoader = new GameLoader(); addChild(test); } } } package { import ru.inils.utils.Debugger; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; public class GameLoader extends Sprite { public var loader:Loader; public function GameLoader() { Debugger.trace('GameLoader created', Debugger.LEVEL_DEBUG); loader = new Loader(); loadGame('Game.swf'); } protected function loadGame(way:String):void { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onGameLoad); loader.load(new URLRequest(way)); Debugger.trace('Loading SWF: ' + way, Debugger.LEVEL_DEBUG); } protected function onGameLoad(event:Event):void { Debugger.trace('SWF loaded', Debugger.LEVEL_INFO); } } } Вложение 21038 Если сделать GameLoader главным классом, то все ок: Вложение 21039 При этом загружаемый swf по прошествии 5 секунд трэйсит сообщение "event dispatched". Так вот в первом случае трэйс не выводится, во втором - выводится (2ой скрин снят до трэйса, поэтому его не видно). Почему все это происходит? Для удобства приложу этот проект. Последний раз редактировалось Kuruki; 27.11.2009 в 01:25. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Да. После переименования все встало на свои места, спасибо. Но все-таки, что это было? Неужели нужно контролировать имена классов даже с именами классов внешнего swf? Странно, почему я раньше с этим не сталкивался...
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Класс с одним и тем же именем и пакетом инициализируется один раз, в том же ApplicationDomain.
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Разобрался. Но возник еще вопрос. Допустим, чтобы не ограничивать разработчика Game.swf, я буду создавать для него новый ApplicationDomain:
protected function loadGame(way:String):void { var definition:LoaderContext = new LoaderContext(); definition.applicationDomain = new ApplicationDomain(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onGameLoad); loader.load(new URLRequest(way), definition); Debugger.trace('Loading SWF: ' + way, Debugger.LEVEL_DEBUG); } package { import flash.events.Event; public class MyEvent extends Event { public static const CHANGE:String = 'change'; private var __myVar:String; public function MyEvent(type:String, newVar:String) { super(type); __myVar = newVar; } public function get myVar():String { return __myVar; } } } |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Интерфейс для событий?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|