![]() |
Непонятные вещи с загрузкой изображений и клипов
Всем доброго дня!
Имеется 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:
Может можно подцепиться в дебаггере к флешке в контакте, но я не подскажу как %) |
| Часовой пояс GMT +4, время: 15:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.