Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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
Javascript 移相器2-当我拖动另一个精灵时,如何检测?_Javascript_Typescript_Drag And Drop_Phaser Framework - Fatal编程技术网

Javascript 移相器2-当我拖动另一个精灵时,如何检测?

Javascript 移相器2-当我拖动另一个精灵时,如何检测?,javascript,typescript,drag-and-drop,phaser-framework,Javascript,Typescript,Drag And Drop,Phaser Framework,我正在构建一个Phaser应用程序,在该应用程序中,我能够将一个精灵拖到另一个精灵的顶部,然后将其放到其下方的精灵上,在该阶段,我的代码将与被拖放的精灵和它被拖放的精灵建立关系。我没有为此使用任何物理。这应该会给问题增加一些背景,但“放弃”并不是我想要回答的问题 当在精灵上拖动时,我想改变被拖动精灵的比例,以向用户显示它正在被检测到悬停在它可以掉入的物体上 我可以遍历屏幕上的精灵,检查拖动精灵的坐标是否击中另一个精灵,但如果将其放入dragUpdate函数中,效率会非常低 我正在寻找一个替代方案

我正在构建一个Phaser应用程序,在该应用程序中,我能够将一个精灵拖到另一个精灵的顶部,然后将其放到其下方的精灵上,在该阶段,我的代码将与被拖放的精灵和它被拖放的精灵建立关系。我没有为此使用任何物理。这应该会给问题增加一些背景,但“放弃”并不是我想要回答的问题

当在精灵上拖动时,我想改变被拖动精灵的比例,以向用户显示它正在被检测到悬停在它可以掉入的物体上

我可以遍历屏幕上的精灵,检查拖动精灵的坐标是否击中另一个精灵,但如果将其放入dragUpdate函数中,效率会非常低


我正在寻找一个替代方案,在那里我可以从精灵的x/y拖动位置从被拖动的精灵向下进行光线投射,并查看它是否击中另一个精灵。文档在这方面有什么想法吗?

我已经用一些工作示例更新了你的小提琴,包括当精灵被拖动到一个目标上时,它的缩小比例

我循环每个目标并检测可拖动的精灵是否在目标内部

function onDragUpdate(sprite, pointer, dragX, dragY, snapPoint) {   
        var draggableBounds = sprite.getBounds();
        for (var i = 0; i < targets.length; i ++)  
      {
        var target = targets[i];
        var targetBounds = target.getBounds();
         var rect = new Phaser.Rectangle(draggableBounds.x, draggableBounds.y, draggableBounds.width, draggableBounds.height);
        if (Phaser.Rectangle.intersects(draggableBounds, targetBounds))     
        { 
          sprite.scale.setTo(0.2);
          if (!targetBounds.containsRect(sprite.getBounds())) {
                sprite.scale.setTo(0.5);
          }
          else {
            game.debug.text(sprite.draggable_custom_id + ' is over ' +  target.target_custom_id, 20, 20 );
        }    
    }
函数onDragUpdate(精灵、指针、dragX、dragY、捕捉点){
var draggableBounds=sprite.getBounds();
对于(变量i=0;i

签出小提琴:

你不是在寻找类似的东西吗?类似的,这是我想在drag stop上调用的函数,但我有未知数量的精灵来运行此检查,在更新或drag update上循环确实会使风扇旋转。在某个点向场景发射光线可以消除循环的需要,但我没有我不确定这在PhaserJSFIDLE中是否可行,以帮助演示场景: