Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Starling iOS touch然后将对象拖动到“手指触摸”_Ios_Actionscript 3_Starling Framework - Fatal编程技术网

Starling iOS touch然后将对象拖动到“手指触摸”

Starling iOS touch然后将对象拖动到“手指触摸”,ios,actionscript-3,starling-framework,Ios,Actionscript 3,Starling Framework,我在舞台上增加了一个四边形,使其可拖动 但是,当我触摸可拖动的对象并开始拖动它时,该对象将以我的手指为中心,触摸屏幕上我手指的x和y坐标?好像四边形的中心捕捉到我的接触点???因此,触摸四边形的角将使其捕捉到我的触摸点=>稍微移动 所以我真正想知道的是,是否有可能抓取/拖动一个物体,而不让它调整和居中到我的实际接触点?也就是说,这样我就可以拖动接触正方形四边形物体的一个角的物体了 我的代码如下所示: public function Game() { addEventLis

我在舞台上增加了一个四边形,使其可拖动

但是,当我触摸可拖动的对象并开始拖动它时,该对象将以我的手指为中心,触摸屏幕上我手指的x和y坐标?好像四边形的中心捕捉到我的接触点???因此,触摸四边形的角将使其捕捉到我的触摸点=>稍微移动

所以我真正想知道的是,是否有可能抓取/拖动一个物体,而不让它调整和居中到我的实际接触点?也就是说,这样我就可以拖动接触正方形四边形物体的一个角的物体了

我的代码如下所示:

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,以便在将该对象添加到最顶层时,它位于同一位置。我怎样才能解决这个问题?