[AS3]as3中变量如何像as2一样定义成全局变量
在AS2中只要用_global就可以了,可是在AS3中怎么办?
在 AS 3.0 中已经没有这个概念了,把它们定义成一个类里的公开变量就OK!
- public class GlobalConstant
- {
- public static var req:URLRequest = new URLRequest("cuplayer.mp3");
- public static var sound_:Sound = new Sound(req);
- }
在别的类里直接GlobalConstant.req
另类方法,未验证:
我想到了在AS3中使用全局变量的方法:
[b][color=Red][code]Stage.prototype.var1 = 'Stage-var1'[/code][/color][/b]
原理是:
1.使用:
%类名.prototype.%成员名 = %值的方法在原型链上添加成员,
然后就可以通过
%类名.prototype.%成员名
%类实例.[%成员名]
这两种方法之一即可访问这个静态成员.
2.我们同时又知道SWF文件在执行时总是有一个Stage的实例存在的,并且访问到他很容易(任何一个加入DisplayList的DisplayObject的stage属性即是对他的引用).
由以上两点可得:
使用Stage.prototype.%成员名给Stage类添加一个静态成员,然后就可以在随便什么地方访问那个成员,这个成员就跟全局变量的作用范围没什么两样了.
扩充话题:
如果你需要很多全局变量,建议你专门写一个具有你所需变量的类,然后给他加到Stage的原型链上去,这样可以使用严格类型声名并且方便管理.
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例