`

[转]AS3工程中Loading的应用(Frame标签的使用)

阅读更多
[url]http://l4cd.net/blog/post-old-140.html
[/url]

由于AS工程没有帧..所以不能用常用的方法来做Loading,这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签),网上对Frame的介绍是...使用指定的类替换文档类,并把其它的东西都丢到了该类的第二帧。

Preloader类
package
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.utils.getDefinitionByName;
	/**
	 * 加载类,由于原内容会放到此类的第二帧~所以需要使用MovieClip;
	 * @author L4cd.Net
	 */
	public class Preloader extends MovieClip
	{
		[Embed(source="l4cd_48_48.jpg")]
		private var LogoClass:Class;
		private var text:TextField;
		public function Preloader()
		{
			//不多说了
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.showDefaultContextMenu = false;
			//显示一张图片..非必要
			with(addChild(new LogoClass()))
			{
				x=(500-48)/2;
				y=(380-48)/2;
			}
			//加一个textField显示进度
			text = addChild(new TextField()) as TextField;
			with(text)
			{
				defaultTextFormat = new TextFormat("宋体",12,0,null,null,null,null,null,"center");
				mouseEnabled = false;
				height = 16;
				x = (500-100)/2;
				y = 35+(380-15)/2;
			}
			//重要~侦听~
			loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.addEventListener(Event.COMPLETE,complete);
		}
		//显示进度
		private function progress(e:ProgressEvent):void
		{
			text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded";
		}
		private function complete(e:Event):void
		{
			//重要..加载完后...我们跳转到第二帧
			gotoAndStop(2);
			//获取文档类...然后显示,对于此步操作..有多种方法..有人习惯直接把原文档类addChild到此类当中..
			var mainClass:Class = Class(getDefinitionByName("AsProjectLoadingExample"));
			stage.addChild(new mainClass() as DisplayObject);
			//删除此类
			destroy();
		}
		private function destroy():void
		{
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress);
			loaderInfo.removeEventListener(Event.COMPLETE,complete);
			parent.removeChild(this);
		}
	}
}



AsProjectLoadingExample类
 
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.geom.Matrix;

	[SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")]
	//注意此行,Preloader为类名
	[Frame(factoryClass="Preloader")]
	public class AsProjectLoadingExample extends Sprite
	{
		[Embed(source="CD艳照.png")]
		private var ImageClass:Class;
		//嵌入一个2M的文件以显示加载效果
		[Embed(source="something.wma",mimeType="application/octet-stream")]
		private var SomeClass:Class;
		public function AsProjectLoadingExample()
		{
			//马赛格ing...
			var bmp:Bitmap = new ImageClass();
			var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0);
			bit.draw(bmp,new Matrix(.1,0,0,.1));
			with (addChild(new Bitmap(bit)))
			{
				scaleX = scaleY = 10;
			}
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics