2011-06-28 14 views
0

ダイナミックに作成されたムービークリップ/オブジェクトのメソッドにアクセスするにはどうすればよいですか?AS3ダイナミックに作成されたムービークリップのメソッドにアクセスする

簡単にするために、私は映画のダイナミックな作成方法についてコードを投稿しませんでした。代わりに、すでに作成されていると仮定します。それはオブジェクトです。それはfield_2と呼ばれます。その下にはgetChildByName( 'field_' + field.id)を使用して参照します。

Check_box_component.as

public var testVar:String = 'test'; 

public function testReturn() 
{ 
    return 'value returned'; 
} 

Main.as

var temp:MovieClip = MovieClip(getChildByName('field_' + field.id)); 
trace(temp); 
trace(temp.testReturn); 
trace(temp.testVar); 

出力:

[object Check_box_component] 
function Function() {} 
test 

私はトレースtemp.test返信、なぜ関数"の値が返されました"の代わりに機能(){} "が表示されますか?

このリンクをクリックすると、この時点までに役立ちます。

http://curtismorley.com/2007/06/13/flash-cs3-flex-2-as3-error-1119/

答えて

1

あなたは試してみました: トレース(temp.testReturn()); トレースの代わりに ...トレース(temp.testReturn); ...?

あなたはあなたが待っている結果を得られると思います。

実際には、「temp.testReturn」を実行しているときは、関数を呼び出すことはありません。実際の呼び出しを行うには、かっこを追加する必要があります。

temp.testReturnのトレースを作成すると、関数は実行されません。トレース関数はtemp.testReturnの型を示します。temp.testReturnは、関数型として正しく返されます。

1

関数参照と関数呼び出しの間に違いがあります。括弧 '()'はActionScriptの演算子記号です。彼らはコンパイラーに "ちょうど私たちの後ろにあるものを呼び出そうとしてください"と伝えます。または、少なくとも私は彼らが丁寧であることを願っています。

ActionScriptの関数は、他のすべてのものと同様にオブジェクトです。 Functionクラスのメンバーです。参照を前後に渡すこともできます。call()やapply()などのメソッドを呼び出すこともできます。

コールを希望し、参照しない場合は、コールオペレーターを使用する必要があります。

trace(temp.testReturn());

EDIT入力中に回答を受け入れましたが、重複して申し訳ありません。

+0

「理由」の裏側を説明するので、 – divillysausages

関連する問題