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

2016-01-29 13:06 3 1 收藏

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

【 tulaoshi.com - Flash 】

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

来源:https://www.tulaoshi.com/n/20160129/1488920.html

延伸阅读
标签: flash教程
Java编程规则 包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导,鉴于AS2.0与Java的相似性,很多建议对As2.0同样有效,特摘选部分,希望对大家有所帮助: (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首...
在名字空间中声明类和成员函数 赵湘宁     虽然很多程序员都熟悉名字空间的概念,但他们常常都是被动地使用名字空间。也就是说他们使用的是第三方定义的成员(如标准库的类和函数),而不是在名字空间中声明自己的类和函数。本文拟讨论如何在名字空间中声明自己的类和函数,以及如何在程序中使用它们。 ...
标签: Web开发
一.类的定义: 1.混合的构造函数/原型:  程序代码 function Parent(name) {     //实例属性     this.name = name; } //实例方法 Parent.prototype.hello = function () {     alert("parent!"); } //类属性 Parent.PI = 3.14159; //类方法 Parent.say = function () {   &...
函数指针(全局函数/类成员函数)、函数对象(Function object) 一. 函数指针类型为全局函数.以下是引用片段: #include "stdafx.h" #include  using namespace std; class TestAction; typedef void (*fp)(int); void Drink(int i) { cout"No. "&nb...
在前面的练习中我们一直在使用public的继续方式,即共有继续方式,对于protected和private继续方式,即保护继续与私有继续方式我们并没有讨论。 !-- frame contents -- !-- /frame contents -- 对于单个类来说,讨论保护继续与私有继续的区别意义是不大的,他们的区别只在多级继续的情况中体现。 在这里我声明一下,...

经验教程

511

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部