Flex制作的swf加载时的设置样本
2010-11-08 01:07
543 查看
package com
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.TextField;
import flash.text.TextFormat;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class LoadingExampleProgressBar extends DownloadProgressBar
{
private var logo:Loader;
private var txt:TextField;
private var _preloader:Sprite;
public function LoadingExampleProgressBar()
{
logo = new Loader();
logo.load(new URLRequest("l4cd.png"));
addChild(logo);
var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");
txt = new TextField();
txt.defaultTextFormat = style;
txt.width = 200;
txt.selectable = false;
txt.height = 20;
addChild(txt);
super();
}
//最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~
override public function set preloader(value:Sprite):void{
_preloader = value
//四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕
_preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.addEventListener(Event.COMPLETE,load_complete);
_preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);
//add by huanghui . It's imposable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_preloader.visible = false;
//_preloader.alpha = 0;
//_preloader.cacheAsBitmap = true;
stage.addEventListener(Event.RESIZE,resize)
resize(null);
}
private function remove():void{
_preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.removeEventListener(Event.COMPLETE,load_complete);
_preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);
stage.removeEventListener(Event.RESIZE,resize)
}
private function resize(e:Event):void{
logo.x = (stage.stageWidth - 40)/2;
logo.y = (stage.stageHeight - 80)/2;
txt.x = (stage.stageWidth - 200)/2;
txt.y = logo.y + 40+5;
graphics.clear();
graphics.beginFill(0x333333);
graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
graphics.endFill();
}
private function load_progress(e:ProgressEvent):void{
//txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";
}
private function load_complete(e:Event):void{
//txt.text = "加载完毕!"
}
private function init_progress(e:FlexEvent):void{
///txt.text = "正在初始化..."
}
private function init_complete(e:FlexEvent):void{
//txt.text = "初始化完毕!"
remove()
//最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
dispatchEvent(new Event(Event.COMPLETE))
}
}
}
在src下,新建一个包,命名为com,在com下新建一个as文件,名为LoadingExampleProgressBar.as,将以上代码复制到as文件中并保存,然后再mxml文件的头部<s:Application ... >中添加preloader="com.LoadingExampleProgressBar",编译运行即得结果。
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.TextField;
import flash.text.TextFormat;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class LoadingExampleProgressBar extends DownloadProgressBar
{
private var logo:Loader;
private var txt:TextField;
private var _preloader:Sprite;
public function LoadingExampleProgressBar()
{
logo = new Loader();
logo.load(new URLRequest("l4cd.png"));
addChild(logo);
var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");
txt = new TextField();
txt.defaultTextFormat = style;
txt.width = 200;
txt.selectable = false;
txt.height = 20;
addChild(txt);
super();
}
//最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~
override public function set preloader(value:Sprite):void{
_preloader = value
//四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕
_preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.addEventListener(Event.COMPLETE,load_complete);
_preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);
//add by huanghui . It's imposable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_preloader.visible = false;
//_preloader.alpha = 0;
//_preloader.cacheAsBitmap = true;
stage.addEventListener(Event.RESIZE,resize)
resize(null);
}
private function remove():void{
_preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.removeEventListener(Event.COMPLETE,load_complete);
_preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);
stage.removeEventListener(Event.RESIZE,resize)
}
private function resize(e:Event):void{
logo.x = (stage.stageWidth - 40)/2;
logo.y = (stage.stageHeight - 80)/2;
txt.x = (stage.stageWidth - 200)/2;
txt.y = logo.y + 40+5;
graphics.clear();
graphics.beginFill(0x333333);
graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
graphics.endFill();
}
private function load_progress(e:ProgressEvent):void{
//txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";
}
private function load_complete(e:Event):void{
//txt.text = "加载完毕!"
}
private function init_progress(e:FlexEvent):void{
///txt.text = "正在初始化..."
}
private function init_complete(e:FlexEvent):void{
//txt.text = "初始化完毕!"
remove()
//最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
dispatchEvent(new Event(Event.COMPLETE))
}
}
}
在src下,新建一个包,命名为com,在com下新建一个as文件,名为LoadingExampleProgressBar.as,将以上代码复制到as文件中并保存,然后再mxml文件的头部<s:Application ... >中添加preloader="com.LoadingExampleProgressBar",编译运行即得结果。
相关文章推荐
- 设置flex应用程序加载完毕后自动获取到输入焦点
- flex swfobject 加载远程swf
- Flex加载swf的几个要点
- Flex动态加载swc和swf中的class
- Flex加载swf的几个要点
- 如何去掉、修改Flex生成的SWF加载进度条?
- Flex项目页面加载时引用Flash制作的进度动画
- flex加载外部swf文件[flex-swf and flash as3 swf],并且互相通讯-加强原来的帖
- 设置Flex在加载应用的时候获取焦点
- Flex加载swf的几种方法
- Flex加载swf的几个要点
- 设置flex应用程序加载完毕后自动获取到输入焦点
- Flex加载flash_as3_swf,并响应其中的按钮事件
- 设置Flex在加载应用的时候获取焦点
- 关于FLEX生成的SWF设置stage.displayState的问题
- Flex实现加载as2的swf交互
- Flex动态加载swc和swf中的class
- 反其道为之,as3加载flex的swf
- Flex中实时动态加载(图像swf)皮肤的方法
- flex动态加载swf皮肤示例代码