![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет!
Есть проблема с поворотом объекта относительно центра при использовании 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, время: 03:52. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| bitmapdata , draw , Registration Point |
|
|