0

我似乎在 AS2 中遇到了 TweenLite 的问题。

我创建了一个我在主时间线上调用的类。在类中,我加载了图像,一旦加载,我想在它们之间淡入淡出。图像完成加载后,我正在调用(在我的班级内)以下代码:

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});
    }

这个函数永远不会被击中,但第一个图像确实消失了。

4

1 回答 1

0

你的代码对我来说很完美。我自己还在做一些小的 AS2 东西,所以我想我会试着回答你。我在舞台上放了三个图片-mc,分别称为:loadedimg1、loadedimg2 和loadedimg3。然后,我创建了一个空的 MovieClip,其中连接了一个名为“test”的类。该类包含以下代码:

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 的主要优先事项。:(

希望以后能帮上忙...

于 2009-06-30T19:21:15.853 回答