2012-12-19 81 views
2

我已經使用flash創建了一本教科書,其中每個單元都有很多章節。他們是一個組合框在本章之間導航。這些章節被放入個別框架。現在,如果每個章節都是不同的.swf文件(如果發佈預覽爲HTML,則爲HTML Flash文件),那麼如何通過組合框訪問它們?這裏是我的組合框在導航幀之間的代碼:如何通過組合框導航到另一個文件?

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"); 
} 

請幫忙嗎?謝謝!

回答

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語句或東西來檢查是否需要刪除已加載的一章調用該函數。

+0

對於遲到的回覆感到抱歉,並且非常感謝您的回答。它的工作很好! –

+0

好吧,如果一個swf文件加載了,那麼它的重疊就是前一個。我該如何處理它?另一個問題是,當選擇**第2章**時,可以使組合框顯示它的**第2章**? (通常如果我添加項目相同的序列,如**第1章**,組合將顯示第1章,雖然**第2章**被選中。) –

1

相反gotoAndStop的,你想要做的事,如:

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

然後,在Javascript中,像:

function yourJavascriptFunction(chapterName) { 
    //set source of frame here 
} 
+0

感謝您的幫助,雖然它似乎有點複雜(因爲我是閃光新手)。但我投了!:) –

相關問題