|
AS工程中Loading的应用
首先..由于AS工程没有帧..所以不能用常用的方法来做Loading..这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签).
网上对Frame的介绍是...使用指定的类替换文档类...并把其它的东西都丢到了该类的第二帧...
概念就不多说了...英文好的可以看看这个文章... http://www.bit-101.com/blog/?p=946
先看看效果..(PS...Load完以后有CD的艳照喔...~~xixi);
放代码 Preloader类: 01.package 02.{ 03. import Flash.display.DisplayObject; 04. import flash.display.MovieClip; 05. import flash.display.StageScaleMode; 06. import flash.events.Event; 07. import flash.events.ProgressEvent; 08. import flash.text.TextField; 09. import flash.text.TextFormat; 10. import flash.utils.getDefinitionByName; 11. /** 12. * 加载类,由于原内容会放到此类的第二帧~所以需要使用MovieClip; 13. * @author L4cd.NET 14. */ 15. public class Preloader extends MovieClip 16. { 17. [Embed(source="l4cd_48_48.jpg")] 18. private var LOGOClass:Class; 19. private var text:TextField; 20. public function Preloader() 21. { 22. //不多说了 23. stage.scaleMode = StageScaleMode.NO_SCALE; 24. stage.showDefaultContextMenu = false; 25. //显示一张图片..非必要 26. with(addChild(new LogoClass())) 27. { 28. x=(500-48)/2; 29. y=(380-48)/2; 30. } 31. //加一个textField显示进度 32. text = addChild(new TextField()) as TextField; 33. with(text) 34. { 35. defaultTextFormat = new TextFormat("宋体",12,0,null,null,null,null,null,"center"); 36. mouseEnabled = false; 37. height = 16; 38. x = (500-100)/2; 39. y = 35+(380-15)/2; 40. } 41. //重要~侦听~ 42. loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress); 43. loaderInfo.addEventListener(Event.COMPLETE,complete); 44. } 45. //显示进度 46. private function progress(e:ProgressEvent):void 47. { 48. text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded"; 49. } 50. private function complete(e:Event):void 51. { 52. //重要..加载完后...我们跳转到第二帧 53. gotoAndStop(2); 54. //获取文档类...然后显示,对于此步操作..有多种方法..有人习惯直接把原文档类addChild到此类当中.. 55. var mainClass:Class = Class(getDefinitionByName("ASProjectLoadingExample")); 56. stage.addChild(new mainClass() as DisplayObject); 57. //删除此类 58. destroy(); 59. } 60. private function destroy():void 61. { 62. loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress); 63. loaderInfo.removeEventListener(Event.COMPLETE,complete); 64. parent.removeChild(this); 65. } 66. } 67.} ASProjectLoadingExample类:
01.package { 02. import Flash.display.Bitmap; 03. import flash.display.BitmapData; 04. import flash.display.Sprite; 05. import flash.geom.Matrix; 06. 07. [SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")] 08. //注意此行,Preloader为类名 09. [Frame(factoryClass="Preloader")] 10. public class AsProjectLoadingExample extends Sprite 11. { 12. [Embed(source="CD艳照.png")] 13. private var ImageClass:Class; 14. //嵌入一个2M的文件以显示加载效果 15. [Embed(source="something.wma",mimeType="application/octet-stream")] 16. private var SomeClass:Class; 17. public function AsProjectLoadingExample() 18. { 19. //马赛格ing... 20. var bmp:Bitmap = new ImageClass(); 21. var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0); 22. bit.draw(bmp,new Matrix(.1,0,0,.1)); 23. with (addChild(new Bitmap(bit))) 24. { 25. scaleX = scaleY = 10; 26. } 27. } 28. } 29.} 我们也可以先用Flash做好loading效果..然后再嵌入到AS工程里..(下面的loading来自Pretty Loaded) |
|
Time.2009-8-24 来源.http://www.gcity.com.cn 编辑.上海红提城信息科技有限公司
|
© 2002-2008 www.Gcity.com.cn 沪ICP备06055129号咨询热线:4008207959 021-33606181(红提城信息科技)
|