多数の画像を表示している HTML5 キャンバスがあります。KineticJS ライブラリを使用して画像を描画し、ドラッグできるようにしましたが、機能に 1 つまたは 2 つの変更を加える必要があるため、ライブラリのローカル コピーを使用しています。
ライブラリ内の関数にさらに機能を追加したいのmousedown
ですが、やりたいことを行う方法が正確にはわかりません。誰かが私を正しい方向に向けることができるかどうか疑問に思っていますか?
現在、キャンバスに約 30 個の画像が表示されています。画像はすべて HTML の隠しセクションに保存され、そこから JS 配列に追加されています。別の JS ファイルに別の JS 配列もあります。これには、画像配列内の各画像に関するテキスト記述の配列が含まれています。
テキスト配列の位置 0 のテキストは、画像配列の位置 0 の画像の説明、位置 1 のテキストは位置 1 の画像の説明、などです。
<p></p>
キャンバスの下のページにHTML タグがあります。
私が今やりたいことは<p></p>
、キャンバス上でクリックされた画像に応じてそのタグに表示されるテキストを変更する関数を追加することです...つまり、mousedown
関数にいくつかのコードを追加します。
"画像で amousedown
が検出された場合、その画像が保存されている画像配列内の位置を見つけ、<p></p>
タグ内のテキストを更新して、テキスト配列内の対応する場所に保存されているテキストを表示します。
理論的には、これはかなり簡単なはずだと思っていましたが、どうすればよいかわかりません...おそらく、新しいJS関数を作成する必要があります。
function displayTip(){
document.getElementById('tipsParagraph').innerHTML= tips[0];
}
mousedown
次に、ライブラリ内の関数内からその関数を呼び出します。
よくわからないのは、クリックされた画像が画像配列内のどの位置にあるかを調べて、それを変数に格納し、tips[]
その値をその変数の値に設定して、私はヒント配列の同じ位置にいます。
ライブラリ内の関数を少し編集して、mousedown
クリックされた画像がどの配列位置にあるかを調べる必要があると思いますが、これを行う方法がわかりません...何か案は?
関数は現在、次のmousedown
ようになっています。
_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);
}
//init stage drag and drop
if(Kinetic.DD && this.attrs.draggable) {
this._initDrag();
}
}
また、配列内のどこに画像が保存されているかがわかったら、displayTip
関数内のmousedown
関数への呼び出しを追加したいと思いますか?