ActionScript3.0基础(一)


访问控制属性:

public:公有属性

private:私有类型的变量和方法只允许定义它们的类访问,其他类访问报错,包括子类

internal:内部对象既不是公有类型也不是私有类型,与定义对象的类具有相同类包的类才可以访问,也就是说,拥有相同包声明(例如 package {...}的任何类都可以调用方法或访问变量)

protected:内部类型将访问权限限制为其他特定的类,而受保护类型与此类似,只有子类可以访问受保护类型的对象。

作用域:

全局作用域:根时间轴中或在函数和类外部定义的任何对象都属于全局作用域。(不提倡将对象定义在时间轴中)

局部作用域:根据对象的定义方式,局部访问(或子作用域)可分为几个不同的级别

类级(静态)变量和方法

这些对象存在于类级作用域中;换句话说,它们属于类本身,而不是类的实例,可以使用static关键字来定义这些对象

package{

      public class ScopeTest{

             public static var foo:String = "bar";

}

}

可以使用类名加对象名来访问这些对象。

trace(ScopeTest.foo);

在类中定义的代码无需使用类名便可直接使用这些变量和方法,但是类的所以实例都共享相同的静态值。由于类在任何地方都可使用(只要导入了类并将它声明为public),因此类级变量与全局变量具有相同的作用。

实例级变量和方法

类还可以定每个类实例中的变量和方法。在开发过程中,大多数变量和方法都属于该作用域

package{

      public class ScopeTest{

public static var foo:String = "bar";

public var answer:Number = 42;

}

}

与静态变量不同,实例变量对于类的各个实例都是相互独立的

要访问实例变量,可以使用实例名加点再加变量名,如下所示:

var myTest:ScopeTest = new ScopeTest();

trace(myTest.answer)

注意:实例本身被删除时,所有实例变量都将自动从内存中释放,但是,如果其他对象引用了这些变量,则它们可以保留在内存中。如果程序在内存管理方面存在问题,那么删除实例前最好先移除到类及其成员的所有引用。

函数级变量和函数

对象也可以在函数中定义,每个函数都将在运行期间创建一个临时的作用域。函数中定义的变量可用于暂时存储值,并且将在函数运行结束之后删除。

package{

      public class ScopeTest{

public static var foo:String = "bar";

public var answer:Number = 42;

public function showGreeting():void{

    var message:String = "Hello ,world!";

     trace(message);

}

}

}

var myTest:ScopeTest = new ScopeTest();

myTest.showGreeting();

trace(myTest.message);

(message变量的生存期只限于showGreetiong()函数的执行期间)

函数中定义的变量只有在函数开始执行后才可以使用。在类中定义的变量可以从函数内部访问,反过来则不行.

package{

    public class Local{

         public var a:String = "instance";

         public var b:String = "instance";

         public function method():void{

              var a:String = "function";

               b = "function";

                trace(a);

                trace(b);

}

}

}

对于a,函数自己定义了一个名为a的变量,它所定义的函数级变量将临时覆盖实例变量a。

而对于b,函数中使用的是实例变量(因为未使用var关键字)并且被赋了新值function.

建议在引用与函数变量同名的实例变量时使用this关键字:

public function setFoo (foo:String):void{

this.foo = foo;

}

调用foo的实例变量将被覆盖为传递到该方法中的值

使用作用域

通常,应尽可能地将变量定义在较低的局部作用域中。局部变量更易于垃圾回收,因为可以减少开销,但这并不意味着在任何情况下都可盲目地使用函数变量

XML注释,起始和结束标记之间的内容中不能包含--字符串

小结:ActionScript以变量的使用为基础,而变量从本质上说就是在程序运行过程中保存数据的容器

你可能感兴趣的:(ActionScript3.0基础(一))