Повернуть нарисованный прямоугольник в flex - PullRequest
0 голосов
/ 18 мая 2010

я написал следующий код для рисования прямоугольника вращения

var s:UIComponent = new UIComponent();    
s.graphics.lineStyle(1, 0x0000FF);
s.graphics.drawRect(50, 50, 200, 200);
s.rotation = 30;
template.addChild(s);

где template - холст. Его вращение красиво, но проблема в том, что позиция не в правильном месте. то есть он не находится в (50,50) после поворота. Как я могу решить эту проблему?

Спасибо заранее.

1 Ответ

1 голос
/ 27 мая 2010

То, что вы видите, это вращение по умолчанию вокруг начала координат в Flex (в вашем случае координаты X, Y равны 50,50). Я предполагаю, что вы хотите повернуть вокруг центра (как я недавно это делал) , Есть способ сделать это при помощи жюри, регулируя исходную точку в зависимости от угла поворота. Тогда есть эффект поворота:

import mx.effects.Rotate;

var s:UIComponent = new UIComponent();    
var rotator:Rotate = new Rotate(s);

s.graphics.lineStyle(1, 0x0000FF);
s.graphics.drawRect(50, 50, 200, 200);

rotator.angleFrom = 0;
rotator.angleTo = 30;
rotator.originX = s.width/2;
rotator.originY = s.height/2;
template.addChild(s);
rotator.play();

Теперь я заметил некоторые проблемы с этим, которые требовали от меня снова установить ширину и высоту повернутого объекта после метода play (), но кроме этого я получаю идеальную ситуацию вращения.

Еще одним недостатком является то, что это эффект, который означает, что он визуально вращает объект. Я отправлю ответ, когда исправлю это, если вы не хотите, чтобы объект вращался.

Продолжительность ответа просто добавив rotator.duration = 1 перед игрой, это происходит так быстро, что пользователь не увидит его. 1 - 1 миллисекунда Я попытался 0, но это не привело к повороту. Очевидно, что если вы хотите увидеть эффект в действии, вы можете увеличить этот промежуток времени, используя любое значение в миллисекундах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...