Движение анимации не работает внутри функции в ActionScript 3 и Flash CS5 - PullRequest
0 голосов
/ 11 февраля 2011

У меня проблема с включением анимации движения в функцию.мой код отлично работает в CS4 (но, к сожалению, Flash CS4 все время зависает на моем ПК. Кто бы ни был в CS5, движение отлично работает вне функции, но когда я помещаю его в функцию, оно ведет себя странно? Я должен упомянуть, что я не профессионалв мгновение ока и извините за мой плохой английский.

у меня есть прямоугольник, преобразованный в символ, который я назвал его s1, вот код без функции:

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import flash.filters.*;
import flash.geom.Point;
import fl.motion.Motion;
import flash.display.DisplayObject;

var __motion_UIL1:MotionBase;
if(__motion_UIL1 == null) 
{
    import fl.motion.Motion;
    __motion_UIL1 = new Motion();
    __motion_UIL1.duration = 15;
    //__motion_UIL1.overrideTargetTransform();

    __motion_UIL1.addPropertyArray("x", [-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0]);
    __motion_UIL1.addPropertyArray("y", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);

    __motion_UIL1.addPropertyArray("scaleX", [1.000000]);
    __motion_UIL1.addPropertyArray("scaleY", [1.000000]);
    __motion_UIL1.addPropertyArray("skewX", [0]);
    __motion_UIL1.addPropertyArray("skewY", [0]);
    __motion_UIL1.addPropertyArray("rotationConcat", [0]);
    __motion_UIL1.addPropertyArray("blendMode", ["normal"]);
    __motion_UIL1.initFilters(["flash.filters.BlurFilter"], [0], -1, -1);

    __motion_UIL1.addFilterPropertyArray(0, "blurX", [200,185.714,171.429,157.143,142.857,128.571,114.286,100,85.7143,71.4286,57.1429,42.8572,28.5715,14.2857,0], -1, -1);
    __motion_UIL1.addFilterPropertyArray(0, "blurY", [0], -1, -1);  

    __motion_UIL1.addFilterPropertyArray(0, "quality", [BitmapFilterQuality.LOW], -1, -1);

    var __animFactory_UIL1:AnimatorFactory = new AnimatorFactory(__motion_UIL1);
    __animFactory_UIL1.transformationPoint = new Point(0.500000, 0.500000);

    __animFactory_UIL1.addTarget(s1, 1);
}

и вот, когда я положил движениефункция анимации внутри: (у меня есть прямоугольник, преобразованный в символ, который я назвал s1)

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.motion.AnimatorFactory;
import fl.motion.MotionBase;
import flash.filters.*;
import flash.geom.Point;
import fl.motion.Motion;
import flash.display.DisplayObject;

function b1(UILx:DisplayObject)
{
    var __motion_UIL1:MotionBase;
    if(__motion_UIL1 == null) 
    {
        import fl.motion.Motion;
        __motion_UIL1 = new Motion();
        __motion_UIL1.duration = 15;
        //__motion_UIL1.overrideTargetTransform();

        __motion_UIL1.addPropertyArray("x", [-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0]);
        __motion_UIL1.addPropertyArray("y", [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);

        __motion_UIL1.addPropertyArray("scaleX", [1.000000]);
        __motion_UIL1.addPropertyArray("scaleY", [1.000000]);
        __motion_UIL1.addPropertyArray("skewX", [0]);
        __motion_UIL1.addPropertyArray("skewY", [0]);
        __motion_UIL1.addPropertyArray("rotationConcat", [0]);
        __motion_UIL1.addPropertyArray("blendMode", ["normal"]);
        __motion_UIL1.initFilters(["flash.filters.BlurFilter"], [0], -1, -1);

        __motion_UIL1.addFilterPropertyArray(0, "blurX", [200,185.714,171.429,157.143,142.857,128.571,114.286,100,85.7143,71.4286,57.1429,42.8572,28.5715,14.2857,0], -1, -1);
        __motion_UIL1.addFilterPropertyArray(0, "blurY", [0], -1, -1);  

        __motion_UIL1.addFilterPropertyArray(0, "quality", [BitmapFilterQuality.LOW], -1, -1);

        var __animFactory_UIL1:AnimatorFactory = new AnimatorFactory(__motion_UIL1);
        __animFactory_UIL1.transformationPoint = new Point(0.500000, 0.500000);

        __animFactory_UIL1.addTarget(UILx, 1);
    }
}

b1(s1);

, и теперь это работа с CS4, а не работа в CS5. pleeeeeeease помогите мне

1 Ответ

1 голос
/ 12 февраля 2011

__ motion_UIL1 и __animFactory_UIL1 оба объявлены как локальные переменные (внутри функции), что по сути означает, что они стираются и забываются после выполнения функции.Попробуйте переместить

var __motion_UIL1:MotionBase;

и

var __animFactory_UIL1:AnimatorFactory;

из тела функции.

...