2016-11-13 49 views
0

鼠標/觸摸事件,一個人怎麼會去加入編程方式觸發觸摸/鼠標事件Matter.js?我已經建立了發動機的幾個衝突事件,但不能觸發停止當前的拖動操作mouseUp事件。我已經嘗試了各種針對canvas元素,mouse/mouseConstraint和非靜態主體的組合。引發Matter.js

回答

0

原來我已經不正確配置的Matter.Mouse模塊,並重新分配該已經在MouseConstraint設置鼠標輸入。在關於以下工作我原來的問題:

Matter.mouseConstraint.mouse.mouseup(event); 
0

如果你和我一樣,來到這裏,試圖找出如何能夠點擊一個Matter.js體對象上,讓我給你一個方法。我在我的項目中的目標是爲我的矩形對象分配一些屬性,並在點擊它們時調用一個函數。

做的第一件事情是拖拽和點擊來區分,所以我寫了(使用jQuery):

 $("body").on("mousedown", function(e){ 
     mouseX1 = e.pageX; 
     mouseY1 = e.pageY; 
    }); 

    $("body").on("mouseup", function(e){ 
     mouseX2 = e.pageX; 
     mouseY2 = e.pageY; 
     if((mouseX1 == mouseX2) && (mouseY1 == mouseY2)){ 
       //alert("click!\n" + mouseX2 + " " + mouseY2 +"\n"); 
       var bodiesUnder = Matter.Query.point(books, { x: mouseX2, y: mouseY2 }); 
       //alert("click!\n" + mouseX2 + " " + mouseY2 +"\n"); 

       if (bodiesUnder.length > 0) { 
       var bodyToClick = bodiesUnder[0]; 
       alert(bodyToClick.title2); 
      } 
     } 
    }); 

這被監聽「鼠標鬆開」,並詢問是否((mouseX1 == mouseX2完成時)& &(mouseY1 == mouseY2))。

其次,多汁的部分 - 創建一個var數組來保存對象或'body',我們將在鼠標下挖掘。謝天謝地有這個功能:

var bodiesUnder = Matter.Query.point(books, { x: mouseX2, y: mouseY2 }); 

對於這裏的第一個元素,我進入了「書籍」。對於你來說,這需要你將所有的對象或'body'放入數組的名稱。如果沒有他們的陣列,它不是很難在把他們所有的,就像這樣:

var books = [book1, book2, book3]; 

一旦全部完成,我能提醒(book1.title2),看看有什麼那本書(正文)的標題是。我的身體編碼如下:

 var book2 = Bodies.rectangle(390, 200, 66, 70, { 
     render : { 
      sprite : { 
       texture: "img/tradingIcon.jpg" 
      } 
     }, 
     restitution : 0.3, 
     title1 : 'Vanessa and Terry', 
     title2 : 'Trading' 
    }); 

希望幫助!這一個讓我掛了一整天。