2012-04-02 51 views
0

我正在使用box2dweb構建一個小型html5遊戲。我試圖在mousedown + mousemove上畫一條線。這些線條可以捕捉正方形,而目標是將正方形從網頁兩側的孔中彈出。Box2dweb繪製靜態線

我所能做的就是沿着鼠標X和鼠標Y繪製幾個方格來模擬實線,但我不覺得這是足夠的。任何人都可以幫助我理解如何繪製一條符合所需線條形狀的實線或單個多邊形?

正在進行的工作是在這裏http://acoolsip.com/html5/mobile/

目前正在處理鼠標點擊,鼠標移動和畫線的方法是這些功能。

function addClick(x, y, dragging) 
{ 
    clickX.push(x); 
    clickY.push(y); 
    clickDrag.push(dragging); 

    bodyDef.type = b2Body.b2_staticBody; 
    fixDef.shape = new b2PolygonShape; 
    fixDef.shape.SetAsBox(
     0.1 //Math.random() + 0.1 //half width 
     , 0.1 //Math.random() + 0.1 //half height 
    ); 

    //the position of the created object   
    bodyDef.position.x = x; 
    bodyDef.position.y = y;    

    //bodyDef.angle = 1; 
    world.CreateBody(bodyDef).CreateFixture(fixDef);  
} 



document.addEventListener("mousedown", function(e) { 
     isMouseDown = true; 
     mouseX = (e.clientX - canvasPosition.x)/30; 
     mouseY = (e.clientY - canvasPosition.y)/30;  
     addClick(mouseX,mouseY); 
}, false); 

document.addEventListener('mousemove', function(e) { 
    if(isMouseDown == true) 
    { 
     isMouseMoving = true; 
     e.preventDefault(); 
     mouseX = (e.clientX - canvasPosition.x)/30; 
     mouseY = (e.clientY - canvasPosition.y)/30; 
     addClick(mouseX, mouseY, true);   
    } 
}, false); 

謝謝你的幫助。

回答

0

沒有辦法繪製一條適用於所有瀏覽器的線條。 (除了直的垂直和水平直線)

我建議你使用像拉斐爾這樣的圖形庫。

編輯:這裏的拉斐爾網站:http://raphaeljs.com/

+0

我需要的box2dweb碰撞物理學添加到我得出這樣的正方形反彈行線。這與拉斐爾可能嗎? – oasisfleeting 2012-04-02 01:37:14

+0

看起來像box2dweb只做物理,而raphaeljs只做圖形。你的工作是將它們粘合在一起。我認爲目前還沒有很多開源的javascript遊戲引擎。 – JasonWoof 2012-04-02 01:43:09