AS中实现利用队列将资源逐个进行加载

package mobile.manager
{
import com.youbt.manager.RFResourceManager;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;


/**加载管理器*/
public class LoadManager
{
public var request:URLRequest;
public var loader:Loader;
public var panel:Sprite;
public var pointX:Number;
public var pointY:Number;
/**下载队列**/
private var _loadArr:Array = new Array();
private var _loadComplete:Boolean = true;
private var _curTask:LoadTask;

private static var _instance:LoadManager = new LoadManager();

public static function newInstance():LoadManager{
return  _instance;
}

public function LoadManager()
{
}

/**
* 加载图片到某个容器上
* bitId:图片id
* panel:显示图片容器
* x,y:图片显示的位置
* */
public function loadImgToPanel(bitId:String,panel:Sprite,x:Number=0,y:Number=0,useBitMap:Boolean=true):void
{
var task:LoadTask = new LoadTask();
task.panel = panel;
task.bitId = bitId;
task.x = x;
task.y = y;
task.useBitMap = useBitMap;
this._loadArr.push(task);
if(_loadComplete==true){
startLoad();
}
}

public function startLoad():void{
var task:LoadTask = _loadArr.shift();
if(task){
this._loadComplete = false;
_curTask = task;
this.panel=task.panel;
pointX=task.x;
pointY=task.y;
if(!RFResourceManager.getResource(_curTask.bitId)){
request = new URLRequest("resource/icon/"+task.bitId);
loader = new Loader()
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
}else{
loaded();
}
}
}

/**加载完成*/
public function loaded(e:Event=null):void
{
var bit:Bitmap;
if(e){
bit=e.target.content;
RFResourceManager.saveResource(_curTask.bitId,bit.bitmapData);
}else{
var bd:BitmapData = RFResourceManager.getResource(_curTask.bitId);
bit = new Bitmap(bd);
}
removeHead(this.panel);
this.panel.addChild(bit);
bit.x=this.pointX;
bit.y=this.pointY;
_loadComplete=true;
startLoad();
}

private function fillBitMap(bd:BitmapData):void{
this.panel.graphics.clear();
this.panel.graphics.beginBitmapFill(bd);
this.panel.graphics.drawRect(0,0,bd.width,bd.height);
this.panel.graphics.endFill();
}

private function removeHead(head:Sprite):void{
var num:int = head.numChildren;
if(num>0){
for(var i:int=num-1;i>=0;i--){
head.removeChildAt(i);
}
}
}
}
}
import flash.display.Sprite;

/**内部类*/
class LoadTask{
public var bitId:String;
public var panel:Sprite;
public var x:Number=0;
public var y:Number=0;
public var useBitMap:Boolean;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值