Объединение спрайтов в AS3? - PullRequest
0 голосов
/ 13 ноября 2010

Итак, создали Спрайт, к которому я добавляю другие Спрайты, которые являются игровыми фишками.Каждая плитка размером 60 х 60 пикселей.В результате у меня есть Спрайт с примерно 200 детьми (те плитки).Когда я пытаюсь запуститьDrag (), спрайт контейнера запаздывает при перемещении, это очень заметно ..

Есть ли способ присоединиться к спрайтам плиток, чтобы у контейнера был только 1 дочерний спрайт вместо 200?Поскольку он сильно отстает, вероятно, потому что ему нужно переместить (изменить x и y) все эти 200 плиток. Я прав?

В этом случае я не могу использовать свойство cacheAsBitmap, потому что пользователь может изменять масштабувеличить или уменьшить карту ..

Ответы [ 3 ]

3 голосов
/ 13 ноября 2010

Глицерин и Aurel действительно касаются сути реальных решений. Однако я хотел бы добавить.

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

http://www.adobe.com/devnet/flash/articles/blitting_mc.html

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

1 голос
/ 13 ноября 2010

У меня раньше была такая же проблема.Можно ли «объединить» их вместе - в некотором смысле.

Когда вы добавляете свои 200 спрайтов на экран - я предполагаю, что вы поместили их всех в другой родительский спрайт.

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

Одно большое изображение, которое можно перемещать и масштабировать, и тому подобное не стоит беспокоиться.Если вам нужен код - спросите.Это трудоемкий код, поэтому сначала скажи мне, а я напишу: P

0 голосов
/ 13 ноября 2010

Хм, присоединиться к ним на самом деле было бы довольно сложно ... Вам нужно было бы получить графику, код и все такое и поместить это в родительский ... ... 1001 *

Я не думаю, что это проблема - вы должны сделать что-то еще ... В этом случае я думаю, что под "плитками" вы подразумеваете, что родитель будет картой тайлов, правильно? Таким образом, у вас, вероятно, есть двумерный массив (массив массивов) с типами листов - вместо анализа этого массива при инициализации, создания МНОЖЕСТВА спрайтов, попробуйте повторно проанализировать его в каждом кадре (это быстрее), но добавить только Спрайты, которые можно увидеть. То есть - их позиция X (после добавления зума и камеры X) больше -sprite.width , где высота также масштабируется масштабированием, и меньше, чем stage.width + sprite .width (опять же, ширина после увеличения). То же самое касается Y, только с атрибутами высоты.

...