![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
- Создаю черный круг (BallVis)
- Увеличиваю/масштабирую его размер по ширине, через свойство width/scaleX. - Создаю объект BitmapData и ф-ей draw() прорисовываю BallVis используя для расположения матрицу. В итоге BallVis появляется на экране, но не увеличенный по ширине? Вероятно, в матрицу нужно добавить как-то параметры width/scaleX… import flash.display.BitmapData; var objMatrix:Matrix = new Matrix(); var ball:BallVis = new BallVis(); //this.addChild(ball); ball.x = 320; ball.y = 200; var deltaSize:Number = 100; ball.width+= deltaSize; //ball.scaleX = 2; var objectsMap:BitmapData = new BitmapData(640, 480, true, 0x00000000); var objectBitmap:Bitmap = new Bitmap(objectsMap); this.addChild(objectBitmap); objMatrix.tx= ball.x; objMatrix.ty= ball.y; waterMatrix.scale(ball.scaleX); objectsMap.draw(ball, objMatrix); |
|
|||||
import flash.display.BitmapData; var ball:BallVis = new BallVis(); ball.x = 320; ball.y = 200; var deltaSize:Number = 100; ball.width+= deltaSize; var objectsMap:BitmapData = new BitmapData(640, 480, true, 0x00000000); var objectBitmap:Bitmap = new Bitmap(objectsMap); this.addChild(objectBitmap); objectsMap.draw(ball, ball.transform.matrix); |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Дело в том, в реальной программе visual.x/y= 0, получается что мне нужно взять масштабирование у матрицы объекта, а вот положение из физического тела.
Делаю так (body.Item.visual - это условно ball): Код: item.visual.transform.matrix.tx = item.body.position.x; item.visual.transform.matrix.ty = item.body.position.y; //Но, почему то после присваивания положения item.visual.transform.matrix.tx равен нулю (хотя в item.body.position.x = 400) ? objectsMap.draw(item.visual, item.visual.transform.matrix); Можно, конечно обновить x/y визуального объекта, но в моем случае у меня все будет притормаживать, в сцене больше 200 физ. объектов, и все работает норм, если не трогать item.visual.x/y, а сразу прорисовать в битмапу с помощью матрицы. Последний раз редактировалось Alexmody; 05.01.2013 в 13:45. |
|
|||||
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.geom.Matrix; [SWF(width="640",height="480",frameRate="30")] /** * @author SlavaRa */ public class Main extends Sprite { public function Main():void { super(); if (stage) { onAddedToStage(); } else { super.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } } private function onAddedToStage(e:Event = null):void { super.removeEventListener(Event.ADDED_TO_STAGE, init); // entry point super.stage.scaleMode = StageScaleMode.NO_SCALE; super.stage.align = StageAlign.TOP_LEFT; const shape:Shape = new Shape(); shape.x = 0; shape.y = 0; shape.graphics.beginFill(0x008080); shape.graphics.drawCircle(50, 50, 50); shape.graphics.endFill(); shape.x = 100; shape.y = 100; shape.scaleX = 2; const bitmapData:BitmapData = new BitmapData(640, 480, true, 0x000000); const bitmap:Bitmap = new Bitmap(bitmapData); bitmapData.draw(shape, new Matrix(shape.scaleX, 0, 0, shape.scaleY, shape.x, shape.y)); super.addChild(bitmap); } } }
__________________
местонахождение |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Спасибо всем, примерно так и сделал:
|
|
|||||
|
небольшой оффтоп.
каждый раз создает новую матрицу, это конечно может быть и не критично, но я бы обошелся без этого. ну и вместо вместо a=.d= существует метод scale, а вместо tx=,ty= translate, для изменения всех параметров setTo
__________________
местонахождение |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
>>каждый раз создает новую матрицу, это конечно может быть и не критично, но я бы обошелся без этого.
Да, спасибо я уже в объекте создал переменные хранящие скейл матрицы a/d, чтобы не обращаться к геттеру. |
|
|||||
|
[+1 22.04.13]
[+1 06.03.13] Регистрация: Apr 2012
Сообщений: 239
|
waterMatrix - это что?
Последний раз редактировалось gagaga; 06.01.2013 в 00:20. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:53. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|