扩展JavaScript类以在Canvas上使用

时间:2013-08-23 18:09:06

标签: javascript class extend createjs

我正在开展一个项目,以帮助我更好地理解JavaScript并使用它构建应用程序。我目前正在利用createjs制作游戏。我想通过添加一些额外的方法来扩展Shape“类”,但似乎无法理解这个问题。

我没有通过这种方法获得任何运行时错误,但是我认为它在某个特定点上无声地失败。

我的子类:

ShipGFX.prototype = new createjs.Shape();
    function ShipGFX()
    {
        createjs.Shape.apply( this );

        this.draw = function()
        {
            var g = this.graphics;

            g.clear();
            g.setStrokeStyle( 1 );
            g.beginStroke( createjs.Graphics.getRGB( 0x00ff00 ) );
            g.beginFill( createjs.Graphics.getRGB( 0x00ff00, 0.5 ) );
            g.moveTo( 0, 0 );
            g.lineTo( -5, -5 );
            g.lineTo( 10, 0 );
            g.lineTo( -5, 5 );
            g.lineTo( 0, 0 );
            g.endFill();
        }
    }

使用的地方:

var shape = new ShipGFX();
shape.draw();

因此控制台不会记录任何错误,我甚至可以通过draw命令进行记录。我认为问题是this.graphics的范围,即使它也没有失败。这是范围问题吗? this.graphics是对原型实例的引用(如果我理解正确的话)。我最好使用 Class-js ,因为我对它的工作方式有了更好的了解,但我甚至无法通过这种方式工作。

任何输入都会很棒。谢谢。

1 个答案:

答案 0 :(得分:0)

之所以失败是因为我没有意识到draw函数在createjs.Shape API中预先存在。将名称更改为“渲染”解决了我的问题。