2011-06-21 27 views
0

私が想像していることを手助けできるかどうかは、比較的シンプルですが、驚くほどイライラします。Flash AS3イベント伝播

インスタンス名がMbtnのボタンを含むムービークリップのリストがあります。私は、マウスが親クリップの上を移動するときにだけ、ボタンが表示されるようにしたいと思います。構造体は、基本的に、pcsと呼ばれる親クリップ、下にそれぞれ5つの子クリップ(インスタンス名がmBtnのボタンを含む)です。ここに私のコードです -

私は確かにこれを行うより良い方法があります - 非常に感謝していただきました!

おかげ ポール

+1

タイムラインコード===悪い –

+0

をよく読んで?私があなたの投稿から理解しているのは、投稿したコードが「イライラする」ことだけです。 –

答えて

1
evt.currentTarget.name 

は今、あなたは内容(hr_pc, m_pcなど)あなたのコンテナオブジェクト(pcs)を標的とされていない、ということを意味します。これはevt.targetevt.currentTargetの主な違いです。 currentTargetの名前をトレースすると、意図するターゲットごとに同じになります。 だから、是正するために、あなたは確かにあなたがボタンの上にマウス、もはやボタン直接の親になることはありませなりターゲットとして(それがされる場合は、しかし、問題が発生する可能性があり

evt.target.name 

でこの作業を行うことができますボタン自体)、ボタンは再びvisible=falseをトリガーする可能性があります。

私はおそらくこれとは異なる方向に進むでしょう:ボタンとそれ自身のリスナーを含むクラスを作成してください。これは、多くの共有行動がある場合(しかし、必要に応じて、そうでないかもしれない)良い計画になります。

だから、ええ、あなたは正確に何を求めているcurrentTarget vs target

+1

、実際には@The_asManが正しかった:タイムラインコードが悪く、すべてのコストをかけて回避する必要がある。 – Bosworth99

+0

'evt.target.name'は文字列ではありませんか? DisplayObjectへの参照を取得するには 'evt.target 'にする必要があります。 – alxx

+0

@alxx =私はOPのポストを参照しています。彼はロジックでインスタンス名を使用しているようです。しかし、はい、あなたは間違いなく正しいです。名前の小道具は単なる文字列です。 – Bosworth99

関連する問題