AS3中的原型继承介绍

作者:闪刀浪子   www.iflashigame.com   http://hi.baidu.com/mr_ziqiang

原型继承是早起AS版本所使用的集成方式,在AS3中允许两种方式的集成——类继承和原型继承

原型继承的基本原理:
每种类都有一个关联的原型对象,而原型对象的属性由该类的所有实例共享。 在创建一个类实例时,它具有对其类的原型对象的引用,这将作为实例及与其关联的类原型对象间的链接。 运行时,如果在类实例中找不到某属性,则会检查委托(该类的原型对象)中是否有该属性。 如果原型对象中不包含该属性,该过程会继续在层次结构中连续的更高级别上对原型对象进行委托检查,直至 Flash Player 找到该属性为止。


看一段代码:
Sprite.prototype.copyright="www.iflashigame.com";

var sp:Sprite=new Sprite;
trace((sp as Object).copyright);    //输出www.iflashigame.com

如果不用类型声明也可以写成这样:
Sprite.prototype.copyright="www.iflashigame.com";

var sp=new Sprite;
trace(sp.copyright);

需要注意的是如果是非动态类那么为类原型添加的属性会成为一个只读属性,例如:

Sprite.prototype.copyright="空";

var sp=new Sprite;
var mc=new MovieClip;

trace(sp.copyright);    //输出 "空"
trace(mc.copyright);   //输出 “空",由于MovieClip继承自Sprite,所以也能得到属性

sp.copyright="www.iflashigame.com";      //报错了,无法为 flash.display.Sprite 创建属性 copyright。
mc.copyright="www.iflashigame.com";    //新的值将覆盖继承过来的

trace(sp.copyright);         //无法赋值,还是输出 "空";
trace(mc.copyright);        //输出"www.iflashigame.com";
trace(Sprite.prototype.copyright);     //没有改变,还是输出 ”空"

了解了原型继承原理,可以帮助我们在某些特殊场合应付一些特殊的需求。

比如最近在一个游戏设计需求中就可以用这种办法解决,
看这篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值