AS3 goToAndStop()BUG?

时间:2012-01-17 14:00:40

标签: flash actionscript-3 flashdevelop

由于某种原因,在一个实例中,我无法让goToAndStop(2)转到并停留在影片剪辑的第二帧上,该影片剪辑有两个帧,并且已加载!

我将movieclip添加到类的构造函数的舞台上。然后点击button1我将帧更改为第2帧,然后点击button2返回第1帧。

他们都没有工作.....

但是..如果在构造函数上将movieclip设置为goto frame 2,那么它会在第2帧启动,当我点击button1它停留在第2帧时(因为我告诉它转到第2帧)然后点击button2成功将其更改为第一帧。然后我可以再次点击button1并将其更改为第二帧。

从构造函数中删除_movie.gotoAndStop(2),但没有一个能再次起作用。

public function changeBackground($frame:int):void
{
    trace('gotoFrame', $frame);
    _movie.gotoAndStop($frame);
    trace('currentFrame',_movie.currentFrame);
}

按钮1单击输出

gotoFrame 2
currentFrame 2

按钮2单击输出

gotoFrame 1
currentFrame 1

所以它说它在正确的框架上,但显示不然!

舞台上绝对只有这个类的一个实例

3 个答案:

答案 0 :(得分:1)

好的,首先有点咆哮......

我还在AS3中发现了gotoAndStop的一些令人沮丧的问题。如果在舞台上存在多个该影片剪辑的实例,则在渲染影片剪辑的正确帧时似乎存在问题。我可以理解,有时框架可能无法及时呈现,以便代码引用该框架上的对象,但是在flash渲染下一帧之后,所有剪辑都应该显示框架上的内容!!我发现很难相信闪存的一个基本概念 - 时间轴电影剪辑 - 似乎在as3中不能100%工作。

现在我希望得到一个有用的答案......

我设法解决这个问题的唯一方法是使用源图像影片剪辑类(隐藏在舞台上或刚刚从库中的代码中创建)。然后我可以在一个影片剪辑上使用gotoAndStop,根据需要使用BitmapData类多次绘制它,并将这些图像添加到我需要的显示对象中。

答案 1 :(得分:0)

首先,请删除变量中的$。它们不是为了可读性而需要的,只会减慢你的速度。

其次,不要假设gotoAndStop中存在错误。虽然有可能,但有数千甚至数百万的Flash游戏使用这种方法没有问题。我不是说要责骂,但我希望你能记住这一点,因为许多程序员追逐鬼......认为错误是一种语言问题。

既然你说构造函数更改框架只是找到,我认为你的_movie与按钮不同。尝试更改_movie的位置,看看你是否正在与正确的对象交谈。

此外,这个问题可能是因为舞台没有足够快地失效: AS3 - gotoAndStop with immediate action

答案 2 :(得分:-2)

我倾向于通常使用$前缀传递给函数的变量,_用于私有函数或类的变量,并且没有公共变量的前缀,个人偏好,我不共享我的代码所以没关系。并且事实证明这是我使用的特定版本的Flex与FlashDevelop ...并且快速更新的问题,并且一切正常,它在不同的对象上被击中和错过它是否真的gotoAndStop框架与否......