Think in ActionScript 3.0Ⅱ
2009-05-30 12:08:03 来源:WEB开发网首先创建 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;
}
}
}
Tags:Think in ActionScript
编辑录入:爽爽 [复制链接] [打 印]- ››include指令与<jsp:include>动作的区别
- ››Intent和IntentFilter详解
- ››thinkphp上传错误解决方法
- ››ActionScript 2.0中的! 逻辑 NOT 运算符
- ››Interface继承至System.Object?
- ››input按钮在IE浏览器的兼容
- ››ActionScript 3.0 性能方面优化小知识整理收集
- ››Intent调用大全
- ››IntentService实现原理及内部代码
- ››Internet Explorer 无法打开
- ››Intel和Nokia宣称MeeGo将比Android更加开放且方便...
- ››innerText、outerText、innerHTML、outerHTML的区...
更多精彩
赞助商链接