Actionscript 3 addFrameScript在Document类中工作,在时间轴上完全崩溃?
我有一个问题,我作为一个班写了以下测试:Actionscript 3 addFrameScript在Document类中工作,在时间轴上完全崩溃?,actionscript-3,Actionscript 3,我有一个问题,我作为一个班写了以下测试: package { import flash.display.MovieClip; import flash.display.FrameLabel; public class FrameLabels extends MovieClip { public function FrameLabels () { var labelsList:Array = current
package
{
import flash.display.MovieClip;
import flash.display.FrameLabel;
public class FrameLabels extends MovieClip
{
public function FrameLabels ()
{
var labelsList:Array = currentLabels;
for (var i:int = 0; i < currentLabels.length; i++)
{
if (currentLabels[i].name == "monday")
{
addFrameScript (currentLabels[i].frame-1, mondayHandler);
}
if (currentLabels[i].name == "tuesday")
{
addFrameScript (currentLabels[i].frame-1, tuesdayHandler);
}
if (currentLabels[i].name == "wednesday")
{
addFrameScript (currentLabels[i].frame-1, wednesdayHandler);
}
}
}
private function mondayHandler():void
{
trace("at monday at frame " + currentFrame);
}
private function tuesdayHandler():void
{
trace("at tuesday! at frame " + currentFrame);
}
private function wednesdayHandler():void
{
trace("at wednesday! at frame " + currentFrame);
}
}
}
包
{
导入flash.display.MovieClip;
导入flash.display.FrameLabel;
公共类FrameLabels扩展了MovieClip
{
公共函数框架标签()
{
变量标签列表:数组=当前标签;
对于(变量i:int=0;i
我有框架标签:
星期一
星期二
星期三
这在文档类中非常有效,但是,当我将其放在时间轴的第1帧时,它会使Flash崩溃
我在最后一帧有一个停止动作,所以游戏玩家不应该一遍又一遍地运行脚本,有什么原因导致这个崩溃吗
时间线代码:
var labelsList:Array = currentLabels;
for (var i:int = 0; i < currentLabels.length; i++)
{
if (currentLabels[i].name == "monday")
{
addFrameScript (currentLabels[i].frame-1, mondayHandler);
}
if (currentLabels[i].name == "tuesday")
{
addFrameScript (currentLabels[i].frame-1, tuesdayHandler);
}
if (currentLabels[i].name == "wednesday")
{
addFrameScript (currentLabels[i].frame-1, wednesdayHandler);
}
}
function mondayHandler ():void
{
trace ("at monday at frame " + currentFrame);
}
function tuesdayHandler ():void
{
trace ("at tuesday! at frame " + currentFrame);
}
function wednesdayHandler ():void
{
trace ("at wednesday! at frame " + currentFrame);
}
var标签列表:数组=当前标签;
对于(变量i:int=0;i
我接受了你的as并试图模仿你的问题(仅使用时间线代码)
我发现:
- 第1层第1帧上的代码
- 星期一在第2层第1帧,星期二在第2层第11帧,星期三在第2层第21帧
- 第1层第21帧上的停止()
对我来说没有错误,但我确实发现星期三的处理程序在触发stop()之前运行。我建议在处理程序之后放置一个stop(),这样timline就不会在第一个位置播放。如果还有什么我可以帮忙的,请告诉我。因为SWF电影是为流媒体设计的,所以第1帧上的代码将在第1帧加载后立即执行。如果电影的其余部分尚未完成加载,则currentLabels属性或要为其分配处理程序脚本的帧尚未设置(空),这将导致播放机崩溃 您必须确保脚本仅在SWF完全加载时执行。可以通过“属性”面板将电影中的所有内容导出到第1帧(以便在加载第1帧后加载所有内容),或者(更好)创建预加载循环以检查bytesLoaded/ByTestTotal 这在文档类中起作用,因为构造函数是在文档SWF完成加载后调用的