package iptton.utils{
import com.adobe.cairngorm.control.CairngormEventDispatcher;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import iptton.events.*;
import mx.events.FlexEvent;
import mx.preloaders.IPreloaderDisplay;
import mx.preloaders.Preloader;
public class OBSPreloader extends Sprite implements IPreloaderDisplay
{
private var _bgAlpha:Number;
private var _bgColor:uint;
private var _bgImage:Object;
private var _bgSize:String;
private var _stageHeight:Number;
private var _stageWidth:Number;
private var _preloader:Preloader;
private var _downloadBar:Shape;
private var _initBar:Shape;
private var _initField:TextField;
public function OBSPreloader()
{
_initField = new TextField();
_initField.defaultTextFormat =
new TextFormat( 'Arial', 12, 0xFFFFFF, true );
_downloadBar = new Shape();
addChild( _downloadBar );
_initBar = new Shape();
addChild( _initBar );
}
// initialize any properties on display.
public function initialize():void
{
_downloadBar.x = ( _stageWidth / 2 ) - 20;
_initBar.x = _downloadBar.x - 2;
_downloadBar.y = ( _stageHeight / 2 ) - 50;
_initBar.y = _downloadBar.y;
_initField.x = _initBar.x + 2;
_initField.y = _initBar.y + 100 - 15;
_initField.width=400;
addChild( _initField );
}
// define event handlers of the Preloader instance
public function set preloader( obj:Sprite ):void
{
_preloader = obj as Preloader;
_preloader.addEventListener( ProgressEvent.PROGRESS,
downloadProgressHandler );
_preloader.addEventListener( FlexEvent.INIT_PROGRESS,
initProgressHandler );
_preloader.addEventListener( FlexEvent.INIT_COMPLETE,
initCompleteHandler );
}
public function get backgroundAlpha():Number
{
return _bgAlpha;
}
public function set backgroundAlpha(value:Number):void
{
_bgAlpha = value;
}
public function get backgroundColor():uint
{
return _bgColor;
}
public function set backgroundColor(value:uint):void
{
_bgColor = value;
}
public function get backgroundImage():Object
{
return _bgImage;
}
public function set backgroundImage(value:Object):void
{
_bgImage = value;
}
public function get backgroundSize():String
{
return _bgSize;
}
public function set backgroundSize(value:String):void
{
_bgSize = value;
}
public function get stageHeight():Number
{
return _stageHeight;
}
public function set stageHeight(value:Number):void
{
_stageHeight = value;
}
public function get stageWidth():Number
{
return _stageWidth;
}
public function set stageWidth(value:Number):void
{
_stageWidth = value;
}
//=========temp==
public function setLabel(s:String):void{
_initField.text=s;
}
// handle SWF file download progress.
private function downloadProgressHandler( evt:ProgressEvent ):void
{
var perc:Number = ( ( evt.bytesLoaded / evt.bytesTotal ) * 100 );
var top:Number = 100 - perc;
_downloadBar.graphics.clear();
_downloadBar.graphics.beginFill( 0xFF0000, 1 );
_downloadBar.graphics.moveTo( 0, 0 );
_downloadBar.graphics.lineTo( 10, 0 );
_downloadBar.graphics.lineTo( 10, perc * 0.9 );
_downloadBar.graphics.lineTo( 0, perc * 0.9 );
_downloadBar.graphics.lineTo( 0, 0 );
_downloadBar.graphics.endFill();
_initBar.graphics.clear();
_initBar.graphics.beginFill( 0xFFFFFF, 1 );
_initBar.graphics.moveTo( 0, 100 );
_initBar.graphics.lineTo( 2, 100 );
_initBar.graphics.lineTo( 2, top );
_initBar.graphics.lineTo( 0, top );
_initBar.graphics.lineTo( 0, 100 );
_initBar.graphics.endFill();
setLabel(perc+" %loaded ("+evt.bytesLoaded + " / " + evt.bytesTotal +")");
}
// handle application initialization progress.
private function initProgressHandler( evt:FlexEvent ):void
{
_initField.text = "正在初始化...";
}
// handle completion of download and initialization.
private function initCompleteHandler( evt:FlexEvent ):void
{
new SystemConfig(this);
}
public function notifyOfConfigLoaded(o:Object):void{
/*
var timer:Timer = new Timer( 3000, 1 );
timer.addEventListener( TimerEvent.TIMER_COMPLETE, notifyOfComplete );
timer.start();
*/
dispatchEvent( new Event( Event.COMPLETE ) );
var ced:CairngormEventDispatcher=CairngormEventDispatcher.getInstance();
ced.dispatchEvent( new SystemEvent(SystemEvent.INITAL,o));
}
}
}
package iptton.utils{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
/**
* 获取系统配置内容
*
* =============================
* 配置文件格式:
*
*
*
* ...
*
* =============================
* */
public class SystemConfig{
private var _parent:OBSPreloader;
/**
* 返回给callback的参数为一个对象
*
* 内容有:
* amfphpGatewayUrl:String
**/
public function SystemConfig(parent:OBSPreloader,configUrl:String="swfConfig.xml"){
_parent=parent;
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest(configUrl);
loader.load(req);
loader.addEventListener(Event.COMPLETE,onResult);
loader.addEventListener(ProgressEvent.PROGRESS,progressing);
_parent.setLabel("正在加载配置文件...");
}
protected function progressing(event:ProgressEvent):void{
_parent.setLabel(100*event.bytesLoaded/event.bytesTotal+" %loaded ("+event.bytesLoaded + " / " + event.bytesTotal +")");
}
protected function onResult(event:Event):void{
_parent.setLabel("配置文件加载完毕...");
var xmlobj:XML = new XML(event.target.data);
var ret:Object=new Object();
var tmp:XMLList=xmlobj.property;
for each(var node:XML in tmp){
_parent.setLabel("正在设置: "+node.@name+" : "+node.@value+"...");
ret[node.@name]=node.@value;
}
_parent.notifyOfConfigLoaded(ret);
}
}
} 发表于 @ 2008年07月17日 09:19:00 | 评论( loading... ) | 举报| 收藏