私は別のフレームに配置したメニューウィンドウをたくさん持っています(たとえばメインメニューはフレーム1、オプションメニューはフレーム2、チャプターメニューはフレーム3、文字メニューフレーム4上など)。各メニューにはテキストリンク(ムービークリップインスタンス)があり、クリックすると別のメニューページに移動します。これらの同じリンク(同じインスタンス)の一部は、同じ機能を実行するため複数のページに複製されます。たとえば、「backToMain」インスタンスをクリックすると、クリックされたページに関係なく、メインメニューのフレーム1に戻ります。お互いに接続するメニューリンクを作成する
どのように私はこれを構築するかもしれない考えを持っていますか?これまでは、すべてのリンクにリスナーを追加しようとしましたが、フレーム1以外のフレームにリンクがたくさんあるため、そのフレームにフリップするようにactionscriptに指示するまでリスナーを追加することはできません。したくない。
var linksArray:Array = [newStory, continueStory, options, characters, backToMain, backToOptions, ... etc];
for each (var link:MovieClip in linksArray) {
link.addEventListener(MouseEvent.CLICK, onClick);
}
function onClick(e:MouseEvent):void
{
if (e.target.name == "newStoryLink") {
delegate.beginStory();
} else if (e.target.name == "continueStory") {
// do something else
} else if (e.target.name == "chapters") {
// do something else
} else if (e.target.name == "options") {
// do something else
}
上記のコードは動作しません、述べたように、私は他のフレーム上に存在するインスタンスにリスナーを追加することはできませんので、私は最初にすべてを一度にすべてのリンクにリスナーを追加グローバルたいです。どのリンクがクリックされたか、リンクのどのインスタンスがクリックされたかに関係なく、基本的にASに何をすべきかを伝えるコードです。おかげさまで
だから何が問題なのですか? – Torious
質問を読んでください、問題はコードが動作しないことです。他のフレームのインスタンスにリスナーを追加することはできません。 – Windbrand
イベントリスナーを 'stage'に追加することができます。すべての 'CLICK'イベント*は最終的にそれにバブルアップするはずです。次に、上で説明した 'onClick'ハンドラのようなものを使用します。 – Torious