Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не срабатывает Event.COMPLETE в прелоадере (http://www.flasher.ru/forum/showthread.php?t=141277)

catcat 20.06.2010 23:48

Не срабатывает Event.COMPLETE в прелоадере
 
Код AS3:

gameLoader = new Loader();
                        gameLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showGameLoadProgress, false, 0, true);
                        gameLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onGameLoadComplete, false, 0, true);
                        gameLoader.load(new URLRequest(GAME_URL));

Когда игра полностью загружается (процесс загрузки виден), то перехода к игре не происходит. До этого вызывается сл. функция:
Код AS3:

obj['prop1'] = SomeFns.fn1(2)

SomeFns - класс, fn1 - public static method это класса, выглядит он довольно просто:

Код AS3:

public static function fn1(id:int)
switch(id)
                        {
                                case 1:
                                        return new String("one");
                                case 2:
                                        return new String("two");
                                case 3:
                                        return new String("three");
                        }
return new String("something else");
}

Причем если написать точно такую же функцию (без разницы - статическую или нет) в предзагрузчике, а не в классе SomeFns, то переход происходит...
В чем может быть дело? В данном случае я даже не вижу взаимосвязи между fn1 и onGameLoadComplete, кстати вот ее код (если использовать SomeFns.fn1, то она даже не вызывается):
Код AS3:

private function onGameLoadComplete(event:Event):void
                {
                        while (numChildren != 0)
                                removeChildAt(0);
 
                        // Добавление игры на сцену
                        addChild(gameLoader);
                }


expl 21.06.2010 01:43

Вы прям ребус какой-то задали, разгадать тяжеловато...
- кто такой obj['prop1']
- где расположен класс SomeFns (в загружаемой флешке или в лоадере)
Цитата:

Код AS3:

private function onGameLoadComplete(event:Event):void
                {
                        while (numChildren != 0)
                                removeChildAt(0);
 
                        // Добавление игры на сцену
                        addChild(gameLoader);
                }


здесь вроде бы все понятно - игра должна добавляться

Распишите по порядку:
Вот код в лоадере ...
Вот код в игре ...
Вот эта функция должна сработать в игре ...
Ее предположительно должен вызвать .. , но не вызвает

Mur4ik 21.06.2010 01:56

Цитата:

Сообщение от catcat (Сообщение 916868)
Код AS3:

public static function fn1(id:int)
switch(id)
                        {
                                case 1:
                                        return new String("one");
                                case 2:
                                        return new String("two");
                                case 3:
                                        return new String("three");
                        }
return new String("something else");
}


И что этот код не вызывает никаких ошибок даже?

-De- 21.06.2010 02:07

IDE же, чо)
Вообще отличный вопрос для конкурса телепатов, ценить надо!
Код AS3:

gameLoader.load(new URLRequest(GAME_URL), new LoaderContext(false,         ApplicationDomain.currentDomain));

Я думаю так =)

catcat 21.06.2010 15:14

Цитата:

- кто такой obj['prop1']
Код AS3:

var obj:Object = new Object();
obj['prop1'] = SomeFns.fn1(2);

Цитата:

где расположен класс SomeFns
Находится в AS файле, загружается с помощью import
Код AS3:

import SomeFns;

В loader'e больше ничего толком и нет, код вызывается в конструкторе, я просто пытаюсь присвоить объекту значение и все, оно присвавается правильно, но Event.COMPLETE не срабатывает. Это случается именно в случае с классом SomeFns... ну это я уже писал.
Цитата:

И что этот код не вызывает никаких ошибок даже?
Я забыл в своем посте написать возвращаемое значение. В самом коде вот так:
Код AS3:

public static function fn1(id:int):String

В SomeFns только эта статическая функция и пустой конструктор и все.

-De- 21.06.2010 15:23

Цитата:

Сообщение от catcat (Сообщение 916992)
Находится в AS файле, загружается с помощью import

PWNED
Господа спрашивали - в загрузчике или в загружаемой флэшке?

Ну и всё-таки
Код AS3:

gameLoader.load(new URLRequest(GAME_URL), new LoaderContext(false,         ApplicationDomain.currentDomain));

Вместо вашего gameLoader.load - не помогает? (ну и там ему нужен импорт типа import flash.system.*;)

catcat 21.06.2010 16:28

Цитата:

Вместо вашего gameLoader.load - не помогает?
Нет, не помогает к сожалению :(
Цитата:

Господа спрашивали - в загрузчике или в загружаемой флэшке?
В загрузчике

-De- 21.06.2010 16:52

Шайтан! Не бывает такого %) Что-то не то и не потому там.
дебаговый плеер стоит? Обычно "не вызывается функция" означает " в функции или том, что её вызывает вылетает ексепшон".
Сделать минимальный код, где воспроизводится, и выложить. Если в процессе не выловится ошибка, то толпой запинаем.

catcat 21.06.2010 18:41

Скачал дебаговый плеер. После того, как загрузка завершается, выскакивает сообщение
Цитата:

SecurityError: Error #2047: Нарушение изолированной среды: parent: http://cs5096.vkontakte.ru/uXXXXXX/efd331450ae8713.zip не может осуществить доступ к http://cs5098.vkontakte.ru/uXXXXXX/bb9bce4845cf49.zip.
Как с этим бороться?
Добавление ApplicationDomain.currentDomain не помогает :(

-De- 21.06.2010 18:55

Курить SecurityError: Error #2047 и разбираться, что ж там за доп. параметры у загрузчика.

Код AS3:

gameLoader.load(new URLRequest(GAME_URL), new LoaderContext(true,         ApplicationDomain.currentDomain, SecurityDomain.currentDomain));

Может помочь)


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

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