好吧,所以当点击进入第15帧时,我有一个按钮。如果xpsafety为0,我想要创建一个子项并将xpsafety设置为1.因此,如果再次单击该按钮,它将不显示该子项并执行计算
成名10:
var xpsafety:int = 0;
var xpclip:MovieClip = new xp();
RememberButton.addEventListener(MouseEvent.CLICK, GoToRemember);
function GoToRemember(evt:MouseEvent):void {
gotoAndPlay(15, "Scene 1");
if (xpsafety == 0) {
addChild(xpclip);
xpclip.x=41;
xpclip.y=835;
calculateExp(8);
xpsafety = xpsafety +1;
}
}
第15帧:
stop();
BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety);
function GoBackSafety(evt:MouseEvent):void {
gotoAndPlay(10, "Scene 1");
removeChild(xpclip);
}
我得到的错误是:ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子级。
我不明白这是什么意思,任何提示?拜托,谢谢你。
其他问题,但它可能是相关的,尽管xpsafety不等于0,但函数仍然关闭(我知道因为calculateExp(8)发生了。
答案 0 :(得分:2)
自从我做任何框架脚本以来已经有一段时间了,因为它很快就会变得很麻烦且很难管理。请参阅here。
在xpsaftey
问题上,当您返回第10帧时,将再次运行整个脚本,并使用默认值xpsaftey
重新定义变量0
。您需要将声明var xpsafety:int
放在较早的帧上以防止这种情况发生。
你在for循环中使用xpsaftey
的第二个例子只是在if语句的范围内再次重新定义它时会让事情变得更加混乱。我建议对变量scope进行一般性阅读。
答案 1 :(得分:0)
尝试做类似的事情:
xpclip.parent.removeChild(xpclip);
答案 2 :(得分:-1)
您正试图从侦听器内部访问xpclip
变量,请尝试此操作。
var mc:MovieClip = (root as MovieClip).xpchild;
(root as MovieClip).removeChild(mc);
如果仍然无效,请检查mc
是否为空。
答案 3 :(得分:-2)
我需要做的就是将我的变量放在第15帧的if语句中.....如下所示:
stop();
BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety);
function GoBackSafety(evt:MouseEvent):void {
gotoAndPlay(10, "Scene 1");
}
var xpclip:MovieClip = new xp();
if (xpsafety==0) {
var xpsafety:int = 0;
addChild(xpclip);
xpclip.x=41;
xpclip.y=835;
calculateExp(8);
xpsafety = xpsafety +1;
trace(xpsafety);
}