Raphael JavaScript ライブラリをテストしていますが、小さな問題が発生しています。キャンバスに 4 つの図形を描画しています。次に、クリックしてオブジェクトを現在選択されているオブジェクトにすることができます。次に、削除キーの押下をリッスンするイベント ハンドラーを追加します。これはうまくいきますが、関数を呼び出すことができないようです。以下は、私の問題を説明するコードです。
これは、キャンバス上の各円を表すクラスです。
var Shape = new Class({
initialize: function(x, y, color)
{
this.shape = paper.circle(x, y, 25);
this.shape.attr("fill", color);
this.shape.click(function()
{
if(selectedObj == null)
{
selectedObj = this;
selectedObj.attr({'stroke':'orange', 'stroke-width':'5'});
}
else if(selectedObj != this)
{
selectedObj.attr({'stroke':'orange', 'stroke-width':'0'});
selectedObj = this;
selectedObj.attr({'stroke':'orange', 'stroke-width':'5'});
}
else if(selectedObj == this)
{
selectedObj.attr({'stroke':'orange', 'stroke-width':'0'});
selectedObj = null;
}
});
},
deleteThis: function()
{
alert("Inside The deleteThis() Function.");
}
});
これにより形状が作成され、クリックすると次のことが行われます。
selectedObj
が null の場合、クリックされた形状が に設定されselectedObj
、形状の周りに小さなオレンジ色の縁が描画されます。- クリックされた形状でない場合は
selectedObj
、以前に選択されたオブジェクトの小さな境界線を取得し、新しくクリックされた形状を現在選択されているアイテムとして設定します。 - 形状が選択されたオブジェクトである場合、もう一度クリックすると選択が解除されます。
次に、4 つの図形をキャンバスにプッシュします。
objShapes.push(new Shape(50, 50, "red"));
objShapes.push(new Shape(250, 50, "blue"));
objShapes.push(new Shape(50, 250, "yellow"));
objShapes.push(new Shape(250, 250, "green"));
キャンバス上のオブジェクトを正常に選択および選択解除できるようになったので、選択したオブジェクトの関数を呼び出せるようにする必要があります。関数をトリガーするには、キーボードを使用しています。次のコードは私が使用するものです:
$(document).keydown(function(event)
{
if(event.keyCode == 46)
{
if(selectedObj == null)
{
alert("nothing to delete");
}
else
{
alert("Deleting " + selectedObj.attr('fill') + " Circle.");
selectedObj.deleteThis();
}
}
});
イベント ハンドラの一部のみが機能します。削除キーを押して何も選択しないと、警告ウィンドウに、削除するものが何も選択されていないことが通知されます。ただし、オブジェクトを選択して削除キーを押すと、警告が表示され、どの円を削除しようとしているのかが通知されますが、その後、関数の呼び出しに失敗しdeleteThis()
ます。.attr()
関数を呼び出すのに関数を呼び出さない理由がわかりませんdeleteThis()
。
関数を呼び出せない理由は何ですか?