Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ошибка при запуске флеш-презентации в Mozilla Firefox (http://www.flasher.ru/forum/showthread.php?t=156101)

Keyles 16.05.2011 17:25

Ошибка при запуске флеш-презентации в Mozilla Firefox
 
Ошибка при запуске флеш-презентации в браузере Мозилла на стороннем компьютере.
У меня на двух компах (Mac & Windows) все работает, ничего не выскакивает. Проверялись и Мозилла, и Опера, и даже Эксплорер шестой.
А мне присылают картинку и говорят, что не запускается у них в Мозилле. Мозилла такая же, плеер тот же. Перед этим аналогичную презентацию грузили, все было ок.

Выпадает окно и сообщает, что:

Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at.ru.nsab.player::AukPlayer/onLoaded()
at.ru.nsab.player::AukLoader/finished()
at.ru.nsab.player::AukLoader/onClipLoaded()
at MethodInfo-62()
at MethodInfo-54()

wvxvw 16.05.2011 20:44

Исправляется в 3 действия:
1. отрывается правая рука тому, кто написал первую анонимную функцию.
2. отрывается левая рука тому, кто написал вторую анонимную функцию.
3. компилируется с возможностью отладки, запускается еще раз в том же браузере, копируется номер строки, отркывается файл ru/nsab/player/AukPlayer.as, находится соответсвующая строка, исправляется, компилируется еще раз. Если п. 3. не сработал - повторить.

Keyles 16.05.2011 22:26

wvxvw, отлично) А по-существу?

expl 16.05.2011 22:46

дык, если заменить "отрывается правая рука" на "берем книгу С.Макконела Совершенный код и бъем по протянуытым рукам автора" (да перегнул, конечно, на практике просто "Вася, блин, перечитай соглашение по кодированию пункт 3.1, вот те ссылка") - тут описана прямая последовательность действий без всякого юмора.

P.S. У флешплеера бывают глюки - вплоть до того, что падало на String(x) вместо x.toString() (причём только в одном конкретном месте и на конкретном флешплеере).
Если в дебажной версии в этом бравзере бага не проявится - просто поэкспериментируйте с различными вариантами действий в строке, на которой падает. Т.е. попробуйте обойти багу.

Keyles 16.05.2011 23:15

Достала исходник и в режиме отладки проверила его. Данный баг не вылезал. При отладке действующей версии исходника баг был. Заменила файлы, ошибка исчезла. Не пойму, в чем дело.
Скрипты везде одинаковые.

goodguy 16.05.2011 23:20

Значит ошибка еще появится.
Что там с анонимными функциями? Присутствуют таковые в коде?

wvxvw 16.05.2011 23:20

Тогда проверяйте, что вы не вызываете ничего, что бы в обычном режиме не включилось: есть функции / классы которые доступны только в отладчике, Error.getStackTrace() например, или возможно, что у вас версия оладчика младьше обычной. Кроме того - а почему мы должны угадывать? Вам сказали в какой функции ошибка, вы бы ее хоть показали.

Keyles 16.05.2011 23:21

Цитата:

Сообщение от goodguy (Сообщение 996590)
Значит ошибка еще появится.
Что там с анонимными функциями? Присутствуют таковые в коде?

как были, так и остались. говорю же, скрипт я не меняла еще. просто файл Auk заменила.

Добавлено через 10 минут
at.ru.nsab.player::AukPlayer/onLoaded()

Код AS3:

                private function onLoaded(loader:AukLoader):void {
                        aukSchema = loader.schema;
                        steps  = loader.steps;
                        clips = loader.clips;
                        defaultClip = loader.defaultClip;
 
                        mainTitle.setText(loader.aukTitle);
 
                        this.addChildAt(aukSchema, this.getChildIndex(clipBorder) + 1);
                        aukSchema.x = clipBorder.x+1;
                        aukSchema.y = clipBorder.y+1;
 
                        timebar.setup(loader.timebarRanges);
                        aukSchema.onAction = function(begin:Number, end:Number) { timebar.setAction(begin, end) };
 
                        menuScreen.fillList(steps);
                        clipList.fillList(clips); - это место не нравится отладчику
                }

at.ru.nsab.player::AukLoader/finished()

Код AS3:

                private function finished():void {
                        _callback(this);        - не нравится отладчику
                }

at.ru.nsab.player::AukLoader/onClipLoaded()

Код AS3:

                private function onClipLoaded() {
                        var xcl:XMLList = xmlData.clips.clip;
 
                        clipsloaded++;
                        if (clipsloaded == totalclips)
                                finished() - не нравится отладчику
                        else
                                loadSWF( xcl[clipsloaded].@file, "", swfloaded( xcl[clipsloaded].@id, xcl[clipsloaded].@title, clipsloaded ));}

at MethodInfo-62()

private function swfloaded( clipid: String, cliptitle:String, num:int ):Function {
return function(mc):void {
clips[clipid] = { id:clipid, title:cliptitle, clip:mc, index:num };
(mc.parent as Loader).unload();
onClipLoaded(); - не нравится отладчику
}
}

at MethodInfo-54()

Код AS3:

                private function loadSWF( fileName:String, appDomain:String, cb:Function ):void {
 
                        var listener = function( e:Event ):void {
                                if (appDomain != "") ApplicationDomain.currentDomain.getDefinition(appDomain);
                                var mc:* = e.target.content;       
 
                                cb(mc); -  не нравится отладчику
                        }


wvxvw 17.05.2011 01:23

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

Keyles 17.05.2011 10:27

потому что выше
Код AS3:

public var         <...>
btnClipList: SimpleButton,
<...>
clipList: ExternalClipsList<....>



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

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