WEB开发网
开发学院图形图像Flash Think in ActionScript 3.0Ⅱ 阅读

Think in ActionScript 3.0Ⅱ

 2009-05-30 12:08:03 来源:WEB开发网   
核心提示: 首先创建 Animal 类,定义两个方法 call() 和 sleep(),Think in ActionScript 3.0Ⅱ(6),它的子类 Cat 和 Dog 分别重写了这两个方法,并且都扩展了出了一个新的方法 eat(),如果是 Cat 就将它向下转型为一个 Cat,这样就可以安

首先创建 Animal 类,定义两个方法 call() 和 sleep(),它的子类 Cat 和 Dog 分别重写了这两个方法,并且都扩展了出了一个新的方法 eat()。

来看测试类,new 出来一个 cat,再将它向上转型 animal:Animal = Animal(cat)。由于向上转型是安全的,所以这样做没有问题,但是当它转型成了父类对象后,就不能再调用 eat() 方法了,因为在父类中只有call() 和 sleep() 方法,父类对象不能调用子类扩展出的新方法。

接下来一段代码是在进行向下转型,animal 这个对象可以是一个放一个 dog 也可以放一个 cat,当这两种情况都有可能时,进行向下转型就要判断一下当然对象到底是哪个类型的,使用“is”进行判断,看看该对象是不是一个 Cat 或 Dog,如果是 Cat 就将它向下转型为一个 Cat,这样就可以安全地调用 Cat 的 eat() 方法了。

最后再举一个现实中的例子 TestEventCast.as :

package {
  import flash.display.Sprite;
  import flash.events.Event;
  public class TestEventCast extends Sprite {
    public function TestEventCast() {
      var ball:Sprite = new Sprite();
      ball.graphics.beginFill(0xff0000);
      ball.graphics.drawCircle(0,0,50);
      ball.graphics.endFill();
      ball.y = 150;
      ball.x = 150;
      addChild(ball);
      ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
        private function onEnterFrame(evt:Event):void {
    // evt.target 是 Object 类型的,需要转型成为实际类型才能使用 x 属性
      var ball:Sprite = Sprite(evt.target);
      ball.x += 5;
    }
  }
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Think in ActionScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接