![]() |
|
||||||||||
|
|||||
|
Не знаю как это правильно делается. Но, для отрисовки в draw() наклоненного объекта, я передавал в матрицу метода draw() матрицу объекта который отрисовывался, только надо учитывать, что содержимое объекта при повороте может смещаться в отрицательные координаты его пространства. Чтобы это компенсировать я помещал, временно, объект в спрайт и снимал getBounds() относительно спрайта....
Кто дружит с геометрией, наверное, сделает проще ![]() Последний раз редактировалось fish_r; 06.07.2011 в 09:41. |
|
|||||
|
мне видится это как-то так
const W:Number = 200; const H:Number = 100; // битмап (здесь из Embed) var bmp:Bitmap = new _img(); // контейнер var sprite:Sprite = new Sprite(); bmp.x = -bmp.width / 2; bmp.y = -bmp.height / 2; sprite.addChild(bmp); sprite.x = 200; sprite.y = 200; sprite.rotation = 65;//90 // прямоугольник var rect:Sprite = new Sprite(); rect.graphics.lineStyle(1, 0xff0000); rect.graphics.drawRect(0, 0, W, H); rect.x = sprite.x - rect.width / 2; rect.y = sprite.y - rect.height / 2; //фрагмент var matrix:Matrix = new Matrix(); var rectStagePoint:Point = rect.localToGlobal(new Point()); var rectBmpPoint:Point = bmp.globalToLocal(rectStagePoint); matrix.translate( -rectBmpPoint.x, -rectBmpPoint.y); matrix.rotate(Math.PI / 180 * sprite.rotation); var bdata:BitmapData = new BitmapData(W, H, true, 0x00ffffff); bdata.draw(bmp, matrix); this.addChild(sprite); this.addChild(rect); // смотрим var res:Bitmap = new Bitmap(bdata); res.smoothing = true; addChild(res).x=400; |
|
|||||
|
Ты гений! Что еще скажешь.. СПАСИБО ГУРУ!
никогда не встречал localToGlobal.. не знал о нем.. Добавлено через 5 минут Результат http://vkontakte.ru/app2398570
__________________
------------------------------- FLASH FLASH FLASH FLASH FLASH |
|
|||||
|
...то, о чём я говорил (отрисовка наклонённого объекта, или его фрагмента) :
... private function createBitmapData(obj:DisplayObject):void { _rectShift = selectPosition(obj); _dataObject = new BitmapData( obj.width, obj.height, true, 0x00 ); var matrix:Matrix = new Matrix(obj.transform.matrix.a, obj.transform.matrix.b, obj.transform.matrix.c, obj.transform.matrix.d, obj.transform.matrix.tx - obj.x - _rectShift.x, obj.transform.matrix.ty - obj.y - _rectShift.y); _dataObject.draw( obj , matrix, obj.transform.colorTransform ); _dObject = new Bitmap(_dataObject); } private function selectPosition(obj:DisplayObject):Rectangle { var sp:Sprite = new Sprite(); var rect:Rectangle; var childIndex:uint; if ( obj.parent !== null) { childIndex = obj.parent.getChildIndex(obj); obj.parent.addChildAt(sp, childIndex); sp.x = obj.x; sp.y = obj.y; sp.addChild(obj); rect = obj.getBounds(sp); sp.parent.addChildAt(obj, childIndex); obj.x = sp.x; obj.y = sp.y; obj.parent.removeChild(sp); sp = null; } else { sp.addChild(obj); rect = obj.getBounds(sp); rect.x -= obj.x; rect.y -= obj.y; sp.removeChild(obj); sp = null; } return rect; } Последний раз редактировалось fish_r; 06.07.2011 в 18:51. |
|
|||||
|
Вы про приложение? Эту графику загружают пользователи сами. Так же как и вконтакте в целом))) весь ми нарушает...
кстати а как вырезать картинку в фроме микимауса? Только квадратиком можно? Silin знаете?
__________________
------------------------------- FLASH FLASH FLASH FLASH FLASH |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:53. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|