![]() |
Непонятные вещи с загрузкой изображений и клипов
Всем доброго дня!
Имеется Game.swf, которая лежит в контакте. Она подгружает изображения и другие swf нашего сервера следующим образом: Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Теперь покажу как я делаю копии (в _displayObject передаём то, что нам выдал Game.resourceManager.getData(ID,GROUP)): Код AS3:
Если таким образом обрабатывать изображения, то иногда получается, что некоторые копии не создаются. Приведу пример. В самом начале запуска игры я получаю карту и определяю список всех объектов на ней и список для загрузки в менеджер ресурсов. То есть перед отрисовкой карты я уже определяю все объекты на ней и через менеджер ресурсов загружаю их изображения. И когда карта начинает выводится, она уже просто создаёт копию экранного объекта из менеджера ресурсов. Так работает всё нормально. Но вот представим что мы подошли к какому-то NPC поговорить и он нам даёт задание собрать 10 досок. Но к этому моменту на карте их не было и они теперь должны появиться. В менеджере ресурсов их нет. При создании первой доски, она даст менеджеру возможность загрузить туда изображение доски и затем уже все эти 10 досок должны будут сделать из него копию. А на деле получается так, что когда все 10 досок отображаются, а когда только первая. Причём такое происходит только если запускаешь из контакта (при локальном тестировании проблем нет). Теперь что касается клипов. Предположим что 10 этих досок выполнены не как изображение, а как swf. Сейчас речь идёт только про запуск из под контакта (в локалке все отлично). Игра рушится с таким вот сообщением: Цитата:
Код AS3:
Код AS3:
Цитата:
В общем вот такая ерунда происходит с загрузкой. Почему так происходит? |
Цитата:
Что касается данного поста и самой ошибки – очень много воды и мало конкретики, более того, текст ошибки указывает причину вполне ясно, а также функцию в которой эта ошибка возникла, но вы почему-то ее листинг не привели. Приведите листинг след. функций – at d.game.screen.screenGUI::GUIArrow(), at d.game.manager::ArrowManager/addObject(), at d.game.manager::ArrowManager/setArrows() и тогда возможно что-то станет понятно. |
Acrossfy
Цитата:
Код AS3:
Код AS3:
Вот функция d.game.manager::ArrowManager/addObject(): Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
Всё равно попадём в эту функцию: Код AS3:
|
Ошибка
>RangeError: Error #1125: Индекс 15 выходит за границы диапазона 0. Не может вылетать на строчке Код AS3:
|
-De-
Цитата:
|
Скорее всего потому что вы так написали. Нет никаких проблем написать код так, чтоб оно не вылетало при закоментированном addChild(), но вылетало если он написан.
Смотрите, у вас есть там 3 строки, где возможен вылет по неправильному индексу: Код AS3:
Код AS3:
Код AS3:
|
-De-
Цитата:
|
Вполне возможно, что виноваты всё-таки вы, а не адобы, контакт или несовершенство мира. Чтобы трейсить вконтакте можете воспользоваться логгером от инфокоры вон =)
|
-De-
Можете подсказать на что мне сейчас в первую очередь обратить внимание, что проверить? А я проверю и отпишусь. |
Понять, что же ошибка означает. Она значит "попытка получить доступ по индексу 15 в векторе, длина которого 0". В функции GUIArrow.
Вот пишете перед строчками, где есть там доступ по индексу Код AS3:
Может можно подцепиться в дебаггере к флешке в контакте, но я не подскажу как %) |
-De-
У меня есть окно отладки в игре. Решил натыкать по коду туда текста. В общем вот получается ошибка Цитата:
http://ipic.su/img/img5/fs/00.1336468761.png То есть если посмотреть по коду, то циклы удачно обрабатываются, так как он определяет что объект относится к списку динамических объектов игры, далее он определяет что он является MovieClip'ом и программа рушится при добавлении его в контейнер. Дальше у меня ещё были функции для добавления в отладку, но их нет, так как при добавлении в контейнер игра рушится. А в локальном исполнении всё отлично. Ну что тут может быть? Добавлено через 22 минуты Что это за ошибка такая? Цитата:
|
Цитата:
|
Выявил ошибку, но причина не понятна. Всё дело было в самом SWF-файле. Стоило мне его заменить на другой, стало всё нормально. Как такое может быть?
Ещё в игре на карте есть костёр в виде SWF. Я решил заменить костёр на ту SWF с эффектом. Так вот, костёр грузился при запуске игры, а теперь при запуске игры грузится тот эффект. Не поверите, загрузка не просто рушится, там запросы начинают отправляться по кругу, хотя в коде нет такой возможности. Как какая-то SWF, откомпилированная как ActionScript 3.0 и которая не содержит ни строчки кода может всё рушить? Опять же, это только касается запуска из контакта, запуск локально работает нормально. |
| Часовой пояс GMT +4, время: 08:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.