2017-07-04 8 views
0

私はObjectの子にアクセスしたいです! 例: 私たちはk1オブジェクトの子(その名前はa1です)を持っています。 はどのように私はそれにアクセスすることができます(私の手段A1 K1中)as3のオブジェクト内の子にどのようにアクセスできますか

var k1:keypad=new keypad(); 
k1.x=7.05; 
k1.y=229.20; 
add Child(k1); 
this.k1.a1.addEventListener(Mouse Event.CLICK,ts); 
function ts(event:Mouse Event):void{ 
trace("OK"); 

}; 

はあなたに感謝します。

+0

現在何が起こっているのかを明確にしてください。エラーが表示されますか?その場合は、質問を編集してエラーメッセージを挿入してください。 'keypad'クラスのコードを表示すると役に立つでしょう。ほとんどの場合、この行はコンパイル時エラーを起こしています:add&childの間のスペースのために 'add Child(k1)'。 – BadFeelingAboutThis

+0

親愛なるサイトの文法のフォームのため、それらの間にスペースを作成し、私は私のコードを書いてthem.soの間にスペースを知っている私はエラーがあります:TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。 \t at Dictation_fasl1_fla :: MainTimeline/frame1()[Dictation_fasl1_fla.MainTimeline :: frame1:310] – hosseini

+0

「キーパッド」クラスについて説明してください。どのように定義されていますか? (actionscriptのためにエクスポートされたライブラリオブジェクト?別の.asクラスファイル?) – BadFeelingAboutThis

答えて

-2

あなたは間違っています。

:あなたはそれを

this.k1 

にアクセスすることはできませんので、あなたのコードは、おそらくこのように動作します、

var k1:keypad 

このオブジェクトのメンバーではありません:あなたは、ローカル変数K1を宣言します

// Bad class name: lowercase. var k1:keypad = new keypad; k1.x = 7.05; k1.y = 229.20; // This is addChild() method, it is spelled without space. addChild(k1); // Then you access k1 just as you did above, without this. // This will work if you designed your keypad with // Adobe Flash IDE on default publish settings. k1.a1.addEventListener(Mouse Event.CLICK, onA1); // This will work too if a1's instance name is a1: // k1.getChildByName("a1").addEventListener(Mouse Event.CLICK, onA1); // Event handler. MouseEvent is a class name, // it has no space inside. function onA1(e:MouseEvent):void { trace("OK"); } // Normally you don't need ; after function body. 
+0

varが定義されているのと同じスコープ内で 'this.k1'を使うことに問題はありません。コードの同じブロックでは、 'k1'は確かに' this'のメンバー/プロパティです。 OPの問題はおそらく 'a1'という名前の子を持っていない(または' a1'varにまだ値が設定されていない) – BadFeelingAboutThis

+0

@BadFeelingAboutThisこれはフレームスクリプトとして動作しますが、コードが関数本体であれば動作しません。したがって、開発者が自分が何をしているのか、すべてのデータがどこにあるのかを完全に理解していない限り、同じ方法で宣言して対処する方が一般的に優れています。 – Organis

+0

おならオルガン!あなたの返事をありがとう!残念ながらコードは動作しません!あなたは私を助けて、それを完全に書いてください! – hosseini

0

イベントにはプロパティターゲットがあります。これはクリックされた子供です。

function ts(event:MouseEvent):void{ 
    trace(event.target); 
};