我正在使用Box2d-Jquery編寫一個簡單的遊戲。默認情況下,可以通過單擊並拖動這些相應的元素來處理DOM元素的位置。如何禁用鼠標事件,以免鼠標點擊干擾元素的移動?提前致謝。Box2d-jquery:禁用鼠標事件
1
A
回答
1
我怕你可以發表評論的方法體
updateMouseDrag = function() {
/*var body, md;
if (isMouseDown && (!mouseJoint)) {
body = getBodyAtMouse();
if (body) {
md = new b2MouseJointDef();
md.bodyA = world.GetGroundBody();
md.bodyB = body;
md.target.Set(mouseX, mouseY);
md.collideConnected = true;
md.maxForce = 300.0 * body.GetMass();
mouseJoint = world.CreateJoint(md);
body.SetAwake(true);
}
}
if (mouseJoint) {
if (isMouseDown) {
return mouseJoint.SetTarget(new b2Vec2(mouseX, mouseY));
} else {
world.DestroyJoint(mouseJoint);
return mouseJoint = null;
}
}*/
};
此方法將創建一個由Box2D的支持,以在世界的屍體處理鼠標事件鼠標接頭。
或者只是在update()方法中調用updateMouseDrag()。 update()是遊戲循環方法。
1
這是種古老的問題,但我今天晚上想通了:
Box2D的jQuery也沒有設置任何DOM訪問用戶數據,所以我們要設置一些。
在您的$('element')。box2d中,將一個選項'mouseEnabled'設置爲true/false。
然後,在
$.fn.extend({
box2d: function(options) {
添加的選項:
mouseEnabled = opts['mouseEnabled'];
userData = {
mouseEnabled:mouseEnabled,
//Add additional options here
}
之下可以找到,說
createDOMObjects(absolute_elements, shape, static_, density, restitution, friction);
行並追加用戶數據的參數,以便它說:
createDOMObjects(absolute_elements, shape, static_, density, restitution, friction, userData);
NEXT
查找createDOMObjects並追加到用戶數據的參數
createDOMObjects = function(jquery_selector, shape, static_, density, restitution, friction, userData) {
現在,您將需要用戶數據添加到每個機構的b2BodyDefinitions。 因此將userData附加到createBox和createCircle。 像這樣在兩個創建函數中將userData應用於BodyDef: bodyDef.userData = userData;
如果你做得對,如果你註銷getBodyAtMouse();你會看到m_userData不再爲空!
最後 在updateMouseDrag中,添加一個返回是userData的mouseEnabled爲false!
if (body) {
console.log(body.m_userData)
if(body.m_userData.mouseEnabled == false){return;}
md = new b2MouseJointDef();
md.bodyA = world.GetGroundBody();
md.bodyB = body;
md.target.Set(mouseX, mouseY);
md.collideConnected = true;
md.maxForce = 300.0 * body.GetMass();
mouseJoint = world.CreateJoint(md);
body.SetAwake(true);
}
VOILA! 現在,無論您在何處檢測box2D元素,只需將mouseEnabled添加到它!
$(".block").box2d({'y-velocity':10, 'mouseEnabled':false});
如果您想在runTime期間更改mouseEnable,只需將body.m_userData.mouseEnabled設置爲任何值!
相關問題
- 1. 禁用鼠標事件 - Pygame
- 2. Excel vba - 禁用鼠標事件
- 3. 禁用鼠標事件和進度條
- 4. 禁用jQuery qTip鼠標事件
- 5. 禁用鼠標移動事件
- 6. 在標籤上禁用鼠標事件(啓用時)
- 7. 鼠標禁用
- 8. 鼠標事件
- 9. Qt 4.4:禁用的小部件接收鼠標事件
- 10. 使用Fabric.js啓用和禁用畫布的鼠標事件
- 11. 鼠標事件使用jquery
- 12. 使用jquery禁用鼠標事件的方法?
- 13. HighCharts:基於鼠標點擊事件啓用/禁用tootip
- 14. PyHook鼠標事件
- 15. silverlight鼠標事件
- 16. prism4:鼠標事件
- 17. ILNumerics鼠標事件
- 18. 鼠標事件QT
- 19. Jquery鼠標事件
- 20. 鼠標事件BHO
- 21. jquery鼠標事件
- 22. jquery鼠標事件
- 23. JAVA鼠標事件
- 24. NSWindow鼠標事件
- 25. 鼠標事件的怪事
- 26. Flash/AS3 - 如何在不禁用鼠標懸停事件的情況下禁用子SWF鼠標點擊
- 27. SVG組鼠標懸停/鼠標事件
- 28. 禁用TComboBox中的鼠標滾輪和鍵盤事件
- 29. 如何禁用JTable單元格上的鼠標點擊事件?
- 30. 如何檢測WPF DataGridCell禁用時的鼠標雙擊事件?
非常感謝。工作就像一個魅力! – scarecrow