我收到了这个ActionScript 2代码:
fuseModel = [{mx:0, my:-5.5, x:0, y:-4, pen:.5, clr:0x000033, alpha:50}];
MovieClip.prototype.setModel = function(m)
{
this.drawModel(m);
}
MovieClip.prototype.drawModel = function(m)
{
var pt = m[0];
beginFill(pt.bf, pt.bfa);
lineStyle(pt.pen,pt.clr,pt.alpha);
lineTo(100,100);
endFill();
}
_root.createEmptyMovieClip("ship_mc", 2);
ship_mc.setModel(fuseModel);
这段代码只是画一条线(为简单起见,我删除了其他600行代码)。
我试图了解调用MovieClip.prototype.setModel方法的位置。看起来像nowehere,但是,如果我删除它,就不会绘制线条。
那么,谁在调用MovieClip.prototype.setModel()?
- 更新
看起来ship_mc.setModel(fuseModel)
正在调用它,所以对于MovieClip的每个实例,setModel都会存在?它没有意义,因为它不在MovieClip中,而是在MovieClip.prototype中。
答案 0 :(得分:1)
在ActionScript 2(以及ActionScript 1和JavaScript)中,您可以向对象原型添加方法,然后该类的所有对象(该类)将具有该方法。您可以将原型视为类定义,因此在您的代码中,定义MovieClip.prototype.setModel和MovieClip.prototype.drawModel就像向MovieClip类添加方法。