|
|
|||||
Регистрация: Feb 2012
Сообщений: 18
|
Копирование объекта класса Sprite
Собственно сабж. Есть объект класса Sprite. Нужно сделать его копию. Перепробовал кучу разных вариантов - ни чего не помогло.
|
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Посмотрите поиском по форуму. Этот вопрос обсуждали много раз.
Вот пример темы. Вот конкретный рецепт. Еще можно скопировать как массив байт
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) Последний раз редактировалось carrotoff; 23.03.2012 в 17:38. |
|
|||||
Регистрация: Feb 2012
Сообщений: 18
|
Не могли бы дать линк? А то я страниц 15 на выдаче поиска пролистал - нашел пару вариантов (не конкретно для Sprit'ов), но они не сработали у меня.
|
|
|||||
Вот тут пример (для DO РАБОТАТЬ НЕ БУДЕТ!). Поэтому лучше написать свой метод clone вручную. Если Ваш спрайт статичен, то можно его в BitmapData отрисовать. А вообще не помешало бы чуть больше конкретики.
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 23.03.2012 в 18:26. |
|
|||||
Регистрация: Feb 2012
Сообщений: 18
|
Цитата:
function clone(source:Object):* { var copier:ByteArray = new ByteArray(); copier.writeObject(source); copier.position = 0; return(copier.readObject()); } //spriteA - существует, не нулевой и нормально отрисовывается var spriteB:Sprite = new Sprite(); spriteB = clone(spriteA) as Sprite; Можно поподробнее? |
|
|||||
public static function getBitmapDataOf(value: DisplayObject):BitmapData { if (value && value.width > 0 && value.height > 0) { var bitmapData: BitmapData = new BitmapData(value.width, value.height, true, 0x00000000); var m:Matrix = new Matrix(); m.translate(-value.x, -value.y); m.scale(value.scaleX, value.scaleY); bitmapData.draw(value, m); return bitmapData; } else { return null; } }
__________________
http://www.chessmax.ru |
|
|||||
Регистрация: Feb 2012
Сообщений: 18
|
Цитата:
Цитата:
Добавлено через 36 минут Победа! Немного модифицировал ваш код: public static function getBitmapDataOf(value: DisplayObject):BitmapData { if (value && value.width > 0 && value.height > 0) { var bitmap: BitmapData = new BitmapData(1600, 1200, true, 0x00CCCCCC); var m:Matrix = new Matrix(); m.translate(800, 600); m.scale(value.scaleX, value.scaleY); bitmap.draw(value, m); var rect:Rectangle = bitmap.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, false); var bitmapCut:BitmapData = new BitmapData(rect.width, rect.height, true, 0x00CCCCCC); bitmapCut.copyPixels(bitmap, rect, new Point(0,0)); bitmap.dispose(); return bitmapCut; } else { return null; } } |
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
|
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 18:10. |
|
« Предыдущая тема | Следующая тема » |
|
|