Starling iOS touch然后将对象拖动到“手指触摸”
我在舞台上增加了一个四边形,使其可拖动 但是,当我触摸可拖动的对象并开始拖动它时,该对象将以我的手指为中心,触摸屏幕上我手指的x和y坐标?好像四边形的中心捕捉到我的接触点???因此,触摸四边形的角将使其捕捉到我的触摸点=>稍微移动 所以我真正想知道的是,是否有可能抓取/拖动一个物体,而不让它调整和居中到我的实际接触点?也就是说,这样我就可以拖动接触正方形四边形物体的一个角的物体了 我的代码如下所示:Starling iOS touch然后将对象拖动到“手指触摸”,ios,actionscript-3,starling-framework,Ios,Actionscript 3,Starling Framework,我在舞台上增加了一个四边形,使其可拖动 但是,当我触摸可拖动的对象并开始拖动它时,该对象将以我的手指为中心,触摸屏幕上我手指的x和y坐标?好像四边形的中心捕捉到我的接触点???因此,触摸四边形的角将使其捕捉到我的触摸点=>稍微移动 所以我真正想知道的是,是否有可能抓取/拖动一个物体,而不让它调整和居中到我的实际接触点?也就是说,这样我就可以拖动接触正方形四边形物体的一个角的物体了 我的代码如下所示: public function Game() { addEventLis
public function Game() {
addEventListener(Event.ADDED_TO_STAGE, onAdded);
}
private function onAdded (e:Event):void {
var q:Quad = new Quad(200,200);
q.x = 100;
q.y = 100;
q.addEventListener(TouchEvent.TOUCH, touchHandler);
addChild(q);
}
private function touchHandler(e : TouchEvent) : void
{
var touch:Touch = e.getTouch(stage);
var position:Point = touch.getLocation(stage);
var target:Quad = e.target as Quad;
if(touch.phase == TouchPhase.MOVED ){
target.x = position.x - target.width/2;
target.y = position.y - target.height/2;
trace("x:" + target.x + " y:" + target.y)
}
}
干杯当然可以。在执行此操作时,捕捉是正常的:
target.x = position.x - target.width/2;
target.y = position.y - target.height/2;
这里要做的是保存对象被触摸的位置。通过这种方式,您可以计算出它的原点与实际接触点之间的差值。假设你有一个100x100的正方形,原点在0x0,你在50x50接触它
如果仅仅为了解释而移动手指一个像素,那么对象实际上应该移动一个像素。逻辑是这样的:
仅保存一次接触点50x50
每次有移动时,检查位置
进行计算:当前位置51x51-初始点50x50=差值1x1
移动差异为0x0+1x1=1x1的对象,这意味着该对象将移动一个像素
对。使用:
touch = event.getTouch(stage);
touchX = touch.globalX;
touchY = touch.globalY;
计算x和y的偏移量就成功了 好极了。谢谢因此,仅在四元体上存储实际接触点一次,直到拖动结束,并以恒定的x,y偏移移动对象。谢谢将很快发布解决方案:很高兴这有帮助!:干杯谢谢分享,但我和你有同样的问题。当我开始拖动时,我需要将该对象添加到最顶端的精灵中,使其高于一切。当我这样做时,我需要知道localX,以便在将该对象添加到最顶层时,它位于同一位置。我怎样才能解决这个问题?