0

好的,所以当单击时我有一个按钮转到第 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: Error #2025: 提供的 DisplayObject 必须是调用者的子对象。

没看懂什么意思,有什么技巧吗?谢谢,麻烦您了。

其他问题,但它可能是相关的,尽管 xpsafety 不等于 0,但该功能仍然会关闭(我知道是因为发生了 calculateExp(8)。

4

4 回答 4

2

自从我编写任何框架脚本以来已经有一段时间了,因为它很快变得繁琐且难以管理。见 这里

在这个xpsaftey问题上,当您返回到第 10 帧时,整个脚本将再次运行,并且xpsaftey使用默认值重新定义变量0。为了防止这种情况,您需要将声明var xpsafety:int放在较早的框架上。

xpsaftey在 for 循环中的第二个示例只是进一步混淆了事情,因为您在 if 语句的范围内再次重新定义它。我建议对变量范围进行一般性阅读。

于 2012-10-26T16:12:04.207 回答
0

尝试做类似的事情:

xpclip.parent.removeChild(xpclip);
于 2012-10-26T14:57:17.417 回答
-1

您正在尝试xpclip从侦听器内部访问您的变量,试试这个。

var mc:MovieClip = (root as MovieClip).xpchild;
(root as MovieClip).removeChild(mc);

如果这仍然不起作用,请检查是否mc不为空。

于 2012-10-26T15:13:35.310 回答
-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);
    } 
于 2012-10-26T15:29:49.983 回答