Flex自定义Loading界面

这个方法网上已经有人写过例子...
在这里我只是自己做个实例并记录一下..
首先~自定义Flex加载的原理其实就是继承mx.preloaders.DownloadProgressBar类..然后重写相关的方法..

查看源码打印关于此插件

01.package

02.{

03. import flash.display.*;

04. import flash.events.*;

05. import flash.net.*;

06. import flash.text.TextField;

07. import flash.text.TextFormat;

08.

09. import mx.events.FlexEvent;

10. import mx.preloaders.DownloadProgressBar;

11.

12. public class LoadingExampleProgressBar extends DownloadProgressBar

13. {

14. private var logo:Loader;

15. private var txt:TextField;

16. private var _preloader:Sprite;

17. public function LoadingExampleProgressBar()

18. {

19. logo = new Loader();

20. logo.load(new URLRequest("l4cd.png"));

21. addChild(logo);

22.

23. var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");

24. txt = new TextField();

25. txt.defaultTextFormat = style;

26. txt.width = 200;

27. txt.selectable = false;

28. txt.height = 20;

29. addChild(txt);

30.

31. super();

32. }

33. //最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~

34. override public function set preloader(value:Sprite):void{

35. _preloader = value

36. //四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕

37. _preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);

38. _preloader.addEventListener(Event.COMPLETE,load_complete);

39. _preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);

40. _preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);

41.

42. stage.addEventListener(Event.RESIZE,resize)

43. resize(null);

44. }

45. private function remove():void{

46. _preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);

47. _preloader.removeEventListener(Event.COMPLETE,load_complete);

48. _preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);

49. _preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);

50. stage.removeEventListener(Event.RESIZE,resize)

51. }

52. private function resize(e:Event):void{

53. logo.x = (stage.stageWidth - 40)/2;

54. logo.y = (stage.stageHeight - 80)/2;

55. txt.x = (stage.stageWidth - 200)/2;

56. txt.y = logo.y + 40+5;

57.

58. graphics.clear();

59. graphics.beginFill(0x333333);

60. graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);

61. graphics.endFill();

62. }

63. private function load_progress(e:ProgressEvent):void{

64. txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";

65. }

66. private function load_complete(e:Event):void{

67. txt.text = "加载完毕!"

68. }

69. private function init_progress(e:FlexEvent):void{

70. txt.text = "正在初始化..."

71. }

72. private function init_complete(e:FlexEvent):void{

73. txt.text = "初始化完毕!"

74. remove()

75. //最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~

76. dispatchEvent(new Event(Event.COMPLETE))

77. }

78. }

79.}

自定义了加载类后..我们新建一个app测试一下..

查看源码打印关于此插件

1.<?xml version="1.0" encoding="utf-8"?>

2.<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"

3. preloader="LoadingExampleProgressBar"

4. backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#333333, #333333]">

5.</mx:Application>

6.//请自行增加一“大”体积的东西..必放到网上去测试...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值