mousedown
HTML5キャンバスに表示した画像の1つで「マウスダウン」が実行されたことを検出するために使用している次のJavaScript関数があります。
_mousedown: function(evt) {
this._setUserPosition(evt);
var obj = this.getIntersection(this.getUserPosition());
if(obj && obj.shape) {
var shape = obj.shape;
this.clickStart = true;
shape._handleEvent('mousedown', evt);
displayTip(obj.shape.index);
console.log(obj);
}
ご覧のとおり、オブジェクトが描画されているキャンバスの一部で「マウスダウン」が実行されるたびに、この関数は関数を呼び出しますdisplayTip
。
関数は現在、次のdisplayTip
ようになっています。
function displayTip(index){
document.getElementById('tipsParagraph').innerHTML = tips[index];
console.log("displayTip being called");
console.log("canvasImage id = " + canvasImage.id);
}
これで、mousedown
関数は部分的に正しく機能しています。関数が を呼び出すとdisplayTip
、この関数は段落の内容を配列の位置にtipsParagraph
格納されているものに更新します。ただし、ご覧のとおり、関数の最後で、Iラインを持っているtips
index
displayTip
`console.log("canvasImage id = " + canvasImage.id);
mousedown
関数の最後に、次の行があります
console.log(obj);
obj
キャンバス上のクリックの時点で検出されたオブジェクトは、行によって決定されるように、変数に格納されることは私の理解です
var obj = this.getIntersection(this.getUserPosition());
しかし、コンソールでは、displayTip()
関数ログの最後のログcanvasImage.id
は未定義であり、mousedown
関数ログの最後のログは変数の値obj
が[object Object]
mycanvasImage.id
が定義されていない理由がわかりません... が検出された画像の ID 属性を表示する必要がありますmousedown
...なぜこれが起こっていないのでしょうか?
おそらく、コンソールログvalue of variable obj:[object Object]
は、マウスダウンがマウスダウンの位置で画像を「手に入れた」ことを意味するので、そのオブジェクトのIDを表示する必要がありますか?
編集 2013 年 1 月 3 日 @ 14:35
キャンバス画像のコードは次のとおりです。
最初に、次の行を使用して、他のすべてのグローバル変数とともに、ファイルの先頭でグローバル変数として定義されます。
var canvasImage;
次の使用は、次のように使用した「drawImage()」関数内で行われます。
var canvasImage = new Kinetic.Image({
image: imageObj,
width: 50,
height: 50,
// puts the image in teh middle of the canvas
x: randomPosition(0, 950), //imageX, //stage.getWidth() / 2 - 50 / 2,
y: randomPosition(30, 350), //imageY, //stage.getHeight() / 2 - 50 / 2,
draggable: true
});
これが正しい方法かどうかはわかりませんが、私がやりたいことは、このmousedown
関数を使用して、マウスダウン関数が呼び出された画像を「取得」し、その特定の画像を一時的に変数に保存することです、そのすべての属性 (id、幅、高さ、x、y) と共に、これらの属性にアクセスして他のコードで使用できるようにします。