簡體   English   中英

actionscript 3 添加和刪除影片剪輯按鈕

[英]actionscript 3 add and remove movieclip button

試圖在 actionscript 上制作按鈕:創建和刪除影片剪輯對象,但總是出現一些錯誤...我需要一個按鈕創建影片剪輯,另一個必須通過鼠標單擊將其刪除。 這是代碼:

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);
}

好的,要了解為什么您的代碼不起作用,讓我們來看看它:

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);
}

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM