Javascript 在gamequery中,我试图通过单击并拖动鼠标器来移动选定的对象
我知道我可以使用mousedown选择,但我希望点击的精灵跟随我的鼠标,api中提到了一个mousetracker函数;但不幸的是,除了声明它允许鼠标检测之外,没有其他的例子Javascript 在gamequery中,我试图通过单击并拖动鼠标器来移动选定的对象,javascript,jquery,gamequery,Javascript,Jquery,Gamequery,我知道我可以使用mousedown选择,但我希望点击的精灵跟随我的鼠标,api中提到了一个mousetracker函数;但不幸的是,除了声明它允许鼠标检测之外,没有其他的例子 //add mousedown events for yarnballs. $(".gQ_sprite").mousedown(function() { clickedDivId = $(this).attr('id'); if(clickedDivId.charAt(8) == "-") {
//add mousedown events for yarnballs.
$(".gQ_sprite").mousedown(function() {
clickedDivId = $(this).attr('id');
if(clickedDivId.charAt(8) == "-")
{
currentClickedDivId = clickedDivId
$(document).mousemove(function(e){
spriteXPosition = e.pageX
spriteYPosition = e.pageY
});
}
});
我选择了鼠标的位置,只是不确定如何让选定的精灵跟随它
任何帮助都将不胜感激 根据:
如果启用了鼠标跟踪器,您可以通过查看对象$.gQ.mouseTracker随时检查鼠标的状态其中x和y包含鼠标的位置,1、2和3为布尔值,其中true表示按下了第一、第二或第三个按钮
观察以下各项的输出:
$("#playground").playground({ refreshRate: 60, mouseTracker: true });
$.playground().startGame();
$.playground().registerCallback(function(){
console.log( $.gQ.mouseTracker );
}, 1000);
要使这些div实际跟随光标,必须使用.css()
Mati所说的是正确的:$.gQ.mouseTracker允许您在事件处理程序之外访问鼠标的状态。他给出的示例是正确的,但它不能用于移动gQ对象(精灵、平铺贴图或组),因为不允许对这些对象使用.css()函数。这样做将破坏碰撞检测 如果要移动gQ对象,则应执行以下操作:
$('#' + currentClickedDivId).xy($.gQ.mouseTracker.x, $.gQ.mouseTracker.y);
但由于这应该在定期回调中完成,因此拖动的平滑度将取决于刷新率
如果您想改用事件处理程序,您可以修改代码,使其如下所示(无需使用捕鼠器):
这将实现拖放效果。如果你想让点击的元素粘在鼠标上,你必须稍微修改一下代码,但基本内容将保持不变。看起来这应该行得通,我意识到,由于css定位自身的方式,我将不得不四处移动对象等。它几乎值得使用原生jquery函数而不是$.gQ.mouseTracker.y等,因为它的定位方式将其顶部和左侧定义为0.selim。顺便说一句,这很有帮助;热爱图书馆;你用ITW@selim做了很棒的工作,我想你不知道这对我有多大帮助。我最初试图重新加载代码来操作css,但由于您的回答,在冲突检测方面遇到了问题;碰撞检测现在可以工作了。如果你来密歇根州安娜堡:我欠你一杯啤酒
$('#' + currentClickedDivId).xy($.gQ.mouseTracker.x, $.gQ.mouseTracker.y);
var clickedDiv;
var clickedDivOffset = {x:0, y:0};
$(".gQ_sprite").mousedown(function(e) {
clickedDiv = $(this);
clickedDivOffset = {
x: e.pageX - clickedDiv.x() - $().playground().offset().left,
y: e.pageY - clickedDiv.y() - $().playground().offset().top
};
});
$(".gQ_sprite").mouseup(function() {
clickedDiv = false;
});
$().playground().mousemove(function(e) {
if(clickedDiv){
clickedDiv.xy(
e.pageX - clickedDivOffset.x,
e.pageY - clickedDivOffset.y,
);
}
});