cat风格的loading文件技术分析
即时获得麻球游戏开发的最新消息,关注游戏开发者热门讨论,请各位开发者申请加入麻球官方群:121304476
也可以follow catfly围脖:t.sina.com.cn/iscat

我网站上的flash都实现了cat风格的loading后,虽然只是个小东西,但有朋友觉得不错,要求分享,所以我要有求“必应”嘛!
先说说loading中的两只小猫吧,那是从同事的作品中抢来的,是为“土豆树”项目制作的素材,两只黑色的瘦猫,当然非我莫属了。拿人动画,当然要替人宣传了,作者是seven

这个loading会根据自己src中的参数获得需要加载进来的flash地址


src="/wp-content/uploads/catflyLD2.swf?swf=/wp-content/uploads/2010/01/LinkVideo2.swf"

下划线的部分就是被加载的flash的地址。在as中通过如下方法来获取src中的变量值:


var paramObj:Object=LoaderInfo(root.loaderInfo).parameters;

//----
if (paramObj["swf"]) {
	initSwf();
} else {
	alertErr();
}

//----
function initSwf():void {
	var swfUrl:String=paramObj["swf"];
	//var swfUrl:String="football.swf";
	loader.load(new URLRequest(swfUrl));
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
	loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
	loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}


根据要加载的flash的尺寸自动更改loading动画的比例并居中显示

首先说明,我所有的loading中的背景与动画效果包括文本都在一个叫“loadMc”的影片剪辑中。


//为了保证正常变形,先指定舞台对齐方式与缩放模式
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;

//应用山寨版changesize方法(下面的方法很原始,学过数学的人都看得明白)
changesize(loadMc,loadMc.width,loadMc.height);
function changesize(mc:Sprite, w:uint, h:uint):void {
	if (w/h>stage.stageWidth/stage.stageHeight) {
		mc.width=stage.stageWidth;
		mc.height = stage.stageWidth/(w/h);
	} else if (w/h <= stage.stageWidth/stage.stageHeight) {
		mc.width=w/h*stage.stageHeight;
		mc.height=stage.stageHeight;
	} else if (w/h == stage.stageWidth/stage.stageHeight) {
		mc.width=stage.stageWidth;
		mc.height=stage.stageHeight;
	}
	mc.x = (stage.stageWidth-mc.width)/2;
	mc.y = (stage.stageHeight-mc.height)/2;
}

//也可以应用非山寨版changesize方法
function changesize(mc:Sprite, w:uint, h:uint):void {
	var bigPicWidth:Number = stage.stageWidth;
	var bigPicHeight:Number = stage.stageHeight;
	if (w/h>bigPicWidth/bigPicHeight) {
		mc.scaleX=mc.scaleY=bigPicWidth/mc.width;
	} else if (w/h < bigPicWidth/bigPicHeight) {
		mc.scaleX=mc.scaleY=bigPicHeight/mc.height;
	} else if (w/h == bigPicWidth/bigPicHeight) {
		mc.width=bigPicWidth;
		mc.height=bigPicHeight;
	}
	mc.x = (stage.stageWidth-mc.width)/2;
	mc.y = (stage.stageHeight-mc.height)/2;
}

一般来说,上面功能满足大部分需要loading的体验了。
至于,根据被加载flash中要求的必须条件获取被加载swf中的警告文字显示在loading中,并由警告附带的属性决定是否画面停留在loading状态,不显示被加载的swf,直到客户端满足必要条件。

这个需要在被加载的flash中实现相关接口,也需要从loading中去访问被加载的flash中的方法与属于,我打算另写一个文章来好好介绍一下如何实现这种能抛出警告,并控制loading完是停留还是跳过loading的加载方式。

猫抓鱼

2 Responses to “cat风格的loading文件技术分析”

  1. ок кайф  [引用]

Leave a Reply