我正在努力改进http://blog.shaperstudio.com/2010/10/as3-create-a-slingshot-with-an-elastic-effect/提供的简单AS3弹弓 所以我可以使它更现实。
我已经改变它以便可以将球瞄准任何方向,但现在我正在尝试创建一个将弹弓的最大拉力限制在椭圆区域的功能,最好具有相同的两个点。弹弓作为椭圆的两个焦点:
if ( mouseX > centerX + _maximumPULL.x) _mouse_x = centerX + _maximumPULL.x;
else if ( mouseX < centerX - _maximumPULL.x) _mouse_x = centerX - _maximumPULL.x;
else _mouse_x = mouseX;
if ( mouseY > centerY + _maximumPULL.y) _mouse_y = centerY + _maximumPULL.y;
else if ( mouseY < centerY - _maximumPULL.y) _mouse_y = centerY - _maximumPULL.y;
else _mouse_y = mouseY;
其中_maximumPULL是一个点变量,它返回我们拉伸弹性的距离,这样的东西?:
_maximumPULL = new Point(200 * Math.cos(degree * Math.PI / 180), 100 * Math.sin(degree * Math.PI / 180));
我现在一直在乱用代码太多时间而且我知道对于像我这样没有编程背景的人来说这太过分了,但是我不能放手,我迷上了。 ..
我一直在尝试理解类似的问题:http://www.soundstep.com/blog/2011/04/08/knob-as3-drag-on-circle-or-ellipse/
你可以帮帮我吗?答案 0 :(得分:0)
可能不完全是你想要的但是如何绘制你想要的确切形状(无论是在flash中,还是以编程方式使用graphics
类),然后检查球与允许区域之间的碰撞
您可以通过在mouseMove事件函数中添加类似的内容来非常简单地编写代码:
if (theBall.hitTestObject( allowedRange )){
//Put your code that figures out where the ball should be
}//otherwise, it won't alter the position of the ball :D