Порядок завершения загрузки влияет на SWF-код в Air 1.5 только на ПК - PullRequest
0 голосов
/ 01 сентября 2010

Очень странный.

Наше приложение air загружает несколько SWF-файлов, которые вместе составляют урок.

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

На Mac весь код работает, включая глубоко вложенный код внутри MC внутри MC, постоянно, независимо от порядка, в котором загрузка swfs завершаетсяи inits.

На ПК код верхнего уровня (каждой временной шкалы swf) всегда работает, но глубоко вложенный код выполняется только в зависимости от порядка, в котором загрузка swfs завершается и начинается.

Ссылаясь на swfs как A, B, C и D, если порядок инициализации равен A, B, C, D, то код в swf A (только для глубоко вложенного кода) не работает - даже stop () не работает.Это происходит только на ПК.

Если swfs инициируют в порядке B, A, C, D или даже C, B, A, D, тогда все так, как должно быть.(Идентификация этого шаблона была довольно длительной!)

Иногда у более чем одного загруженного SWF возникают проблемы - мне не удалось обнаружить очевидный шаблон за этим.

Все 4 SWF работают нормально.Все 4 SWF работают нормально в версии для Mac.Все 4 swfs должны загружаться в свой собственный домен приложения, поскольку Air больше ничего не разрешает, и домен приложения также каждый раз указывается как новый домен.Нет обнаруживаемых проблем с доменом - не выдается никаких ошибок.

Очевидно, что что-то не работает.Я не верю, что эта проблема в моем коде, так как приложение отлично работает на Mac и не работает в зависимости от порядка завершения загрузки в версии для ПК, а только глубоко вложенный код обрабатывается.

элементы, которые распределяются (MC с неработающим кодом), не экспортируются в библиотеку как символы.

Кто-нибудь сталкивался с этим или с чем-то подобным?

С некоторыми вариантами, с которыми я буду экспериментировать:

1) Экспорт символов для MC с кодом в библиотеке, чтобы они загружались в frame1 (до запуска события init), даже если это им не нужно.

2) Notуказав домен приложения вручную, но оставив его по умолчанию (с тем же значением)

Я приведу здесь свои выводы.Может ли кто-нибудь придумать что-нибудь еще, что стоит изменить, чтобы увидеть, есть ли влияние?

1 Ответ

0 голосов
/ 07 сентября 2010

Я думаю, что нашел источник проблемы.

Порядок загрузки и неработающий код мувиклипа являются симптомами одной и той же проблемы: swf не загружен в память правильно.

Сломанные swfs обычно самые большие, и когда они INIT опережают намного меньшие swfs, это, вероятно, признак неполной загрузки, следовательно, корреляция с кодом уровня 1 не работает.(Уровень 0 - это временная шкала, уровень 1 - это код внутри MC на этой временной шкале и т. Д.).

После сотен тестов я обнаружил, что эта проблема возникает примерно в 50% случаев в Parallels-XP виртуальный ПК, а иногда и на компьютере с Windows 7, который был понижен до версии Windows XP (и не работает во многих других областях).Пока что это не происходит при установке Mac book pro bootcamp XP или стабильной установки Vista.

Я полагаю, что это подлинный сбой потока в приложении Air, скорее всего, какая-то проблема с памятью?

Мне не удалось найти способ предотвратить возникновение проблемы.Вместо этого у меня есть обходной путь:

Каждый swf содержит MC на временной шкале в кадре 1 со строкой кода с единственной целью уведомления приложения (через мост песочницы), что код уровня 1 былзагружен правильно.Если это уведомление не получено для конкретного SWF-файла к моменту запуска события «ЗАВЕРШЕНО», считается, что SWF-файл загружен неправильно, выгружен из памяти и загружен снова.

Этот процесс повторяется до тех пор, поканагрузка правильная.Файлы являются локальными, поэтому задержка для пользователя минимальна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...