new Point( 10, 20 );
这段代码在animal移动时会记录一条跟踪信息。在ActionScript中,你可以定 义任何类型的消息。大多数的类都是EventDispatcher类,你可以为它们的事件添 加******。
接口
就像Java一样,ActionScript 3语言也支持接口,并使用类来实现它们。下面 的示例中,就是一个我们可以用Animal类来实现的接口:
package com.jherrington.animals
{
import flash.geom.Point;
public interface IAnimal
{
function get name() : String;
function set name( n:String ) : void;
function get location() : Point;
function set location( pt:Point ) : void;
}
}
Java程序员ActionScript 3入门(4)
时间:2011-05-20 infoq.com Jack Herrington 译:张凯
在这个例子中,我为接口定义了两个可以set和get的成员变量。没错,你可以 在ActionScript接口中定义方法和成员变量。是不是很酷?
为了实现这个接口,我对Animal类做了一点修改。请看示例:
package com.jherrington.animals
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.geom.Point;
public class Animal extends EventDispatcher implements IAnimal
{
private var myName:String = "";
public function get name() : String
{
return myName;
}
public function set name( n:String ) : void
{
myName = n;
dispatchEvent( new Event( Event.CHANGE ) );
}
private var myLocation:Point = new Point(0,0);
public function set location ( pt:Point ) : void {
myLocation = pt;
dispatchEvent( new Event( Event.CHANGE ) );
}
public function get location( ) : Point {
return myLocation;
}
public function Animal( _name:String )
{
name = _name;
}
}
}
当然,我也可以为这个类添加特定的变量和方法,或者实现除了IAnimal接口 之外的其他接口。但是和Java一样,我只能继承一个基类。
静态和常量
ActionScript 3支持常量和静态成员变量,以及静态方法。常量定义起来很方 便,请看示例:
public const MINIMUM_AGE:int = 0;
public const MAXIMUM_AGE:int = 2000;
常量可以是你期望的任何类型,但它们必须是在编译时定义。如果你愿意,你 也可以把它们定义成受保护的或者是私有的作用域。
为了演示一下静态方法,我在Animal类中写了一个工厂方法:
public static function buildAnimal( n:String ) : IAnimal {
return new Animal( n );
}
Java程序员ActionScript 3入门(5)
时间:2011-05-20 infoq.com Jack Herrington 译:张凯
使用静态方法的另外一种方式是单例模式。下面就是一个针对Animal类的单例 工厂类:
package com.jherrington.animals
{
public class AnimalFactory
{
private static var _factory:AnimalFactory = new AnimalFactory();
public static function get instance() : AnimalFactory {
return _factory;
}
public function build( n:String ) : Animal {
return new Animal( n );
}
}
}
我使用该单例工厂的instance成员变量来获得其对象,并调用它:
private var b:Animal = AnimalFactory
|