2017-01-04 14 views
1

私は動くオブジェクト(ビットマップ)があり、衝突を検出する必要があるゲームを実装しようとしています。オブジェクトを移動(変換)させ、hitTestをマウスのホバーでチェックするには、次のコードを使用しました。EaselJS hitTest on moving bitmaps

ただし、アルファは正しいマウス位置では変更されず、代わりにキャンバスの左上隅が検出されます。

enter image description here

rock = new createjs.Bitmap(loader.getResult("rock")); 
rock.setTransform(800, 270, 0.5, 0.5); 
stage.addChild(rock); 
// ..... 

createjs.Ticker.timingMode = createjs.Ticker.RAF; 
createjs.Ticker.addEventListener("tick", tick); 
// ..... 

function tick(event) { 
    rock.alpha = 0.7; 
    if (rock.hitTest(stage.mouseX, stage.mouseY)) {//if hit, change alpha 
     rock.alpha = 1; 
    } 
    var deltaS = event.delta/1000; 
    rock.x = (rock.x - deltaS * groundSpeed);//to gradually shift the rock 
    if (rock.x + rock.image.width * rock.scaleX <= 0) {//to re-position the rock 
     rock.x = w + Math.random() * 1000; 
    } 
    stage.update(event); 
} 

答えて

0

私はthis questionへの回答を読んで答えを見つけました。

stage.mouseXまたはstage.mouseYを直接取得するのではなく、としてglobalToLocalを使用して正しい位置を取得することができます。

var p = rock.globalToLocal(stage.mouseX, stage.mouseY); 
    if (rock.hitTest(p.x, p.y)) { 
     rock.alpha = 1; 
    }