|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Вращение относительно центра с draw()
Привет!
Есть проблема с поворотом объекта относительно центра при использовании draw() c BitmapData. В первом случае спрайт в библиотеке имеет регистрационную точку 0,0; Рисуется впринципе нормально, но на сцену переносится в точку x,y(создается при клике) без какого либо смещения Если присвоить смещение bitmap относительно этой точки все станет как надо, но при повороте такая конструкция повернется относительно опять таки своей регистрационной точки а не точки назначения: Если сместить оригинальный спрайт относительно точки регистрации в центр то поворот и расположение(без принудительного смещения) заработают как надо, но тогда draw будет рисовать только часть картинки. Смещение по матрице внутри BitmapData ничего не дает. Вот код: var tmp:RockSpr = new RockSpr(); var bd:BitmapData = new BitmapData(tmp.width, tmp.height); var bm:Bitmap = new Bitmap(bd); bm.x = e.stageX; bm.y = e.stageY; bm.rotation = 45; addChild(bm); Спасибо!
__________________
uglan |
|
|||||
Для того, чтобы отрисовать спрайт с поворотом, нужна битмапдата, большая по размеру, чем спрайт. Но я вижу, что ты поворачиваешь битмап и это у него точка регистрации находится в координатах 0, 0. Самый простой вариант - вложить эту битмапу в какой-нибудь контейнер со смещением и поворачивать этот контейнер. Правильный вариант - заюзать матрицу, что-то типа такого:
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
Цитата:
import flash.display.SpreadMethod; import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.MouseEvent; var spr:Sprite = new Sprite(); var tmp:RockSpr = new RockSpr(); var bd:BitmapData = new BitmapData(tmp.width, tmp.height); var bm:Bitmap = new Bitmap(bd); bd.draw(tmp); bm.x = -bm.width*0.5; bm.y = -bm.height*0.5; spr.x = 100; spr.y = 100; spr.addChild(bm); addChild(spr); function rotatiOnByClick(e:MouseEvent){ spr.rotation += 10; } spr.addEventListener(MouseEvent.CLICK,rotatiOnByClick); |
|
|||||
Цитата:
Она уже будет содержать необходимые настройки. Если спрайт был повернут, то и ротейт матрицы будет соответствующим |
|
|||||
Цитата:
можно, положить картинку в спрайт, и все будет проще |
|
|||||
Цитата:
Добавлено через 6 минут Цитата:
__________________
uglan |
|
|||||
[+1 22.04.13]
[+1 06.03.13] Регистрация: Apr 2012
Сообщений: 239
|
самый правильный способ - использование матрицы преобразования. Все остальные способы более медленные... правильно, что не используете контейнеры, они только тормозят
|
Часовой пояс GMT +4, время: 16:10. |
|
« Предыдущая тема | Следующая тема » |
Теги |
bitmapdata , draw , Registration Point |
|
|