Easeljs 将对象保持在边界内
Easeljs keep object within bounds
我正在 HTML5 canvas 中使用 Easeljs 开发绘图应用程序。到目前为止,我可以将对象拖放到字段中,但我只希望它们在特定范围内。
举例说明:
应删除对象 1、2、4 和 5,但应保留对象 3。
我试过使用 hitTest(),但效果不佳(我可能做错了什么)。我很想 post 我使用的代码,但是我的电脑在处理它时死机了......我想我最好在解冻时问一下,哈哈。
这是一个带有边界约束的快速拖放示例:
http://jsfiddle.net/xrqatyLs/8/
秘诀在于将拖动位置限制为您自己的值。
clip.x = Math.max(bounds.x, Math.min(bounds.x + bounds.width - clipWidth, evt.stageX));
clip.y = Math.max(bounds.y, Math.min(bounds.y + bounds.height-clipHeight, evt.stageY));
这是另一个更复杂的示例,它手动检查一个矩形是否与另一个矩形相交:
http://jsfiddle.net/lannymcnie/yvfLwdzn/
希望对您有所帮助!
解法:
var obj1 = obj.getBounds().clone(); // obj = a pylon
var e = obj1.getTransformedBounds();
var obj2 = bg.getBounds().clone(); // bg = the big green field
var f = obj2.getTransformedBounds();
if(e.x < f.x || e.x + e.width > f.x + f.width) return false;
if(e.y < f.y || e.y + e.height > f.y + f.height) return false;
return true;
毕竟这么简单,但我想我花了很长时间才开始想太多......
我正在 HTML5 canvas 中使用 Easeljs 开发绘图应用程序。到目前为止,我可以将对象拖放到字段中,但我只希望它们在特定范围内。
举例说明:
应删除对象 1、2、4 和 5,但应保留对象 3。
我试过使用 hitTest(),但效果不佳(我可能做错了什么)。我很想 post 我使用的代码,但是我的电脑在处理它时死机了......我想我最好在解冻时问一下,哈哈。
这是一个带有边界约束的快速拖放示例:
http://jsfiddle.net/xrqatyLs/8/
秘诀在于将拖动位置限制为您自己的值。
clip.x = Math.max(bounds.x, Math.min(bounds.x + bounds.width - clipWidth, evt.stageX));
clip.y = Math.max(bounds.y, Math.min(bounds.y + bounds.height-clipHeight, evt.stageY));
这是另一个更复杂的示例,它手动检查一个矩形是否与另一个矩形相交:
http://jsfiddle.net/lannymcnie/yvfLwdzn/
希望对您有所帮助!
解法:
var obj1 = obj.getBounds().clone(); // obj = a pylon
var e = obj1.getTransformedBounds();
var obj2 = bg.getBounds().clone(); // bg = the big green field
var f = obj2.getTransformedBounds();
if(e.x < f.x || e.x + e.width > f.x + f.width) return false;
if(e.y < f.y || e.y + e.height > f.y + f.height) return false;
return true;
毕竟这么简单,但我想我花了很长时间才开始想太多......