0

在此处使用 Box2djs 插件: http ://www.crackin.com/dev/mms/physics/

...而我要做的就是用图像纹理填充球对象。我希望它像设置 css 值一样简单,但我似乎做得不对,因为标准背景相关的 css 规则都没有改变球。使用 math.random 我可以创建 5 个不同的类名来应用于每个球以创建不同的纹理对象。

这是它现在看起来的一个例子,与我可以使用图像使它们看起来像的东西相比: M&M Mock Image

这是我正在使用的物理引擎的特定构建... github.com/hrj/box2d-js ...它使用的是jQuery而不是Prototype。

4

1 回答 1

0

我一直在玩 Box2DJS 并且认为我已经找到了实现它所需的一切(例如碰撞检测挂钩等)。这是我编写的一段代码,用于集成一个框或圆形图像来代替框或圆形对象:

if ( myBallImage )
    {
    for ( aBody = world.m_bodyList; aBody != null; aBody = aBody.m_next )
        {
        var jellyObject = aBody.GetUserData();
        if ( typeof(jellyObject) != "object" || jellyObject == null )
            continue;

        var position = aBody.GetCenterPosition();
        var angle = aBody.GetRotation();
        var mass = aBody.GetMass();
        var halfheight = 0;
        var halfwidth = 0;

        for ( aShape = aBody.GetShapeList(); aShape != null; aShape = aShape.m_next )
            {
            halfheight = aShape.GetHalfHeight();
            halfwidth = aShape.GetHalfWidth();
            }

        ctx.save();
        ctx.translate( position.x, position.y );
        ctx.rotate( angle );
        ctx.translate( -halfwidth, -halfheight );   // halfwidth, halfheight

        if ( jellyObject.shape == "MYBALL" )
            ctx.drawImage(myBallImage, 0, 0, halfwidth*2, halfheight*2 );
        else
        if ( jellyObject.shape == "MYBOX" )
            ctx.drawImage(myBoxImage, 0, 0, halfwidth*2, halfheight*2 );

        ctx.restore();
        }
    }
else
    {
    myBallImage = new Image();
    myBallImage.src = 'circle.gif';

    myBoxImage = new Image();
    myBoxImage.src = 'box.gif';
    }
于 2012-01-21T18:32:12.753 回答