如何通过组合框导航到另一个文件?

时间:2012-12-19 02:54:37

标签: actionscript-3 flash combobox

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

有什么帮助吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您需要执行以下操作,而不是gotoAndStop:

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

然后,在Javascript中,类似于:

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

答案 1 :(得分: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语句或其他内容来检查是否需要删除已加载的章节。