我只是想尽量避免滚动我自己的拖动功能。有没有人知道任何有相当于startDrag()
的图书馆,你可以使用圆形半径作为拖拽边界,而不是矩形框?具有与非矩形边界(即:圆形)等效的startDrag()的AS3库?
回答
(对于圆形阻力区) - 你需要做的是:
一)MOUSE_DOWN:商店开始位置。开始收听Enter_frame。
b)中ENTER_FRAME:从鼠标位置检查距离的鼠标来启动POS(使用毕达哥拉斯)
c)中只有当距离小于x
d移动您的对象)MOUSE_UP:停止听输入框
是的,这就是我所说的“滚我自己”的意思,是我会采取的方法。在最初的问题中,我问是否有人知道任何已经完成这个工作的图书馆。我会将问题留给开放一段时间,如果没有人使用内置此库的表面,我会接受您的答案。 –
不,你需要做像素完美的碰撞(或在这种情况下,鼠标点击),以便做到这一点。就本质而言,所有显示对象总是具有矩形边界。所以基本上你不得不做这样的事情:
mySprite.addEventListener(MouseEvent.MOUSE_DOWN, mousedDown);
function mousedDown(e:MouseEvent):void
{
//Draw my sprite to a bitmap, then check the bitmap colour at mouseX/mouseY
uint colour = myBitmap.getPixel32(mouseX, mouseY);
if(colour != TRANSPARENT){
//We've actually clicked on the object, drag it
Sprite(e.currentTarget).startDrag();
}
}
注意这仅仅是伪代码,你就必须要弄清楚的单元值透明事情的发生,同时也你必须考虑绘制到位图时,精灵的起始点在哪里。假设你有一个精灵,内容在里面,你需要创建一个Matrix对象,它的X和Y偏移量是你的精灵宽度的0.5倍,以便正确绘制它。
嗨,感谢您的评论。我想我的问题一定不太清楚。有问题的边界并不意味着确定对象的命中区域(通过这种方式自动完成)。这是关于我可以拖动对象的边界!即:startDrag(lockCenter:Bool,bounds:Rect)。当你指定边界时,你必须指定一个Rect,超过该Rect你不能拖动对象(它只是停止拖动)。这是我期望的行为,但我希望边界是一个圆形的区域,而不是一个矩形区域。它根本不需要处理碰撞。 –
Ohhhhhhhh大声笑没关系对此感到抱歉。如果我能想到或找到任何东西,我会发布一个新的答案。 – 2011-07-27 05:52:17
您可以使用简单的圆形碰撞检测程序,使用物体的半径和它们之间的距离计算出击中区域。也许你将不得不在你的onDrag方法中手动做这个计算,并停止与下面计算的圆形边界的碰撞拖动。
var deltax : Number = targetCentreCoord.x - hitTestCentreCoord.x;
var deltay : Number = targetCentreCoord.y - hitTestCentreCoord.y;
//works out if our circles are colliding, distance between the circles inc radius
if (((deltax * deltax) + (deltay * deltay)) <= ((((targetRadius) + (hitTargetRadius)) * ((targetRadius) + (hitTargetRadius)))))
{
Log.info("collision occured with " + candidate.name + " target coords " + targetCentreCoord + " candidate coords " + hitTestCentreCoord);
return true;
}
return false;
再一次,对不起,这个问题没有涉及碰撞。 –
你需要做碰撞检测来检测你的问题中的边界,然后你会停止拖动。除非我误解你的问题。 – serenskye
因此,我没有碰到任何东西。只需要限制拖动的边界。 AS3本身可以做到这一点,但只有一个矩形边界框,而不是圆形边界框。同样,这个问题特别要求图书馆,而不是本土解决方案。本土方法很简单,但图书馆可以捕捉到所有边缘案例,这就是我问的原因。 –
这可以在没有ENTER_FRAME事件的情况下完成。 有一个MOUSE_DOWN侦听器,检查边界,如果在边界内,然后 添加一个MOUSE_MOVE侦听器。 另外,从MOUSE_UP侦听器开始移除MOUSE_MOVE侦听器。
- 1. UIDynamicItem与非矩形边界
- 2. android-圆形矩形边界为布局
- 3. 带有非矩形边界的TinyMCE
- 4. QFontMetrics返回具有非常错误宽度的边界矩形
- 5. 带有边界的圆形TextView
- 6. 边界框与矩形的对比
- 7. 没有背景的android圆角矩形直边矩形
- 8. 没有边框的圆角矩形UIButton
- 9. 定制边界矩形的形状
- 10. 在矩形中的圆形效果
- 11. 帆布矩形3D效果边界
- 12. 添加矩形以获得所有矩形边界的方法
- 13. 画一个圆形边界?
- 14. 给出ImageView圆形边界?
- 15. 绘制图形边框任何形状(心脏,圆形等)的柔性,AS3
- 16. Box2D的矩形体具有圆角
- 17. 是否可以圆形?六边形,八边形等形状?
- 18. iOS:具有边框出血颜色的圆角矩形
- 19. 圆形与矩形之间的碰撞
- 20. 最小边界矩形与JTS
- 21. WPF。是否有可能做椭圆“矩形边界”hittest?
- 22. Wp8地图边界矩形
- 23. 饼图边界矩形
- 24. 矩形区域和边界
- 25. 从边界切割矩形
- 26. 同等缩放边界和非边界Flash图形
- 27. 更有效的父亲边界矩形副本
- 28. 为什么在UIView中有框架矩形和边界矩形?
- 29. 创建一个只有两个圆边的矩形形状
- 30. 绘制带有彩色圆角边框的矩形形状
请参见下面的问题和答案以进行循环拖动:将[约束MovieClip拖动到一个圆](http://stackoverflow.com/questions/6509716/constrain-movieclip-drag-to-a-circle/6510032#6510032) 。 –