Как заставить as3 AnimatorFactory воспроизводить более одного кадра? - PullRequest
0 голосов
/ 11 декабря 2011

Я пытаюсь анимировать на временной шкале, а затем «скопировать движение как as3», чтобы я мог повторно использовать анимацию. Проблема в том, что когда я беру AS и помещаю его в класс, он хочет запустить только 1 кадр и не продолжает анимацию. Я мог бы использовать некоторую помощь в выяснении, почему при этом запускается только один кадр вместо полного 17.

РЕДАКТИРОВАТЬ: Итак, я понял, как это сделать. Для тех, кто не может этого сделать, я публикую информацию о том, как заставить это работать.

package 
{
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
import flash.filters.*;
import flash.geom.Point;

public class CustomClass extends MovieClip
{
            // I moved vars here 
    private var __motion_tocInside_328:MotionBase;
    private var __animFactory_tocInside_328:AnimatorFactory;

    public function CornerNavBtn()
    {
        // constructor code
        clickArea.addEventListener(MouseEvent.CLICK, activateChosen);   
    }

    public function animateOutLargeCorner():void
    {
                    // I remove the if statement so I can rerun the animation.
        __motion_tocInside_328 = new Motion();
        __motion_tocInside_328.duration = 17;

        // Call overrideTargetTransform to prevent the scale, skew,
        // or rotation values from being made relative to the target
        // object's original transform.
        // __motion_tocInside_328.overrideTargetTransform();

        // The following calls to addPropertyArray assign data values
        // for each tweened property. There is one value in the Array
        // for every frame in the tween, or fewer if the last value
        // remains the same for the rest of the frames.
        __motion_tocInside_328.addPropertyArray("x", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
        __motion_tocInside_328.addPropertyArray("y", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
        __motion_tocInside_328.addPropertyArray("scaleX", [1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000]);
        __motion_tocInside_328.addPropertyArray("scaleY", [1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000]);
        __motion_tocInside_328.addPropertyArray("skewX", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
        __motion_tocInside_328.addPropertyArray("skewY", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
        __motion_tocInside_328.addPropertyArray("rotationConcat", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
        __motion_tocInside_328.addPropertyArray("blendMode", ["normal"]);
        __motion_tocInside_328.addPropertyArray("cacheAsBitmap", [false]);
        __motion_tocInside_328.addPropertyArray("alphaMultiplier", [1.000000,0.878937,0.765625,0.660187,0.562562,0.472687,0.390625,0.316438,0.250000,0.191437,0.140625,0.097687,0.062500,0.035188,0.015625,0.003937,0.000000]);

        // This call to initFilters supplies the Motion with an Array;
        // of the fully-qualified class names of the filters in the
        // target's DisplayObject.filters list, in the same order and
        // indices.
        __motion_tocInside_328.initFilters(["flash.filters.GlowFilter"], [0], -1, -1);

        // The following calls to addFilterPropertyArray assign data;
        // values for each tweened filter's properties.
        __motion_tocInside_328.addFilterPropertyArray(0, "blurX", [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "blurY", [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "strength", [0.00,1.58,1.38,1.19,1.01,0.85,0.70,0.57,0.45,0.34,0.25,0.18,0.11,0.06,0.03,0.01,0.00], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "knockout", [false], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "inner", [false], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "quality", [BitmapFilterQuality.MEDIUM], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "alpha", [1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00], -1, -1);
        __motion_tocInside_328.addFilterPropertyArray(0, "color", [0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff], -1, -1);

        // Create an AnimatorFactory instance, which will manage;
        // targets for its corresponding Motion.
                    // this is where I changed it, I put the var declaration up top but kept the assigning here.
        __animFactory_tocInside_328 = new AnimatorFactory(__motion_tocInside_328);
        __animFactory_tocInside_328.transformationPoint = new Point(0.500000,0.500000);

        // Call the addTarget function on the AnimatorFactory
        // instance to target a DisplayObject with this Motion.
        // The second parameter is the number of times the animation
        // will play - the default value of 0 means it will loop.

        __animFactory_tocInside_328.addTarget(<instance name>, 1);
    }

}

}

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

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

package 
{
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import fl.motion.Motion;
import flash.filters.*;
import flash.geom.Point;

public class CustomClass extends MovieClip
{
        // I moved vars here 
private var __motion_tocInside_328:MotionBase;
private var __animFactory_tocInside_328:AnimatorFactory;

public function CornerNavBtn()
{
    // constructor code
    clickArea.addEventListener(MouseEvent.CLICK, activateChosen);   
}

public function animateOutLargeCorner():void
{
                // I remove the if statement so I can rerun the animation.
    __motion_tocInside_328 = new Motion();
    __motion_tocInside_328.duration = 17;

    // Call overrideTargetTransform to prevent the scale, skew,
    // or rotation values from being made relative to the target
    // object's original transform.
    // __motion_tocInside_328.overrideTargetTransform();

    // The following calls to addPropertyArray assign data values
    // for each tweened property. There is one value in the Array
    // for every frame in the tween, or fewer if the last value
    // remains the same for the rest of the frames.
    __motion_tocInside_328.addPropertyArray("x", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
    __motion_tocInside_328.addPropertyArray("y", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
    __motion_tocInside_328.addPropertyArray("scaleX", [1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000]);
    __motion_tocInside_328.addPropertyArray("scaleY", [1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000,1.000000]);
    __motion_tocInside_328.addPropertyArray("skewX", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
    __motion_tocInside_328.addPropertyArray("skewY", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
    __motion_tocInside_328.addPropertyArray("rotationConcat", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
    __motion_tocInside_328.addPropertyArray("blendMode", ["normal"]);
    __motion_tocInside_328.addPropertyArray("cacheAsBitmap", [false]);
    __motion_tocInside_328.addPropertyArray("alphaMultiplier", [1.000000,0.878937,0.765625,0.660187,0.562562,0.472687,0.390625,0.316438,0.250000,0.191437,0.140625,0.097687,0.062500,0.035188,0.015625,0.003937,0.000000]);

    // This call to initFilters supplies the Motion with an Array;
    // of the fully-qualified class names of the filters in the
    // target's DisplayObject.filters list, in the same order and
    // indices.
    __motion_tocInside_328.initFilters(["flash.filters.GlowFilter"], [0], -1, -1);

    // The following calls to addFilterPropertyArray assign data;
    // values for each tweened filter's properties.
    __motion_tocInside_328.addFilterPropertyArray(0, "blurX", [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "blurY", [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "strength", [0.00,1.58,1.38,1.19,1.01,0.85,0.70,0.57,0.45,0.34,0.25,0.18,0.11,0.06,0.03,0.01,0.00], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "knockout", [false], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "inner", [false], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "quality", [BitmapFilterQuality.MEDIUM], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "alpha", [1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00], -1, -1);
    __motion_tocInside_328.addFilterPropertyArray(0, "color", [0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff], -1, -1);

    // Create an AnimatorFactory instance, which will manage;
    // targets for its corresponding Motion.
                // this is where I changed it, I put the var declaration up top but kept the assigning here.
    __animFactory_tocInside_328 = new AnimatorFactory(__motion_tocInside_328);
    __animFactory_tocInside_328.transformationPoint = new Point(0.500000,0.500000);

    // Call the addTarget function on the AnimatorFactory
    // instance to target a DisplayObject with this Motion.
    // The second parameter is the number of times the animation
    // will play - the default value of 0 means it will loop.

    __animFactory_tocInside_328.addTarget(<instance name>, 1);
}

}

}
0 голосов
/ 11 декабря 2011

Измените свою последнюю строку на это:

    __animFactory_tocInside_328.addTarget(cornerLarge, 0);

Теперь это повторяется.У вас было значение «1», что означает, что он будет играть только один раз.Второй параметр по умолчанию равен 0, что повторяется.

Ознакомьтесь с документацией по этому методу

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