AS 3自記類整理ノート:ByteLoader類
3235 ワード
index.base.net.byteLoader類解説:基本機能はバイトごとに画像をロードし、swfなどの構造関数public 機能 ByteLoader(url:String) = "") パラメータurlが入ったら、すぐにロードを実行します。ロード ロード方法public 機能 ロードurl:String):voidロード開始、_urlはロードの住所udataです。 データの更新方法public 機能 udata():void更新バッファの可読バイトclose シャットダウン方法public 機能 close():voidクラスは使用済みで、不要なデータをすべて消去し、データストリームを強制的にシャットダウンしてdataをダウンロード停止することもできます。 属性public var data:ByteArayローディングのバイトurlを返します。 属性public var url:Stringはロードされたurl isLoadに戻ります。 属性(読み取り専用)public 機能 get isLoad():Booleanは、プログレスEvent.PROGRESSをロードしているデータがあるかどうかを返します。 イベントロード中のスケジュールは、Event.C.OMPLETEを添付します。 イベントロード完了スケジュール例:import index.base.net.ByteLoader;var bl:ByteLoader = new ByteLoader;bl.load("http://www.xiaos8.com/uploads/pro/50preso3a2.swf");bl.addEvent Listener(Event.C OMPLETE、complette eFun);bl.addEvent Listener(PrograesEvent.PROGS、プログレスFun)機能 compleete Fun(e:Event):void{ var loader:Loader = new Loader; loader.loadBytes(bl.data) addChild(loader) bl.removeevent Listener(Event.C OMPLETE、complette eFun); bl.removeveEvent Listener(PrograesEvent.PROGRESS、progressFun); bl.close(); 黒い。 = null;機能 プログレスFun(e:PrograesEvent):void{ trace(e.bytes Loaded) //プログレッシブフォーマットのjpegピクチャであれば、このイベントをリリースする際にバイトを読み込み、Loader.loadByttesでロードすると、ロードしながら表示するソースコードが形成されます。
package index.base.net{
import flash.events.EventDispatcher;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.utils.ByteArray;
import flash.net.URLStream;
import flash.net.URLRequest;
public class ByteLoader extends EventDispatcher{
public var url:String;
public var data:ByteArray;
private var stream:URLStream;
public function ByteLoader(url:String = ""){
if(url != ""){
load(url);
}
}
//
public function load(_url:String):void{
url = _url;
data = new ByteArray;
stream = new URLStream;
stream.load(new URLRequest(url));
stream.addEventListener(Event.COMPLETE,completeFun);
stream.addEventListener(ProgressEvent.PROGRESS,progressFun);
}
//
private function progressFun(e:ProgressEvent):void{
if(stream.bytesAvailable == 0) return;
updata();
dispatchEvent(e);
}
//
private function completeFun(e:Event):void{
stream.removeEventListener(Event.COMPLETE,completeFun);
stream.removeEventListener(ProgressEvent.PROGRESS,progressFun);
updata();
if(isLoad) stream.close();
dispatchEvent(e);
}
//
public function updata():void{
if(isLoad) stream.readBytes(data,data.length);
}
//
public function close():void{
if(isLoad) stream.close();
stream = null;
data = null;
}
//
public function get isLoad():Boolean{
if(stream == null) return false;
return stream.connected;
}
}
}