注册
 找回密码
 注册
江西广告网
查看: 579|回复: 0
打印 上一主题 下一主题

AS2.0的私有,公有成员,类继承和as嵌套

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-5-2 13:08:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
AS2.0和JAVA.C#一样.也运用OOP模式.哪它一定就有继承.子类父类超类的分别.学过 JAVA,C#的人很快就能理解. 这里说的类继承指一个class类能够继承另一个class类的全部方法和属性.在说AS2.O的 类继承方法前.先说一下什么是.private(私有性成员)和public(公有性成员) AS2.0建立在class中的所有变量,方法,属性默认都是公有性的.我们当然也可以定义为私有 性的.比如一个变量.或方法.我并不想在FLA文件中用到.而只是在class类中作为一个函数或 私有方法为这个class文件所用.就要用到private 定义为私有性 举例: 建立一个名为test_private.as的class类文件: class test_private { private var tmp1:String; //声明tmp为私有变量 public var tmp2:String; //不加public默认都为公有变量 function test_private() { tmp1 = "私有变量"; //赋值 tmp2 = "公有变量"; } } 然后你在fla文件Layer1中调用这个class var myclass:test_private = new test_private(); trace("tmp1=" myclass.tmp1); trace("tmp2=" myclass.tmp2); 将会出现检测到一个私有成员不能被防问的错误.指向在tmp1这个private变量上. 现在我们把fla里的代码改一下再运行: var myclass = new test_private(); trace("tmp1=" myclass.tmp1); trace("tmp2=" myclass.tmp2); 这次运行通过.显然区别就在于.定义class对象时如果定义引用class类的 type 类形,FLASH 将会检测到类中哪些为公有性和私有性的成员.我们也可以把方法.自定义函数定义成为类私有成员;这样做的好处.私有成员不会被前台调用.也防止一些变量或函数方法的被恶意 调用. 下面说的是类继承: 比如说.我建立的一个类的方法,属性,变量想被别一个class调用.而我又不想在另一个类中 重复写代码.就要用到继承.再比如说一个类在flash运行中.行到一个动态的变量.而我的另 一个类文件运行时想调用这个动态的变量.就要给这两个类文件建立一个关系. 说简单点:父类与子类关系.或者是爷爷类,父类.子类关系.他们都有一些相同的特性.而自 己本身也可以有自己的特性.相同的特性都可以使用. 举例: 建立一个fla文件.一个名为txt的文本框.一个名为square的方块mc,两个按钮 //建立一个test1.as的类文件 class test1 { private var hide_txt:String; private var show_txt:String; private function hide_sq() { _root.square._visible = false; } private function show_sq() { _root.square._visible=true; } } 他有两个私有方法,和两个私有String变量,作用是显示和隐蔽MC square; 建立一个test2.as的类文件,我们要用这个类文件继承test1.as的所有成员 class test2 extends test1 { function test2() { hide_txt = "隐藏"; //继承了test1的变量,我们可以给他赋值 show_txt="显示"; } } 现在我们在fla中调用test2.as的继承类来实现test1.as中的方法; 在一个button上的as中写入以下代码,用来隐藏和显示信息 on (release) { var myclass= new test2(); myclass.hide_sq(); //继承了test1.as中的方法 txt.text = myclass.hide_txt; //这是在test2.as中赋值的test1.as中的变量,说明继承之后变更为自己的特性 } 在另一个button上AS中写上以下: on (release) { var myclass = new test2(); myclass.show_sq(); txt.text = myclass.show_txt; } 我们还可以在test1.as中加入新的方法.既可作为独立的类同样也是一个继承类. 说完继承类.再来说as文件嵌套.在flashmx中曾用到过#include "filename.as" 方式.如果用Flash Remoting就要引用 #include "NetDebug.as"等文件. 其实.很象继承类.在一个as文件嵌套引用另一个as文件中的方法. 但是flash mx 2004中,as文件嵌套和继承类写法不一样. 举例: 建立test3.as文件如下: var hide_txt:String; var show_txt:String; function hide_sq() { _root.square._visible = false; } function show_sq() { _root.square._visible=true; } 建立test4.as文件如下: class test4 { #include "test3.as" //这里引用test3.as文件.注意没(;)号结尾不然会出现一个语法错误 funct
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表