2011-02-11 3 views
0

モーショントゥイーンを機能させる際に問題があります。私のコードはCS4で完璧に動作しますが(残念ながら、私のPC上ではいつもCS4がぶら下がっています)、CS5の方は動きがうまく機能しますが、それを奇妙な動作にしてしまえば、私はプロではない。私は、関数内でモーショントゥイーンを入れたときに、ここでActionScript 3およびFlash CS5でMotion Tweenが関数内で機能しない

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は機能せず、コードであるという名前のシンボルに変換長方形の形状を有しています: (私は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では動作しません。 は

+4

マイナーな電車のように見えるコードを除いて、これはコンパイルされてタイムラインスクリプトとしてうまく機能するようです。あなたはその問題をより具体的にすることができますか?エラーが出ていますか? – grapefrukt

+0

番号。エラーは全くありません。最初にコードをぼかして、15フレームでs1シンボルを画面上に移動させ、2番目のコードでは、1フレーム内で動かずにぼかしを行います(ぼかしや移動のアニメーションなし)。 – Saman

答えて

1

__motion_UIL1と__animFactory_UIL1私を助けpleeeeeeease両方essentally機能が実行された後、それらが消去され、忘れられていることを意味する、(関数内)のローカル変数として宣言されています。関数本体のうち

var __motion_UIL1:MotionBase; 

var __animFactory_UIL1:AnimatorFactory; 

を移動してみてください。

+0

さらに、私は@grapefruktに同意します:コード*はマイナーな電車のように見えます;) – weltraumpirat

+0

ありがとうございます。それはとても役に立ちました。私はあなたの提案をテストし、あなたは正しかった。しかし、フラッシュCS4で私はこの問題はありません。あなたの方法を使用する場合、私はこの機能を他のムービークリップやランタイムに表示オブジェクトで動的に使用することはできませんか?何か提案がありますか? – Saman

+0

これはCS4でも動作してはいけません; idは別のガベージコレクションメカニズムに関連している可能性がありますが、実際には最高の偶然でした。この関数を動的に使用することはできますが、クラスを構築して(移動したい表示オブジェクトごとに「new」でインスタンス化する)、または各モーションに対して1つのMotionBaseと1つのAnimatorFactoryを使用するか、両方のパラメータを表示オブジェクトとともに関数に渡します。 – weltraumpirat

関連する問題