我使用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");
}
有什么帮助吗?谢谢!
答案 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语句或其他内容来检查是否需要删除已加载的章节。