如何解决使用形状创建图像
|| 我正在尝试创建一个可用于构建图像的拖放模块。 例如:使用三角形和矩形创建房屋。 我已经创建了拖放模块,但无法使其相互固定。 如果有人可以给我一个想法或示例代码来解决这个问题,那将是一个很大的帮助。 请帮助我。 我会稍微解释一下该功能,但是如果有任何错误,请原谅我的英语,因为它不是我的母语。 为用户提供了一组形状以及诸如“创建房屋”之类的问题,因此他应该能够拖动 给和建造房子。 提前致谢。解决方法
如果您想将房屋碎片捕捉到网格,假设50像素放入这些等式
内部鼠标上移事件
box.x = Math.floor(mouseX / 50)* 50;
box.y = Math.floor(mouseY / 50)* 50;
box.addEventListener(MouseEvent.MOUSE_UP,mUp)
function mUp(e:MouseEvent)
{
box.stopDrag();
box.x = Math.floor(mouseX/50)*50;
box.y = Math.floor(mouseY/50)*50;
}
可以将各个部分组合在一起
,将此用作可拖动对象的基类:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Dragable extends Sprite
{
// vars
private const SNAP:uint = 40;
/**
* Constructor
*/
public function Dragable()
{
addEventListener(MouseEvent.MOUSE_DOWN,_drag);
addEventListener(MouseEvent.MOUSE_UP,_drop);
}
/**
* MOUSE_DOWN
*/
private function _drag(e:MouseEvent):void
{
startDrag();
}
/**
* MOUSE_UP
*/
private function _drop(e:MouseEvent):void
{
stopDrag();
x = Math.round(x / SNAP) * SNAP;
y = Math.round(y / SNAP) * SNAP;
}
}
}
修改ѭ2以满足您的要求。
,对于这样的事情(忽略拖放,这里有一些很好的示例),您之前已经进行了所有设置。
说您的目标是盖房子。在这里,您需要预先组装零件,并将最终位置和旋转保存在xml或类似文件中。当您在游戏中拖动棋子时,您只需要检查棋子是否足够接近最终位置即可,如果确实如此,只需将其捕捉到最终位置即可。您可以轻松地进行旋转工作(尽管我会简单地将角度保持在45度)。
作为位置的想法:
private var m_finalPos:Point = new Point( 10.0,10.0 );
private var m_snapDist:Number = 100.0;
private function _onDrop( e:MouseEvent ):void
{
// get the distance squared (quicker,and we don\'t really care about the distance)
var diffX:Number = this.m_finalPos.x - this.x;
var diffY:Number = this.m_finalPos.y - this.y;
var distSq:Number = ( diffX * diffX ) + ( diffY * diffY );
// if we\'re close enough,snap to the final position
if( distSq < this.m_snapDist )
{
this.x = this.m_finalPos.x;
this.y = this.m_finalPos.y;
}
}
降低snapDist使其更难。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。