box2d tick功能不起作用

时间:2015-04-12 22:13:32

标签: box2d easeljs

我是使用javascript进行游戏开发的新手,我跟随一个教程,其中使用了easeljs和box2d创建一个弹跳球。 我编写了与视频教程中显示的相同的代码,但是球没有动画

(function(window){      
function Ball(){                    
    this.view = new createjs.Bitmap("soccer.png")
    this.view.regX = this.view.regY = 50;

    var fixDef = new box2d.b2FixtureDef();
    fixDef.density = 1;
    fixDef.friction = 0.5;
    fixDef.restitution = 0.8;
    var bodyDef = new box2d.b2BodyDef();
    bodyDef.type = box2d.b2Body.b2_dynamicBody;
    bodyDef.position.x = Math.random()*800 / SCALE;
    bodyDef.position.y = 0;
    fixDef.shape = new box2d.b2CircleShape(50 / SCALE);
    this.view.body = world.CreateBody(bodyDef);
    this.view.body.CreateFixture(fixDef);
    //this.view.addEventListener("tick", tick); 
    this.view.onTick = tick;        
}

function tick(event){       
    this.x = this.body.GetPosition().x * SCALE;
    this.y = this.body.GetPosition().y * SCALE;
    this.rotation = this.body.GetAngle() * (180/Math.PI);
}
window.Ball = Ball;
})(window);

它表示this.view.onTick = tick;无效,因此我将其更改为this.view.addEventListener("tick", tick); 现在这给出了错误this.body未定义

1 个答案:

答案 0 :(得分:1)

问题解决了我使用了this.view.on("tick", tick, this.view);