Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не отрабатывают события внутреннего контейнера (http://www.flasher.ru/forum/showthread.php?t=210499)

in4core 22.03.2015 23:58

Не отрабатывают события внутреннего контейнера
 
Парни странная тема творится , не могу понять в чем мистика :
Имеем флешка A , которая грузит флешку B
Из флешки B послыается событие типа new Event("mnogoBukav")
Во флешке А подписывается флешка B - ждем события.

Ранее был такой косяк, что не летело событие текстовое его название было "ierror" . Однако сменив его на ixerror например - стало летать....

Сейчас такая же петрушка с названием например waslogged - но в данной ситцуации на что не меняй название событие не летит.
А вот теперь по делу : события пркрасно отрабатывают тестируй я локально, но в сети - нет.

В чем может быть трабла? ( P.s. пробовал по разному, как с создание кастома, так и просто текстом - все одно не летит )

silin 23.03.2015 11:18

в "чистом виде" трабл не воспроизводится
стало быть, есть еще какие-то "отягчающие" обстоятельства

undefined 23.03.2015 12:32

проверь ApplicationDomain.

in4core 23.03.2015 15:02

silin - да если бы я не мог диагностировать косяк в коде - грошь мне цена была бы, если ты об этом. Тут именно какой специфический флешовый типа аля ApplicationDomain как undefined - пишет.
Вот полный пример
А - cont.addEventListener(ExternalEvent.NAME, some);
B - Main - > controller - > host.dispatchEvent(new Event("name"))
Флешка А и B - документ Main.
Заявляю авторитетно , что было прям именно так, что вначале событие звалось ierror не приходило, кроме как изменив название на ixerror ничего не делал - стало приходить. Есть мнения почему такое было возможно?
Как мне кажется вплоне возможно что такое имя евента есть в стандарте поэтому оно как то игнорилось

Добавлено через 48 секунд
P.s/.
Опять же, как уже сказал - локально пашет на ура - не работает только в сети

silin 23.03.2015 15:16

речь не о косяке в коде, а о том, что описанная тобой ситуация в голом виде не дает такого косяка
вот тест трабла, который работает
добавь сюда свои нюансы (если что-то не соответствует), чтоб перестало и что-то, возможно, прояснится, а иначе это гадания на кофейной гуще..

Код AS3:

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

Код AS3:

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


in4core 23.03.2015 15:21

silin - обе флешки должны быть Main или это не имеет значения?

silin 23.03.2015 15:28

обе флешки не могут быть Main или же это должны быть одинаковые флешки, нельзя иметь два разных Main в одном ApplicationDomain (нельзя загрузить Main в флешку, где уже есть такой класс)

in4core 23.03.2015 19:25

Цитата:

обе флешки не могут быть Main или же это должны быть одинаковые флешки, нельзя иметь два разных Main в одном ApplicationDomain (нельзя загрузить Main в флешку, где уже есть такой класс)
ммм. Почему это нельзя? Мне можно всю жизнь так грузил и работал, или ты имеешь ввиду, что могут быть проблемы из за этого как раз?

gloomyBrain 23.03.2015 19:52

Полагаю, что ты всю жизнь не знал, в какой ApplicationDomain ты загружаешь свои флешки. Потому что при попытке загрузить в ApplicationDomain класс с именем, которое в этом ApplicationDomain уже зарегистрировано, ты получишь что класс не будет заменен. Загруженной флешкой будет использоваться класс, который был в ApplicationDomain до ее загрузки. Да-да, именно так =)

in4core 23.03.2015 20:17

gloomyBrain - вот хз что то. Структура такая
A - someNameDocumentNotMain
B - Main
C- Main
а грузит б, б - грузит с. Коннект событий между б и с соответсвенно.
Загрузка происходит как раз таки в new AppDomain
Код AS3:

const context:LoaderContext = new LoaderContext(false, new ApplicationDomain());



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

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