2

すべてのユニットに多くの章があるフラッシュを使用してレッスンブックを作成しました。それらは、章の間を移動するためのコンボボックスです。それらの章は個々のフレームに配置されます。さて、各チャプターが異なる.swfファイル(または公開プレビューがHTMLの場合はHTMLフラッシュファイル)である場合、コンボボックスを介してそれらにアクセスするにはどうすればよいですか?フレーム間を移動するためのコンボボックスのコードは次のとおりです。

stop();

combobox.addItem( {label: "Chapter 1" } );
combobox.addItem( {label: "Chapter 2" } );
combobox.addItem( {label: "Chapter 3" } );


combobox.addEventListener(Event.CHANGE, changeFrame);

function changeFrame (event:Event):void{

    if (combobox.selectedItem.label == "Chapter 1")
    gotoAndStop ("chap1");
    else if (combobox.selectedItem.label == "Chapter 2")
    gotoAndStop ("chap2");
    else if (combobox.selectedItem.label == "Chapter 3")
    gotoAndStop ("chap3");
}

助けてください?ありがとう!

4

2 に答える 2

1

gotoAndStopの代わりに、次のようなことをしたいとします。

ExternalInterface.call('yourJavascriptFunction', combobox.selectedItem.label);

次に、Javascriptでは、次のようになります。

function yourJavascriptFunction(chapterName) {
  //set source of frame here
}
于 2012-12-19T04:28:24.570 に答える
1

swfをロードする関数を作成し、画面に表示します。

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.MovieClip;

function loadSwf(swfURL:String):void
{
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    loader.load(new URLRequest(swfURL);                                           
}

function onComplete(e:Event)
{
    var swf:MovieClip = new MovieClip();
    swf.addChild(e.currentTarget.content);
    addChild(swf);
}

次に、変更イベントを使用して関数を呼び出します

function changeFrame (event:Event):void
{
    if (combobox.selectedItem.label == "Chapter 1")
    loadSwf("chap1.swf");
    else if (combobox.selectedItem.label == "Chapter 2")
    loadSwf("chap2.swf");
    else if (combobox.selectedItem.label == "Chapter 3")
    loadSwf("chap3.swf");
}

次に、すでにロードされているチャプターを削除する必要があるかどうかを確認するために、ifステートメントなどを追加する必要があります。

于 2012-12-19T10:57:37.910 に答える