2009-06-30 8 views
0

AS2のTweenLiteに問題があるようです。tweenlite as2 oncomplete

メインタイムラインで呼び出すクラスを作成しました。クラス内でイメージを読み込んだら、読み込まれたら、それらの間でフェードしたい。

TweenLite.to(_root["loadedimg1"], 1, {_alpha: 100, 
      onComplete:doImageLoop, onCompleteParams:[1], onCompleteScope:this}); 

私はその後、フェードループを行うには、次の機能があります:イメージのロードが完了したとき、私は(私のクラスの内部で)次のコードを呼び出しています

public function doImageLoop(imageId:Number):Void 
{ 
    trace(imageId); 
    var newImageId:Number; 
    TweenLite.to(_root["loadedimg" + imageId], 1, {delay:2, _alpha: 0}); 
    if ((imageId + 1) > queueCount) { 
     newImageId = 1; 
    } else { 
     newImageId = imageId + 1; 
    } 
    TweenLite.to(_root["loadedimg"+newImageId], 1, {delay:3, _alpha: 100, 
       onComplete:doImageLoop, onCompleteParams:[newImageId], 
       onCompleteScope:this, overwrite:0}); 
    } 

この機能はヒットれることは決してありませんが、この最初のイメージは消えます。

答えて

0

あなたのコードは私には完璧に働きます。私はまだいくつかのマイナーAS2のものをやっていますので、私はあなたに答えようと考えていました。私は3つのpicture-mcを「loadedimg1」、「loadedimg2」、および「loadedimg3」と呼ばれるステージに配置しました。次に、空のMovieClipを作成しました。そこには、「テスト」という名前のクラスが接続されています。クラスには、次のコードが含まれます。

import gs.TweenLite; 

class test extends MovieClip { 
private var queueCount : Number = 3; 

function test() { 
    TweenLite.to(_root["loadedimg1"],1,{_alpha:100, onComplete:doImageLoop, onCompleteParams:[1], onCompleteScope:this}); 
} 

function doImageLoop(imageId:Number):Void { 
    trace(imageId); 
    var newImageId:Number; 
    TweenLite.to(_root["loadedimg"+imageId],1,{delay:2, _alpha:0}); 
    if ((imageId+1)>queueCount) { 
     newImageId = 1; 
    } else { 
     newImageId = imageId+1; 
    } 
    TweenLite.to(_root["loadedimg"+newImageId],1,{delay:3, _alpha:100, onComplete:doImageLoop, onCompleteParams:[newImageId], onCompleteScope:this, overwrite:0}); 
} 
}; 

をたぶん、あなたは私達にあなたのクラスが配置されており、どのように深いあなたのアプリケーションのコーディング方法のより詳細な例を与えることができます。 AS2では、スコープを失わないようにすることが常に優先事項でした。 :(

少し後で助けることができます...