2011-12-30 7 views
0

私はAS3コードの開発者ですが、今回はタイムライン上にムービークリップとテキストフィールドのネストが複雑なFLAを扱う必要があります。 Flashのインスタンスフィールド)。 問題は、タイムラインに配置されたインスタンス内のネストされたムービークリップのイベント(Documentクラスに入れたイベント)がディスパッチされないことです。タイムライン内のネストされたムービークリップのイベントは、ディスパッチされません。

コード例:

// my instance on Stage in all Frames of the timeline 
public var thewall:MovieClip; 

// event directly on thewall works 
// the event is dispatched correctly 
thewall.addEventListener(MouseEvent.CLICK,click); 


// event on nested MovieClip userSharePost fails 
// the event is not dispatched 
thewall.userSharePost.addEventListener(MouseEvent.CLICK,click); 


// event on nested TextField field1 fails as well 
// the event is not dispatched 
thewall.userSharePost.field1.addEventListener(TextEvent.LINK, linkCpechEvent); 

私はイベントが送出得るためにそれらにアクセスする必要がどうすればよいですか?

は通常、事前にあなたのデニス

答えて

0

を非常に感謝し、あなたがメイン(ステージ)のタイムライン内のネストされたムービークリップにイベントハンドラを追加することはありません。ムービークリップは基本的にクラスであり、ネストされたムービークリップはすべてそのクラスのプロパティです。したがって、OOPのロジックによって、ムービークリップ内のすべてのムービークリップは、クリックされたときと同じように動作するはずです。これは、親ムービークリップのステージ上のネストされたムービークリップにイベントリスナーを追加することを意味します(私が意味するところがあれば)。

+0

私は知っていますが、FLAはデザイナーから私に渡され、ネストされたムービークリップとテキストフィールドのかなり複雑な配置をしています。私は何をすべきか?プログラム全体でデザイン全体を再作成しますか?おそらく3日かかるだろう。私はフラッシュオーサリングツールが提供するすべての利点を失うだろう。ステージ上で作成されたMovieClipが、ドキュメントクラスに挿入したイベントを受け取れないのは、私にとっては奇妙なことです。 – mugdiman

0

親ムービークリップに1つの "onClick"イベントリスナーを配置し、ハンドラーにイベントcurrentTargetをチェックさせることができます。イベントを聞く必要があるという問題の問題は、onClickリスナーを「thewall」ムービークリップに割り当てると、イベントの「ブロック」されていることです。 currentTargetのイベント

私の経験ではベストプラクティスではなく、「thewall」のインスタンスで「のonClick」を装着する、あるいは、イベントソースをチェックまたは1人のリスナーを持つように、内部下の層の上に追加の透明ムービークリップを持っているのいずれか「thewall」をクリックしてクリックイベントをアタッチすると、その上にあるすべてのムービークリップがそれぞれのイベントを発生させ、コンテナクリップのボディをクリックすると、それ自身のイベントが発生します。

+0

ありがとうございますが、私の場合は、テキストフィールド内のhtmlリンクのクリックを検出する必要があります。だから、同じ表示オブジェクト(field1)の両方にある場合、クリックがリンクから来たものであり、テキストフィールドからのものではないことをどのように検出するのだろうか? – mugdiman

+0

私は確かにevent.targetによってクリックイベントを追跡することをお勧めします。これは、さまざまなDisplayオブジェクト上にあるバナーやものに対して機能します。しかし、ダイナミックテキストとTextEvent.LINKイベントでは、常に同じターゲット、テキストフィールド表示オブジェクトを受け取ります! – mugdiman

+0

TextField内のリンクには「イベント:MYCUSTOMEVENT」という形式を付けることができます。そのため、イベントリスナーをテキストフィールドにアタッチすることができます。テキストフィールドはリッスンし、通常のクリックと区別します。 –

関連する問題