快速业务通道

《Flash ActionScript 2.0-RIA应用程式开发》静态-概念与例子

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


注:以下引用出自<Flash ActionScript 2.0-RIA应用程式开发>,引用已得到本书作者:Luar的允许. 出自:http://www.cnflash.org/guohaifeng/blogview.ASP?logID=18
对一个成员除了可以指明是私有或公有外,更可以指明它是否静态.
静态成员只存于类中,不会存于实体中,由于类只有一个,所以静态成员可以成为一个给所有实体共用的数据地方.假设有一个Ball类,所有球的实体都是受地心吸力影响,如果每个实体都记录了地心吸力属性gravity=9.8,只是浪费内存.不如将属性gravity设定为静态,放在类里,统一给所有实体共用.
注意:
当静态属性被改变了,所有实体都受影响,例如其中一个实体通过其方法将属性gravity改为23.128(或者类中属性gravity被直接修改),所有球的实体便变成了处于木星,受了木星地心吸力影响.
属性和方法都可以设定为静态,只要在”private/publie”后加上”static”这关键字.
例如,建立Ball类,代码如下:
以下内容为程序代码:
class Ball
{
public static var gravity:Number=9.8;
private static var ballno:Number=0;
function Ball()
{
ballno++;
}
}
新建一个Ball.fla文件,加入下面的代码,建立一个球的实体:
以下内容为程序代码:
myBall1 =new Ball();
trace(myBall1.gravity); //undefined
结果是undefined,虽然属性gravity是公有成员,但它是静态,只存于类,不存于属性,所以找不到它. 如果在Ball类加入隐含get方法:
以下内容为程序代码:
public function get _g():Number
{
return gravity;
}
在Ball.fla文件,加入代码:
以下内容为程序代码:
trace(myBall1._g); //9.8
结果是9.8,说明静态成员是经实体共用,但又不存于实体中. 如果在Ball类(Ball.as)加入隐含set方法:
以下内容为程序代码:
public function set _g(n:Number):Void
{
gravity=n;
}
在Ball.fla文件,再建立一个球的实体,并修改地心吸力为12:
以下内容为程序代码:
myBall2=new Ball();
myBall2._g=12;
trace(myBall1._g); //12
trace(myBall2._g); //12
结果不单是myBall2的地心引力变了,连myBall1的地心吸力都变了,因为所有实体是共用同一个属性gravity.
关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号