Можно ли вращать динамически добавленную линию с помощью Flex? - PullRequest
2 голосов
/ 27 мая 2009

Я добавляю линию на холст, используя canvas.moveTo(0, 0); canvas.lineTo(100, 100);, но затем я хочу, чтобы пользователь перемещал мышь, чтобы установить поворот линии. Google предлагает использовать свойство rotation, но у меня нет ссылки на объект линии. Могу ли я получить ссылку на линию или мне нужно повернуть весь холст? Возможно ли что-нибудь из этого?

Ответы [ 3 ]

2 голосов
/ 27 мая 2009

Обычно вы манипулируете поверхностью, на которой рисуется графика - обычно это экземпляр Sprite, так как он очень легкий и хорошо подходит для этой задачи. Если вместо этого вы создали новый Sprite, использовали его объект Graphics для рисования линий, фигур и т. Д., Добавили Sprite к UIComponent - вы не можете добавить Sprite к Canvas напрямую, не обернув его сначала в экземпляр UIComponent - - затем добавил, что UIComponent к вашему холсту, вы можете управлять спрайтом непосредственно с помощью вращения, движения и т. д.

Как правило, это делается путем переопределения createChildren () (если объект предназначен для жизни в течение экземпляра компонента) или с использованием какого-либо другого метода, в зависимости от ваших потребностей. Например:

override protected function createChildren():void
{
    super.createChildren();

    // Create a new Sprite and draw onto it
    var s:Sprite = new Sprite();
    s.graphics.beginFill(0, 1);
    s.graphics.drawRect(0, 0, 20, 20);
    s.graphics.endFill();

    // Wrap the Sprite in a UIComponent
    var c:UIComponent = new UIComponent();
    c.addChild(s);

    // Rotate the Sprite (or UIComponent, whichever your preference)
    s.rotation = 45;

    // Add the containing component to the display list
    this.addChild(c);
}

Надеюсь, это поможет!

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

Что такое canvas (фактический Canvas не имеет метода lineTo () или moveTo ())?

Похоже, что вы, вероятно, манипулируете графическим объектом Canvas. В этом случае вам лучше сделать следующее

private var sp : Sprite;
//canvas is whatever Canvas you wish to add the sprite to
private function addLine(canvas : Canvas) : void {
sp = new Sprite();
/* Do the drawing of the sprite here,
   such as sp.graphics.moveTo or sp.graphics.lineTo */
sp.rotation = 45;
canvas.rawChildren.addChild(sp);
}

Тогда всякий раз, когда вы захотите изменить вращение, просто обновите sp.rotation (который теперь находится на вашем холсте)

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

Хммм ... Добавьте спрайт на холст, затем нарисуйте линию на графическом объекте спрайта. Затем вы можете вращать спрайт и т. Д. Вы можете можете вращать холст, если хотите, но это лишняя нагрузка на создание холста, если вы собираетесь обрабатывать его как спрайт (обратите внимание, что Canvas расширяет спрайт где-то вниз по цепочке).

Взгляните на этот пример из ASDocs: Вращающиеся вещи

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