用[frame()]数据标签制作的纯AS preLoader

http://www.cnblogs.com/crkay/archive/2010/05/31/1747947.html

原理的话就是使用[frame()]标签,改变文档类指向。具体操作大家可以去网路上查一下,这方面资料很多,我这里只将源码贴出来,和大家一同分享。

代码
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 默认程序入口: 2 3   package 4 { 5   import flash.display.Sprite; 6   import mx.core.BitmapAsset; 7 8 [Frame(factoryClass = " SystemManager " ,label = " hello " )] 9 10 public class MyApplication extends Sprite { 11 12 [Embed(source = " test.png " )] 13 private var bigPicCls:Class; 14 15 public function MyApplication() { 16 var b:BitmapAsset = new bigPicCls() as BitmapAsset; 17 addChild(b); 18 } 19 } 20 } 21 22

 

代码
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 被指向的主文档类: 2 3 package { 4 import flash.display.DisplayObject; 5 import flash.display.MovieClip; 6 import flash.display.StageAlign; 7 import flash.display.StageScaleMode; 8 import flash.events.Event; 9 import flash.events.ProgressEvent; 10 import flash.utils.getDefinitionByName; 11 12 public class SystemManager extends MovieClip 13 { 14 private var preLoader:PreLoader; 15 16 public function SystemManager() { 17 stage.scaleMode = StageScaleMode.NO_SCALE; 18 stage.align = StageAlign.TOP_LEFT; 19 20 stop(); 21 22 preLoader = new PreLoader(); 23 addChild(preLoader); 24 25 preLoader.x = stage.stageWidth / 2 - preLoader.width / 2 ; 26 preLoader.x = stage.stageHeight / 2 - preLoader.height / 2 ; 27 28 loaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandle); 29 loaderInfo.addEventListener(Event.COMPLETE,completeHandler); 30 } 31 32 private function progressHandle(e:ProgressEvent): void 33 { 34 preLoader.setProgress(e.bytesLoaded,e.bytesTotal); 35 } 36 37 private function completeHandler(e:Event): void { 38 loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progressHandle); 39 loaderInfo.removeEventListener(Event.COMPLETE,completeHandler); 40 41 removeChild(preLoader); 42 preLoader = null ; 43 44 nextFrame(); 45 46 initApplication(); 47 } 48 49 private function initApplication(): void { 50 /** 这里不能直接写成: 51 var app:Application = new Application(); 52 这样的由于引用到 Application,Application中所有的资源都会被编译到第一帧来 53 这样的话 PreLoader就没有意义了,你也看不到PreLoader,就跳到第二帧了 54 * */ 55 var appCls:Class = getDefinitionByName( " MyApplication " ) as Class; 56 var app:DisplayObject = new appCls() as DisplayObject; 57 addChild(app); 58 } 59 } 60 } 61 62
代码
 
  
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 进度条: 2 3 package 4 { 5 import flash.display.Sprite; 6 import flash.text.TextField; 7 8 public class PreLoader extends Sprite 9 { 10 public function PreLoader() 11 { 12 var t:TextField = new TextField(); 13 t.border = true ; 14 t.text = " loading...... " ; 15 16 addChild(t); 17 } 18 19 public function setProgress(loaded:uint,total:uint): void 20 { 21 var t:TextField = getChildAt( 0 ) as TextField; 22 t.text = " load: " + loaded / 1000 + " / " + total / 1000 ; 23 24 trace( " load: " + loaded / 1000 + " / " + total / 1000 ); 25 } 26 } 27 } 28
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值