试图理解这个ActionScript 2代码

时间:2010-08-16 20:50:59

标签: flash actionscript actionscript-2

我收到了这个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中。

1 个答案:

答案 0 :(得分:1)

在ActionScript 2(以及ActionScript 1和JavaScript)中,您可以向对象原型添加方法,然后该类的所有对象(该类)将具有该方法。您可以将原型视为类定义,因此在您的代码中,定义MovieClip.prototype.setModel和MovieClip.prototype.drawModel就像向MovieClip类添加方法。