System.useCodePage=true;
//编码支持中文.
var loader:Loader=new Loader();
/* 设置舞台外部加载对象的的固定显示区域 */
var SHOW_X : Number = 200;
var SHOW_Y : Number = 50;
var SHOW_W : Number = 400;
var SHOW_H : Number = 300;
/********************************************************************
*所有对象的监听事件在本区域添加,请着重理解addEventListener带参传递的用法
********************************************************************/
loadswf_btn.addEventListener(MouseEvent.MOUSE_DOWN,loadobject("1.JPG"));
loadjpg_btn.addEventListener(MouseEvent.MOUSE_DOWN,loadobject("6.jpg"));
/**********************************************************************
下面是加载、加载过程、加载完毕等诸事件的处理函数,如无必要,勿需更改。
**********************************************************************/
//在预设主显示区中心建立一动态文本框,用以显示加载进度信息
var inputFormat:TextFormat = new TextFormat();
inputFormat.font = "宋体";//字体
inputFormat.size = 12;//字体大小
inputFormat.color=0XFF0000;
var loader_txt:TextField = new TextField();
loader_txt.type = TextFieldType.DYNAMIC;//文本格式
loader_txt.defaultTextFormat = inputFormat;
loader_txt.height = 20;
loader_txt.width = 200;
loader_txt.x=SHOW_X+(SHOW_W-200)/2;
loader_txt.y=SHOW_Y+(SHOW_H-20)/2;
this.addChild(loader_txt);
//函数功能:实现addEventListener带参传递
function loadobject(parm:String):Function {
var func=function(e):void{
loader.unload();
//此处支持加载任何外部可显示对象,包括jpg,flv,swf等,如果是swf,请注意有版本区别(V>=9.0)
loader.load(new URLRequest(parm));
//定义加载过程、加载异常、加载完毕,卸载四个监听事件
//为了保证连续跟踪,下面所有监听函数,不能定义到loadobject函数的外面
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
//url地址错误,需要单独捕获,try catch语句块是捕获不到的
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioError);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, unloadobject);
};
return func;
}
//函数功能:捕获加载进度
function loadProgress(e:ProgressEvent):void {
loader_txt.text="正在加载数据: "+ Math.round(e.bytesLoaded/e.bytesTotal * 100)+"%";
}
//函数功能:捕获加载异常(主要是URL错误异常)
function ioError(evt:IOErrorEvent) {
evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,ioError);
loader_txt.text="加载失败,未找到相关文件。";
}
//函数功能:处理加载成功事件,特别注意:只有loader加载成功后,才能对其进行初始化设置
function loadComplete(e:Event):void {
loader_txt.text="";//清空加载信息提示
loader.alpha=0.9;//as3中,alpha取值区间更改为[0,1]
// 载入MC的舞台宽度
var t_stageW : Number = loader.contentLoaderInfo.width;
// 载入MC的舞台高度
var t_stageH : Number = loader.contentLoaderInfo.height;
//当预设的主显示区的宽度和高度比要加载的对象的宽度和高度都小时,才等比例缩放,否则,全部呈现(只为防止失真)
if (SHOW_W<t_stageW && SHOW_H<t_stageH) {
//是否缩放MC适应显示宽度(载入MC舞台的宽高比是否大于显示区域宽高比)
var scaleflag : Boolean = t_stageW / t_stageH > SHOW_W / SHOW_H;
//缩放比率
var t_scaleRate : Number = scaleflag ? SHOW_W / t_stageW : SHOW_H / t_stageH;
loader.contentLoaderInfo.content.scaleX = loader.contentLoaderInfo.content.scaleY = t_scaleRate;
loader.contentLoaderInfo.content.x = SHOW_X;
loader.contentLoaderInfo.content.y = SHOW_Y;
//当缩放时,根据实际情况,居中定位显示
if (scaleflag) {
loader.contentLoaderInfo.content.y += (SHOW_H - t_stageH * t_scaleRate) / 2;
} else {
loader.contentLoaderInfo.content.x += (SHOW_W - t_stageW * t_scaleRate) / 2;
}
} else {
//当全部呈现时,需要居中呈现
loader.contentLoaderInfo.content.x=SHOW_X+(SHOW_W-t_stageW)/2;
loader.contentLoaderInfo.content.y=SHOW_Y+(SHOW_H-t_stageH)/2;
}
// 如果是swf,则用原swf的帧频进行播放
//this.stage.frameRate = loader.contentLoaderInfo.frameRate;
// 显示所加载的对象
this.addChild(loader);
}
//函数功能:捕获卸载事件,保证完全卸载(纠正AS3本身的卸载BUG)
function unloadobject(e:Event) {
//待完善
}
转载于:https://blog.51cto.com/twoears/413216