2009-02-26 8 views
0

誰かが私に「未定義のプロパティへのアクセス:removeChild(goBack)」というエラーメッセージが表示される理由を知る手伝いをすることができますか?as3未定義のプロパティへのアクセス?

ところで、これはあなたが適用範囲と間違っているフラッシュCS4用

function nameOfFunction() { 

var goBack:backButton_mc = new backButton_mc(); 

goBack.x = 10; 

goBack.y = 700; 

goBack.back_text.text = myXML.*[buildingName].NAME; 

goBack.name = "backBtn"; 

goBack.buttonMode = true; 


addChild(goBack); 

goBack.addEventListener(MouseEvent.CLICK, anotherFunction); 

} 


function anotherFunction(e:MouseEvent):void { 

removeChild(goBack); 

} 

答えて

1

です。 (驚き: - D)

変数goBackは "nameOfFunction"の中で定義されています。これを "anotherFunction"のような別の関数からアクセスしようとすると、それはもう表示されません

function anotherFunction(e:MouseEvent):void { 
    removeChild(e.currentTarget); 
} 

それともだろう最善の方法:両方の機能を保持するクラスのクラスメンバーとしてGOBACKを促進)

が異なるこの問題を解決するための可能性があります。 (または、クラスを使わないとgoBackを "グローバル"にします)

1

ひどいですが、もう少し説明することが重要だと感じています。

ローカル変数、つまりvar someVariable:DataTypeを作成しました。関数内で。つまり、その変数は関数のスコープ(内部)にあるオブジェクト(ローカル)にしか使用できず、関数の存続期間中のみ存続します。すぐにその機能が実行されると、コードがもう一度実行されるまで消えてしまいます。タイムライン上でフラッシュIDEの中に直接プログラミングする可能性が高いようですが、これは問題ありませんが、ドキュメントクラスを使用していた場合は、単にコンストラクタ関数のすぐ上のClassスコープで変数を宣言するだけです現在使用しているのと同じ機能で値を設定してください。このようにして、変数への参照は関数内に存在しません。単に変数の中から設定されます。これにより、プライベートに設定されていても、同じクラスのどこからでもその変数にアクセスできます。

//Frame 1, Actions layer 
//Slap goBack right onto the root/stage 
var goBack:MovieClip; 
/* 
I noticed you had this data-typed differently, 
i prefer to type to an interface, not an implementation. 
Since your class is a movieclip in the library it extends 
MovieClip and therefor IS A MovieClip, but ok either way. 
*/ 

function nameOfFunction():void 
{ 
    goBack = new backButton_mc(); 
    goBack.x = 10; 
    goBack.y = 700; 
    goBack.back_text.text = myXML.*[buildingName].NAME; 
    goBack.name = "backBtn"; 
    goBack.buttonMode = true; 
    addChild(goBack); 
    goBack.addEventListener(MouseEvent.CLICK, anotherFunction); 
} 

function anotherFunction(e:MouseEvent):void 
{ 
    removeChild(goBack); 
} 

適用範囲は非常に重要であり、しばらく後に非常に簡単に取り組むために:

これが役立つかもしれません。それに固執し、実験し、あなたの開発を助けることができる慣習と標準を読んでから、DocumentClassを愛するようにしましょう。最初にいくつかの人には気になるかもしれませんが、一度それを学び、それに慣れれば、タイムライン上のフラッシュIDEでのプログラミングに戻ってください。ここでは、オブジェクトとオーディオの表示のみがあると考えています。

関連する問題