|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+4 06.05.14]
|
Не отрабатывают события внутреннего контейнера
Парни странная тема творится , не могу понять в чем мистика :
Имеем флешка A , которая грузит флешку B Из флешки B послыается событие типа new Event("mnogoBukav") Во флешке А подписывается флешка B - ждем события. Ранее был такой косяк, что не летело событие текстовое его название было "ierror" . Однако сменив его на ixerror например - стало летать.... Сейчас такая же петрушка с названием например waslogged - но в данной ситцуации на что не меняй название событие не летит. А вот теперь по делу : события пркрасно отрабатывают тестируй я локально, но в сети - нет. В чем может быть трабла? ( P.s. пробовал по разному, как с создание кастома, так и просто текстом - все одно не летит )
__________________
Марк Tween |
|
|||||
в "чистом виде" трабл не воспроизводится
стало быть, есть еще какие-то "отягчающие" обстоятельства |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
проверь ApplicationDomain.
|
|
|||||
[+4 06.05.14]
|
silin - да если бы я не мог диагностировать косяк в коде - грошь мне цена была бы, если ты об этом. Тут именно какой специфический флешовый типа аля ApplicationDomain как undefined - пишет.
Вот полный пример А - cont.addEventListener(ExternalEvent.NAME, some); B - Main - > controller - > host.dispatchEvent(new Event("name")) Флешка А и B - документ Main. Заявляю авторитетно , что было прям именно так, что вначале событие звалось ierror не приходило, кроме как изменив название на ixerror ничего не делал - стало приходить. Есть мнения почему такое было возможно? Как мне кажется вплоне возможно что такое имя евента есть в стандарте поэтому оно как то игнорилось Добавлено через 48 секунд P.s/. Опять же, как уже сказал - локально пашет на ура - не работает только в сети
__________________
Марк Tween |
|
|||||
речь не о косяке в коде, а о том, что описанная тобой ситуация в голом виде не дает такого косяка
вот тест трабла, который работает добавь сюда свои нюансы (если что-то не соответствует), чтоб перестало и что-то, возможно, прояснится, а иначе это гадания на кофейной гуще.. private var loaader:Loader; public function Main():void { loaader = new Loader(); loaader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaader_complete); addChild(loaader); loaader.load(new URLRequest("test.swf")); Console.register(stage, 500, 200); Console.log("click quadrate to dispatchEvent"); Console.visible = true; Console.x = 150; } private function loaader_complete(e:Event):void { var test:Sprite = loaader.content as Sprite; test.addEventListener("mnogoBukav", test_mnogoBukav); } private function test_mnogoBukav(e:Event):void { Console.log( "Main.test_test > e : " + e ); } public class Test extends Sprite { public function Test():void { var body:Sprite = new Sprite(); body.graphics.beginFill(0); body.graphics.drawRect(0, 0, 100, 100); body.addEventListener(MouseEvent.CLICK, body_click); addChild(body); buttonMode = true; } private function body_click(e:MouseEvent):void { dispatchEvent(new Event("mnogoBukav")); } } |
|
|||||
обе флешки не могут быть Main или же это должны быть одинаковые флешки, нельзя иметь два разных Main в одном ApplicationDomain (нельзя загрузить Main в флешку, где уже есть такой класс)
Последний раз редактировалось silin; 23.03.2015 в 15:54. |
|
|||||
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
Полагаю, что ты всю жизнь не знал, в какой ApplicationDomain ты загружаешь свои флешки. Потому что при попытке загрузить в ApplicationDomain класс с именем, которое в этом ApplicationDomain уже зарегистрировано, ты получишь что класс не будет заменен. Загруженной флешкой будет использоваться класс, который был в ApplicationDomain до ее загрузки. Да-да, именно так =)
__________________
...вселенская грусть |
|
|||||
[+4 06.05.14]
|
gloomyBrain - вот хз что то. Структура такая
A - someNameDocumentNotMain B - Main C- Main а грузит б, б - грузит с. Коннект событий между б и с соответсвенно. Загрузка происходит как раз таки в new AppDomain
__________________
Марк Tween |
Часовой пояс GMT +4, время: 18:56. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|