从新浪转载的一篇文章,作用应该是可以在FLASH在开始的时候显示那个加载的进度条的那种功能
转载地址:http://blog.sina.com.cn/s/blog_6b00c6a10100n0ck.html
package com.common.base
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.utils.ByteArray;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class CommonDownloadProgressBar extends DownloadProgressBar
{
private var logo:Loader;
private var _preloader:Sprite;
private var _text:TextField;//显示进度文字
private var _logWidth:int = 40;
private var _logHeight:int = 40;
[Embed(source='com/tomwell/asset/loading/Loading.swf',mimeType="application/octet-stream")]
public var logImage:Class;
public function CommonDownloadProgressBar ()
{
super();
logo = new Loader();
logo.loadBytes(new logImage() as ByteArray);
addChild(logo);
_text = new TextField();
_text.width = 40;
var txtFormat:TextFormat = new TextFormat("Arial",12,0xffffff,true);
txtFormat.align = TextFormatAlign.CENTER;
_text.defaultTextFormat = txtFormat;
_text.selectable = false;
addChild(_text);
}
//最重要的代码就在这里..重写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);
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 - _logWidth)/2;
logo.y = (stage.stageHeight - _logHeight)/2;
_text.x = (stage.stageWidth - _logWidth)/2;
_text.y = (stage.stageHeight + _logHeight)/2;
graphics.clear();
graphics.beginFill(0x000000);
graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
graphics.endFill();
}
private function load_progress(e:ProgressEvent):void {
var p:int = 0;
p = Math.floor(e.bytesLoaded / e.bytesTotal * 100);
_text.text = p + "%";
}
private function load_complete(e:Event):void{
}
private function init_progress(e:FlexEvent):void{
}
private function init_complete(e:FlexEvent):void{
remove();
//最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
dispatchEvent(new Event(Event.COMPLETE));
}
}
}
关于此博客还有一些比较好的文章,现在一一列出来供以后使用:
Flex使用JSON格式与Java通信:http://blog.sina.com.cn/s/blog_6b00c6a10100lnfy.html
FLV文件结构解析:http://blog.sina.com.cn/s/blog_6b00c6a10100lnfm.html
Youtube的技术实现:http://blog.sina.com.cn/s/blog_6b00c6a10100lnfo.html
Flash编写类及外部as文件的方式:http://blog.sina.com.cn/s/blog_6b00c6a10100lnfa.html
Flex 自定义Loading载入状态:http://blog.sina.com.cn/s/blog_6b00c6a10100lngt.html
关于RED5——配置文件详解:http://blog.sina.com.cn/s/blog_6b00c6a10100lnfr.html