如何对对象进行反技术是另一个与拉斐尔JS
How to detech object is over another with RaphaelJS?
我可以以某种方式阻止一个对象被移动到另一个Raphael.js
对象上吗?
我使用基本的startMove(),move(),stop()方法来拖放对象:
var startSystemMove = function() {
this.odx = 0;
this.ody = 0;
};
var moveSystem = function(dx, dy) {
this.translate(dx - this.odx, dy - this.ody);
this.odx = dx;
this.ody = dy;
};
var stopSystemMove = function(dx, dy) {
// do nothing...
};
以下是对象:
var r1 = paper.rect(20, 105, 122, 23).attr({
'fill':'#fff',
'fill-opacity':'0.5',
'stroke-width':'3',
'stroke':'#fff',
'cursor':'move'
});
var r2 = paper.rect(200, 200, 100, 100).attr({
'fill':'#fff',
'fill-opacity':'0.5',
'stroke-width':'3',
'stroke':'#fff',
'cursor':'move'
});
设置可拖动:
r1.drag( moveSystem, startSystemMove, stopSystemMove );
r2.drag( moveSystem, startSystemMove, stopSystemMove );
如何使其中一个对象移动到另一个对象上进行减技术?
我不熟悉拉斐尔.js但这是我创建的函数,你可以在代码中实现。
我将其与可拖动的jquery ui 一起使用。请参阅此处的 jsfiddle 示例。希望这有帮助
$(function()
{
$(".block").draggable(
{
stop: function(event, ui)
{
$(this).css({position: "absolute"});
}
});
$(".block").on("drag",function()
{
var hasCollided = collision(this, ".block");
if(hasCollided){return false;}
});
});
function collision(obj, collideObj)
{
var collidedElements = new Object();
var collided = false;
$(obj).each(function(){
var player = $(this);
var playerWidth = $(this).width();
var playerHeight = $(this).height();
var playerPosition = player.offset();
var playerLeft = playerPosition.left;
var playerRight = playerLeft + player.width();
var playerTop = playerPosition.top;
var playerBottom = playerTop + player.height();
collidedElements.first = player;
$(collideObj).not(obj).each(function()
{
var block = $(this);
var blockPosition = block.offset();
var blockLeft = blockPosition.left;
var blockRight = blockLeft + block.width();
var blockTop = blockPosition.top;
var blockBottom = blockTop + block.height();
if( playerLeft < blockRight &&
playerLeft > blockLeft &&
playerBottom > blockTop +10 &&
playerTop < blockBottom -10)
{
// alert('Collision on left side'); // Debug Code //
/*block.removeClass("block");
block.toggle("explode", 0);*/
$(player).css({position:"absolute",left: blockRight +1});
collided = true;
collidedElements.second = $(this);
return true;
}
if( playerRight > blockLeft &&
playerRight < blockRight &&
playerBottom > blockTop + 10 &&
playerTop < blockBottom - 10)
{
//alert("Collision on right side"); // Debug Code //
/*block.removeClass("block");
block.toggle("explode", 0);*/
$(player).css({position:"absolute",left: blockLeft - (playerWidth +1)});
collided = true;
collidedElements.second = $(this);
return true;
}
if( playerTop < blockBottom &&
playerTop > blockTop &&
playerLeft < blockRight -10 &&
playerRight > blockLeft + 10)
{
//alert("Collision on bottom side"); // Debug Code //
/*block.removeClass("block");
block.toggle("explode", 0);*/
$(player).css({ position:"absolute", top: blockBottom +1});
collided = true;
collidedElements.second = $(this);
return true;
}
if( playerBottom > blockTop &&
playerBottom < blockBottom &&
playerLeft < blockRight -10 &&
playerRight > blockLeft +10)
{
//alert("Collision on top side"); // Debug Code //
/*block.removeClass("block");
block.toggle("explode", 0);*/
$(player).css({position:"absolute",top: blockTop - (playerHeight+ 1)});
collided = true;
collidedElements.second = $(this);
return true;
}
});
});
if(collided)
{return collidedElements;}
else{return false;}
}
相关文章:
- 如何将变量传递到另一个js文件
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- Java,nashorn访问另一个js文件
- ajax没有;t成功后调用另一个js函数
- 另一个.js文件中的函数不起作用
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 在另一个.js文件中调用js函数
- MongoDB:如何调用另一个JS文件中定义的函数
- 等待另一个 js 文件中的 ajax 调用
- 如何在另一个.js文件中使用橡子.js
- 如何从另一个.js文件调用.js
- 在另一个.js文件中扩展函数
- Mutilpe JS文件包含在另一个js文件中有时不起作用
- 如何仅在另一个 js 脚本有效时才运行 js 脚本
- Referesh JS文件来自另一个JS文件
- Javascript 来加载另一个 js 文件
- 如何告诉 JSHint 在另一个 JS 文件中查找定义
- 如何从另一个 js 文件发出事件
- 如何从另一个 js 文件调用 js 文件中的函数