随机生成SWFLoader源码
Randomly generating SWFLoader source
我想在 flex 中创建一个显示随机生成的 swf 的视图。
以下代码可以 运行,但我的 swf 没有显示?如何解决这个问题?
<fx:Script>
<![CDATA[
public function random(url:String):String{
var movieArray:Array = ['swf/maily_you', 'swf/maily_work', 'swf/maily_start'];
var loader:Loader = new Loader();
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf';
trace("Attempting to load", url);
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
addChild(loader);
function loaderComplete(e:Event):void {
trace("Successfully loaded", url);
} function loaderIOError(e:IOErrorEvent):void {
trace("Failed to load", url);
}
]]>
</fx:Script>
<s:Panel width="100%" height="100%">
<mx:SWFLoader width="480" height="320" id="loader1" source="random()"/>
</s:Panel>
在你发布的代码中你有一些小错误:
- 如果您希望
random()
函数设置 SWFLoader
对象的来源,它应该 return SWF 的 URL 而不是将其用作一个参数。
public function random():String
{
// ...
return url;
}
- 我知道您正在使用
Loader
对象,也许出于测试目的,但您不需要使用 SWFLoader
对象。
- 要在 MXML 代码中使用 bindable 数据源(您的
random()
函数),您可以使用:
大括号 ({}) 语法:
<mx:SWFLoader width="480" height="320" id="loader1" source="{random()}"/>
<fx:Binding>
标签:
<fx:Binding
source="random()"
destination="loader1.source"
/>
<mx:SWFLoader width="480" height="320" id="loader1" source=""/>
所以你的最终代码可以是这样的:
<fx:Script>
<![CDATA[
public function random():String
{
var movieArray:Array = ['swf/maily_you', 'swf/maily_work', 'swf/maily_start'];
var loader:Loader = new Loader();
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf';
return url;
}
]]>
</fx:Script>
<s:Panel width="100%" height="100%">
<mx:SWFLoader width="480" height="320" id="loader1" source="random()"/>
</s:Panel>
有关更多信息,请查看 data binding。
希望能帮到你。
我想在 flex 中创建一个显示随机生成的 swf 的视图。 以下代码可以 运行,但我的 swf 没有显示?如何解决这个问题?
<fx:Script>
<![CDATA[
public function random(url:String):String{
var movieArray:Array = ['swf/maily_you', 'swf/maily_work', 'swf/maily_start'];
var loader:Loader = new Loader();
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf';
trace("Attempting to load", url);
loader.load(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOError);
addChild(loader);
function loaderComplete(e:Event):void {
trace("Successfully loaded", url);
} function loaderIOError(e:IOErrorEvent):void {
trace("Failed to load", url);
}
]]>
</fx:Script>
<s:Panel width="100%" height="100%">
<mx:SWFLoader width="480" height="320" id="loader1" source="random()"/>
</s:Panel>
在你发布的代码中你有一些小错误:
- 如果您希望
random()
函数设置SWFLoader
对象的来源,它应该 return SWF 的 URL 而不是将其用作一个参数。
public function random():String { // ... return url; }
- 我知道您正在使用
Loader
对象,也许出于测试目的,但您不需要使用SWFLoader
对象。
- 要在 MXML 代码中使用 bindable 数据源(您的
random()
函数),您可以使用:
<mx:SWFLoader width="480" height="320" id="loader1" source="{random()}"/>
<fx:Binding>
标签:
<fx:Binding
source="random()"
destination="loader1.source"
/>
<mx:SWFLoader width="480" height="320" id="loader1" source=""/>
所以你的最终代码可以是这样的:
<fx:Script>
<![CDATA[
public function random():String
{
var movieArray:Array = ['swf/maily_you', 'swf/maily_work', 'swf/maily_start'];
var loader:Loader = new Loader();
var index:int = movieArray.length * Math.random();
var url:String = movieArray[index] + '.swf';
return url;
}
]]>
</fx:Script>
<s:Panel width="100%" height="100%">
<mx:SWFLoader width="480" height="320" id="loader1" source="random()"/>
</s:Panel>
有关更多信息,请查看 data binding。
希望能帮到你。