Flash AS3 goToAndStop()错误?

Flash AS3 goToAndStop()错误?,flash,actionscript-3,flashdevelop,Flash,Actionscript 3,Flashdevelop,由于某种原因,在一个例子中,我无法让goToAndStop2转到并停止在电影剪辑的第二帧上,这有两帧,并且它已加载 我将movieclip添加到一个类的构造函数的stage中。然后单击按钮1,我将帧更改为帧2。然后单击按钮2返回到第1帧 他们都不工作 但是。。如果在构造函数中将movieclip设置为转到第2帧,那么它将在第2帧启动,当我单击按钮1时,它将停留在第2帧,因为我告诉它转到第2帧,然后单击按钮2成功地将其更改为第一帧。然后我可以再次单击按钮1,它会将其更改为第二帧 从构造函数中删除_

由于某种原因,在一个例子中,我无法让goToAndStop2转到并停止在电影剪辑的第二帧上,这有两帧,并且它已加载

我将movieclip添加到一个类的构造函数的stage中。然后单击按钮1,我将帧更改为帧2。然后单击按钮2返回到第1帧

他们都不工作

但是。。如果在构造函数中将movieclip设置为转到第2帧,那么它将在第2帧启动,当我单击按钮1时,它将停留在第2帧,因为我告诉它转到第2帧,然后单击按钮2成功地将其更改为第一帧。然后我可以再次单击按钮1,它会将其更改为第二帧

从构造函数中删除_movie.gotoAndStop2,所有函数都不会再次工作

public function changeBackground($frame:int):void
{
    trace('gotoFrame', $frame);
    _movie.gotoAndStop($frame);
    trace('currentFrame',_movie.currentFrame);
}
按钮1单击输出

gotoFrame 2
currentFrame 2
gotoFrame 1
currentFrame 1
按钮2单击输出

gotoFrame 2
currentFrame 2
gotoFrame 1
currentFrame 1
所以它说它在正确的帧上,但显示的不是这样


这个类在后台只有一个实例。首先,请删除变量中的$。它们不需要可读性,只会让你慢下来

第二,不要假设gotoAndStop中有bug。虽然这是可能的,但是有成千上万的Flash游戏使用这种方法而没有问题。我说这话不是为了责备你,但我希望你记住这一点,因为很多程序员都在追逐鬼魂。。。思考bug是一个语言问题

既然你说构造器改变了刚找到的帧,我想你的电影和按钮不一样。试着改变电影的位置,看看你是否在和正确的对象说话

此外,此问题可能是因为阶段的失效速度不够快:

对于传递给函数的变量,我通常会使用$prefix,对于函数或类的私有变量,我会使用$prefix,而对于公共变量,我不会使用前缀,个人偏好,我不会共享我的代码,所以这不重要。事实证明,这是我用来与FlashDevelop组合的flex的特定版本的一个问题。。快速更新,一切都很好,它在不同的对象上被击中了,不管它是否真的会在帧上移动和停止…

好的,先说一点

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

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


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

代码应该可以工作。一定是出了什么问题。-1对于你的前两段不相关的内容。至于第一句话,使用美元没有缺点,是OP自己的风格,这是完全好的,除非这个项目是作为Flash游戏的基础发布或类似的,在这种情况下,每个人都会撕头发。“马蒂,我不同意。格式非常重要,因为它是被分析表达式的语言。代码是公共的,因为它已在此处共享。在任何领域,正确地向同龄人表达自己的问题都是很重要的。我通常会使用“$”前缀来表示传递给函数的变量,“uu”表示传递给函数或类的私有变量,而不表示公共变量的前缀,个人偏好,我不共享我的代码,所以这无关紧要。事实证明,这是我用来与FlashDevelop组合的flex的特定版本的一个问题。。和快速更新,这一切都很好,它是击中和错过不同的对象,无论它是否真的会在帧或停止。。。。。