as3,闪回转换冻结

时间:2010-01-25 17:24:57

标签: flash actionscript-3 actionscript tween

我在不同的电影剪辑中有很多不同的补间,但似乎有时补间会在我的过渡期间中途冻结。

这家伙遇到了同样的问题,他的问题得到了解答,但是当他们告诉他该做什么时,我不太确定他们的意思:http://www.actionscript.org/forums/showthread.php3?t=222606

我是否必须在根网站的最开头导入补间类,然后在每个影片剪辑中引用它们,而不是分别导入每个影片剪辑中的类?

以下是我的一个动画片段中的补间示例:

// Import classes
import fl.transitions.Tween;
import fl.transitions.easing.*;

// Bring in elements with tweening
var bandY:Tween = new Tween(band, "y", Strong.easeOut, 533, 259, 3, true);
var boxY:Tween = new Tween(box, "y", None.easeOut, -122, 0, 1, true);
var signY:Tween = new Tween(sign, "y", Regular.easeOut, 551, 224, 1.5, true);
var signX:Tween = new Tween(sign, "x", Regular.easeOut, -17, 82, 1.5, true);
var dragonMaskWidth:Tween = new Tween(dragonMask, "width", Regular.easeOut, 30, 500, 3, true);

2 个答案:

答案 0 :(得分:4)

在您引用的论坛中,帖子的含义是他们应该尝试为补间创建非局部变量。所以,而不是这样做

function onClick(e:MouseEvent):void
{
    nextPage = e.currentTarget.mcTarget;
    var theTween:Tween = new Tween(currentPage,"alpha",Strong.easeOut,1,0,1,true);
    theTween.addEventListener(TweenEvent.MOTION_FINISH, onTween);
}

他们说要试试这个:

var theTween:Tween;  
function onClick(e:MouseEvent):void
{
    nextPage = e.currentTarget.mcTarget;
    theTween = new Tween(currentPage,"alpha",Strong.easeOut,1,0,1,true);
    theTween.addEventListener(TweenEvent.MOTION_FINISH, onTween);
}

通过这样做,变量“theTween”的范围不是onClick事件处理函数的本地范围,而是与函数本身在同一范围内。

我最大的建议是尝试使用不同的补间库,那里有TONS。在闪存中补间的内置库留下了很多需要恕我直言。我会看一下这些中的一个或多个:

TweenLite

Tweener

GTween

AS3 Animation System

还有更多......只是看看

答案 1 :(得分:0)

实际上,我弄明白了另一个人在说什么。 我必须将补间变量移到函数之外,这是有道理的。 起初他们的代码很难看出差异。 还意识到这是一个糟糕的示例代码,因为没有功能。