Actionscript 第三次播放帧时出错
我有一个flash文件,其中第一帧包含两个按钮,其中一个按钮将用户带到第二帧,另一个按钮将用户带到第三帧。在这些帧中的每一帧,都可以通过SimpleButtons操作各种文本字段和变量。第2帧和第3帧都有“后退”按钮,可将它们带回第1帧 当前,当用户第二次导航回第1帧时(因此第三次播放),我的第二个按钮似乎不再存在,我收到一个错误。第1帧上的两个按钮都是通过Flash IDE放置的。为什么我的按钮突然不存在了,而它在前两次做得非常好?下面是我的第1帧代码。“后退”按钮只需删除事件侦听器,然后调用Actionscript 第三次播放帧时出错,actionscript,flash,frames,Actionscript,Flash,Frames,我有一个flash文件,其中第一帧包含两个按钮,其中一个按钮将用户带到第二帧,另一个按钮将用户带到第三帧。在这些帧中的每一帧,都可以通过SimpleButtons操作各种文本字段和变量。第2帧和第3帧都有“后退”按钮,可将它们带回第1帧 当前,当用户第二次导航回第1帧时(因此第三次播放),我的第二个按钮似乎不再存在,我收到一个错误。第1帧上的两个按钮都是通过Flash IDE放置的。为什么我的按钮突然不存在了,而它在前两次做得非常好?下面是我的第1帧代码。“后退”按钮只需删除事件侦听器,然后调用
gotoAndStop(1)
事实上,我也有过类似的问题。这与垃圾收集有关,垃圾收集一开始并不是Flash中最好的,但IDE的编译器设置让它更加疯狂。你可以尝试一些可能有用的技巧
- 请确保在离开帧之前删除所有侦听器
- 进入一个“空白”框架(仍然有背景和样式,但没有可交互的组件)甚至5/1000秒
- 在第一帧上将变量名设置为“null”(因此,如果第3帧上的组件名为“foo”,则在第一帧上放置
)foo=null
- 将
放在第1帧上。对所有提前命名的可能正在使用的MovieClips重复上述操作var foo:MovieClip
var inited:Boolean;
var cache:SharedObject;
var libsans:Font = new libsansreg();
this.addEventListener(Event.ENTER_FRAME, frameEnter);
stats.addEventListener(MouseEvent.CLICK, statsclicked);
modules.addEventListener(MouseEvent.CLICK, modsclicked);
function initcache():void
{
this.cache = SharedObject.getLocal("RPG_Shooter")
}
function frameEnter(e:Event):void
{
if (!inited)
{
inited = true
initcache()
this.gotoAndStop(1)
}
}
function statsclicked(e:MouseEvent):void
{
this.removeEventListener(Event.ENTER_FRAME, frameEnter)
stats.removeEventListener(MouseEvent.CLICK, statsclicked)
modules.removeEventListener(MouseEvent.CLICK, modsclicked)
this.gotoAndStop(2)
}
function modsclicked(e:MouseEvent):void
{
this.removeEventListener(Event.ENTER_FRAME, frameEnter)
stats.removeEventListener(MouseEvent.CLICK, statsclicked)
modules.removeEventListener(MouseEvent.CLICK, modsclicked)
this.gotoAndStop(3)
}