当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > AS2.0的私有,公有成员,类继承和as嵌套

Flash动画制作
Flash卡通景物绘制
鼠绘偏写实人物
鼠绘--柱顶红的画法
FLASH实现滚动条+网页书签效果
Flash MX中Button Object的用法
as入门之数学函数--弧度
as入门之数学函数--Math类
闪动的变色圆盘
组件封装为mxp文件的方法
判断数字大小
Flash 缓存问题的解决
Flash MX pro 2004 新特性之Flash Lite
在Flah MX2004的ListBox中应用HTML
Flash MX 2004中的XML应用之原理篇
Flash MX 2004视频教程超速入门系列(1)
Flash MX 2004视频教程超速入门系列(2)
Flash MX 2004视频教程超速入门系列(3)
Flash MX 2004视频教程超速入门系列(4)
Flash MX 2004视频教程超速入门系列(5)
Flash MX 2004视频教程超速入门系列(6)

Flash动画制作 中的 AS2.0的私有,公有成员,类继承和as嵌套


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 71 ::
收藏到网摘: n/a

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"
方式.如果用 Remoting就要引用 #include "NetDebug.as"等文件.
其实.很象继承类.在一个as文件嵌套引用另一个as文件中的方法.
但是flash mx 2004中,as文件嵌套和继承类写法不一样.
举例:

建立tes