2017-09-21 7 views
1

私はscenePageという名前のステージにMovieClipを持ち、文字MCで構成されるchar_panelという名前のMovieClipを持っています。これらのうちの1つはchar1_mcです。movieclip内の子供を削除するには

私がchar1_mcをクリックすると、新しいインスタンス(newChar)が作成され、scenePageに子が追加されます。ステージ上にbtn_removeという名前のボタンがあり、これをクリックするとscenePage上のnewCharを削除する必要があります。問題は、scenePage内の子(newChar)がボタンをクリックしたときに削除されないということです。

私は

scenePage.removeChild(newChar); 

を使用してみました。しかし、それは、言って私にエラーを与える「パラメータの子が非nullでなければなりません。」 scenePage内のインスタンスにアクセスする他の方法はありますか?私は本当にscenePageの子供にアクセスする必要があります。ここで

がchar1_mcがあるchar_panel内部のスクリプトだ私はAS3のためにそれをエクスポートした後、CHARACTER1はchar1_mcのクラス名です:

import flash.display.MovieClip; 

var newChar: MovieClip; 

char1_mc.addEventListener(MouseEvent.CLICK, showChar1); 
function showChar1(e:MouseEvent):void 
{ 
    newChar = new character1(); 
    newChar.height = 215; 
    newChar.width = 220; 
    newChar.x = 20; 
    newChar.y = 202.60; 
    MovieClip(root).scenePage.addChild(newChar); 
} 

そして、これはメインのタイムラインにあるbtn_removeためのスクリプトです。事前に

btn_remove.addEventListener(MouseEvent.CLICK, remove_character); 
function remove_character(e:MouseEvent):void 
{ 
    scenePage.removeChild(newChar); 
} 

感謝:)

+0

char_panel範囲の一部であるnewCharオブジェクトを削除」と言っている

scenePage.removeChild(char_panel.newChar); 

関連するコード。エラーは、 'newChar' varに割り当てられたオブジェクトがないことを意味します(または' newChar'はまだ/もう存在しません)。 – BadFeelingAboutThis

+0

@BadFeelingAbout私はすでにスクリプトを追加しました。 ^^ –

答えて

0

あなたの問題はスコープの一つです。

メインタイムラインとchar_panelのスコープは異なります。これは、一方のvarsが他方のvarsで利用できないことを意味します。

メインタイムラインからnewCharに移動するには、適切なスコープまでドリルダウンする必要があります。

char_panelは、メインタイムライン上のオブジェクトのインスタンス名としましょう。もしそうなら、あなたはあなたのメインのタイムラインのコードでこれを行う必要があるだろう:あなたはすべて表示されなければならないでしょう

+0

それは動作します!大変ありがとうございます@BadFeelingAboutThis !! :) –

関連する問題