Как повернуть компонент MXML вокруг своего центра, как колесо, с уважением к мыши?

Итак, у меня есть эта панель или любой другой компонент mxml. Я хочу каким-то образом вращать его, как колесо автомобиля, которым вы управляете... вот так Гоночный руль... например, когда кнопка мыши нажата, он захватывает точку компонента. .. когда вы перемещаете компонент мыши, он вращается (а не перемещается) в соответствии с новым положением мыши... Как повернуть компонент MXML вокруг своего центра, как колесо, с уважением к мыши?

Хорошо, не стесняйтесь редактировать этот вопрос, потому что я знаю, что сформулировал его плохо...


person Community    schedule 16.06.2010    source источник


Ответы (2)


Добавьте их в служебный класс, если вы не хотите добавлять зависимость к fl.motion.*

/**
     * Rotates a matrix about a point defined inside the matrix's transformation space.
     * This can be used to rotate a movie clip around a transformation point inside itself. 
     *
     * @param m A Matrix instance.
     *
     * @param x The x coordinate of the point.
     *
     * @param y The y coordinate of the point.
     *
     * @param angleDegrees The angle of rotation in degrees.
     * @playerversion Flash 9.0.28.0
     * @langversion 3.0
     * @keyword Matrix, Copy Motion as ActionScript    
     * @see flash.geom.Matrix         
     */
    public static function rotateAroundInternalPoint(m:Matrix, x:Number, y:Number, angleDegrees:Number):void
    {
        var point:Point = new Point(x, y);
        point = m.transformPoint(point);
        m.tx -= point.x;
        m.ty -= point.y;
        m.rotate(angleDegrees*(Math.PI/180));
        m.tx += point.x;
        m.ty += point.y;
    }



    /**
     * Rotates a matrix about a point defined outside the matrix's transformation space.
     * This can be used to rotate a movie clip around a transformation point in its parent. 
     *
     * @param m A Matrix instance.
     *
     * @param x The x coordinate of the point.
     *
     * @param y The y coordinate of the point.
     *
     * @param angleDegrees The angle of rotation in degrees.
     * @playerversion Flash 9.0.28.0
     * @langversion 3.0
     * @keyword Matrix, Copy Motion as ActionScript    
     * @see flash.geom.Matrix       
     */
    public static function rotateAroundExternalPoint(m:Matrix, x:Number, y:Number, angleDegrees:Number):void
    {
        m.tx -= x;
        m.ty -= y;
        m.rotate(angleDegrees*(Math.PI/180));
        m.tx += x;
        m.ty += y;
    }

Это функция MatrixTransformer rotateAroundInternalPoint() и rotateAroundExternalPoint()

Это было бы для 2d. Для 3D см. transformAround .

Не забудьте проверить, правильно ли обновлены родственные макеты.

ХТН

person Community    schedule 03.07.2010

Я считаю, что вы можете вращать компонент, используя свойства rotateX, rotateY и rotateZ:

http://docs.huihoo.com/flex/4/mx/core/UIComponent.html#rotationX

Просто сделайте это в ответ на щелчок мыши.

person Community    schedule 16.06.2010
comment
но как изменить положение точки реестра (я использую Spark framework) - person Rella; 16.06.2010
comment
Вы имеете в виду, что хотите изменить центральную точку, вокруг которой вращается элемент? Я не знаю, возможно ли это; вам придется поэкспериментировать, чтобы узнать. ЕСЛИ ничего не помогает, вы можете использовать такие фреймворки, как PaperVision3D или Away3D. - person JeffryHouser; 16.06.2010