我并没有试图弄清楚如何将参数传递给嵌入式SWF,而是使用不同的值编译了20个SWF。这些SWF现在位于我的Flash Builder应用程序中。
每个SWF都有一个状态(使用includeIn),因此当用户单击按钮切换状态时,会显示相应的SWF。
问题是,当用户查看SWF时,它仍然在后台加载和运行。我想在用户离开状态时卸载查看的SWF,然后在再次需要时加载它。如果这是不可能的,那么我将满足于在进入状态时简单地重新加载SWF,而只是让其他19个在后台运行。
我有以下几点:
<fx:Script><![CDATA[
private var flashMovie1:MovieClip;
private var flashMovie2:MovieClip;
private function initFirst():void{
flashMovie1 = dmp_first.content as MovieClip;
}
private function initSecond():void{
flashMovie2 = dmp_second.content as MovieClip;
}
protected function btnFirst_clickHandler():void
{
flashMovie2.Stop();
currentState='First';
flashMovie1.Play();
}
protected function btnSecond_clickHandler():void
{
flashMovie1.Stop();
currentState='Second';
flashMovie2.Play();
}
]]></fx:Script>
<mx:SWFLoader id="dmp_first" includeIn="First" source="assets/images/dmp_first.swf" complete="initFirst()"/>
<mx:SWFLoader id="dmp_second" includeIn="Second" source="assets/images/dmp_second.swf" complete="initSecond()"/>加上上面的代码在停止和播放中根本不起作用,我仍然不知道如何强制SWF重新加载。任何帮助都将不胜感激!
发布于 2010-11-13 16:13:27
使用conatiner一次只能有一个swf。同样,你也不必使用state :)来表示ex:
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:mx = "library://ns.adobe.com/flex/mx"
minWidth = "955"
minHeight = "600">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.SWFLoader;
private function onAppCreationComplete():void
{
showSWF(0);
}
private function onSwfComboChange():void
{
showSWF(cbxSwfData.selectedIndex);
}
private function showSWF(index:int):void
{
grpContainer.removeAllElements();
var swfLoader:SWFLoader = new SWFLoader();
grpContainer.addElement(swfLoader);
swfLoader.load("assets/swfs_files/swf"+index+".swf");
}
]]>
</fx:Script>
<s:ComboBox
id = "cbxSwfData"
dataProvider = "{['swf1','swf2','swf3']}"
change = "onSwfComboChange()"/>
<s:Group
id = "grpContainer"
width = "50%"
height = "50%"/>
</s:Application>https://stackoverflow.com/questions/4170419
复制相似问题