2013-05-08 52 views
0


cocos2d-html5 onMouseDown,如何在瀏覽器中獲得轉換位置?

在cocos2d-HTML5,
我可以用這個方法鼠標事件,

onMouseDown:function(event) { 
    var loc = event.getLocation(); 
    console.debug(loc); 
} 

所以在Chrome瀏覽器的控制檯,我可以看到點擊的位置。
但是,該位置不是cocos2d屏幕的位置。
位置是瀏覽器大小的相對位置。我的意思是,

參考圖像〜 enter image description here


不過,我想這樣的cocos2d-屏幕的相對位置,

enter image description here


有什麼辦法直接獲得該職位或任何方式轉換爲位置?


我的項目是基於瀏覽器而不是模擬器或手機。

回答

1

這是我的解決方案。

第一,你可以捕捉事件,

onMouseDown:function(event) { 
    var rawLoc = event.getLocation(); 
    var loc = this.getOnPanelPos(rawLoc); 

    //here you can do anything using converted loc 

}, 

其次,轉換COORDS。

getOnPanelPos: function(loc){ 

     var canvas = document.getElementById("gameCanvas"); 
     var canvasW = canvas.getAttribute("width"); 
     var canvasH = canvas.getAttribute("height"); 
     var scale = canvasH/960; 
     this.bubblePanScale = scale; 
     var scaleReverse = 960/canvasH; 
     var paddingX = (canvasW - 640*scale)/2; 
     var modifiedLoc = loc; 
     modifiedLoc.x = modifiedLoc.x - paddingX; 

     modifiedLoc.x *= scaleReverse; 
     modifiedLoc.y *= scaleReverse; 

     return modifiedLoc; 
    }, 

希望這有助於〜

0

您可以使用觸摸事件得到你想要的東西。這個事件也可以響應鼠標。這也是一個更好的跨平臺分辨率。

onTouchesEnded: function(touches, event){ 
var location = touches[0].getLocation(); 
console.log(location); 
this.changeAction(location); 
} 

這個位置是在顯示區域和負數正數出顯示區域的。

像這樣:

cc.Point {x: 48.58870967741938, y: 107.66129032258064} 
cc.Point {x: -286.491935483871, y: 71.37096774193549} 

確保在你的層設置的觸摸事件上:

this.setTouchEnabled(true); 
相關問題