Actionscript 3 actionscript 3添加和删除movieclip按钮

Actionscript 3 actionscript 3添加和删除movieclip按钮,actionscript-3,flash,button,actionscript,Actionscript 3,Flash,Button,Actionscript,尝试在actionscript上创建按钮:创建并删除movieclip对象,但总是出现一些错误。。。 我需要一个按钮创建movieclip,另一个必须通过鼠标点击删除它。以下是代码: import flash.events.MouseEvent; import flash.display.MovieClip; import flash.text.TextField; main.addEventListener(MouseEvent.CLICK, addMain); function addMa

尝试在actionscript上创建按钮:创建并删除movieclip对象,但总是出现一些错误。。。 我需要一个按钮创建movieclip,另一个必须通过鼠标点击删除它。以下是代码:

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.text.TextField;

main.addEventListener(MouseEvent.CLICK, addMain);
function addMain(e: MouseEvent) {
    var movieClip: bm = new bm();
    movieClip.x = 640;
    movieClip.y = 570;
    this.addChild(movieClip);
    main.removeEventListener(MouseEvent.CLICK, addMain);
    deletemain.removeEventListener(MouseEvent.CLICK, addMain);
}

deletemain.addEventListener(MouseEvent.CLICK, deleteMain);
function deleteMain(e: MouseEvent)  {
    var movieClip: bm = bm(event.target);
    this.removeChild(movieClip);
    removeChild(movieClip);
    movieClip = null;
    deletemain.removeEventListener(MouseEvent.CLICK, deleteMain);
}

OK,为了理解为什么代码不起作用,让我们来看看:

main.addEventListener(MouseEvent.CLICK, addMain);
function addMain(e: MouseEvent) 
{
    // here you are creating a local var "movieClip" 
    // inside your "addMain" function, so it's only accessible here
    var movieClip:bm = new bm();
        movieClip.x = 640;
        movieClip.y = 570;

    this.addChild(movieClip);

    main.removeEventListener(MouseEvent.CLICK, addMain);

    // I don't really know why you do this !
    deletemain.removeEventListener(MouseEvent.CLICK, addMain);
}

deletemain.addEventListener(MouseEvent.CLICK, deleteMain);
function deleteMain(e: MouseEvent)
{
    // here, you are creating a local var "movieClip"
    // by casting (converting) your "deletemain" button (e.target) to an "bm" object

    // event.target should be e.target
    var movieClip: bm = bm(event.target);

    // here your are removing the "deletemain" button, once
    this.removeChild(movieClip);
    // and twice
    removeChild(movieClip);

    movieClip = null;

    deletemain.removeEventListener(MouseEvent.CLICK, deleteMain);
}
因此,要实现您想要的功能:创建一个MovieClip并使用两个按钮将其删除,您必须将“MovieClip”声明为全局变量,以便两个侦听器函数都可以访问:

// declare a global "bm" object
var movieClip:bm;

btn_add.addEventListener(MouseEvent.CLICK, btn_add_onPress);
function btn_add_onPress(e: MouseEvent): void
{
    // create the "movieClip" object
    movieClip = new bm();
    addChild(movieClip);

    // remove the click event listener for the btn_add
    btn_add.removeEventListener(MouseEvent.CLICK, btn_add_onPress);
}

btn_delete.addEventListener(MouseEvent.CLICK, btn_delete_onPress);
function btn_delete_onPress(e:MouseEvent) : void 
{
    // remove the "movieClip" object
    removeChild(movieClip);
    movieClip = null;

    // remove the click event listener for the btn_delete
    btn_delete.removeEventListener(MouseEvent.CLICK, btn_delete_onPress);
}

希望这能有所帮助。

如果您有错误,显然应该发布错误。它们提供了关于如何摆脱它们的有用信息,毕竟,这就是你收到它们的原因。好吧,我第一次在这里不知道。但不是你第一次解释。始终提供您拥有的所有相关信息。如果你不理解他们,那没关系,这可能是问题的一部分。我没有否决你的问题,但可能有人因为这个原因否决了。如果您包含所有相关信息,社区会更好地接收您的问题,并且更有可能得到回答。顺便说一句,欢迎来到SO!太棒了@akmozo!!!非常感谢你的帮助!我很难理解动作脚本…@AlexBulava不客气。查看有关学习ActionScript 3的更多信息。