0

次の JS オブジェクトがあります。

var sources = {
        assets: [],
        liabilities: [],
        income: [],
        expenditure: []
    }

ご覧のとおり、このオブジェクトには多数の JS 配列が含まれています。次のような行を使用して、HTML の非表示セクションからこれらの配列に多数の画像を追加しました。

sources.assets[0] = document.getElementById("building").src,
sources.assets[1] = document.getElementById("chair").src,
sources.liabilities[0] = document.getElementById("burger").src,
sources.liabilities[1] = document.getElementById("chips").src,

私が今できるようにしたいmousedownのは、キャンバス上のこれらの画像のいずれかでクリック(または)が検出されたときに、その画像がオブジェクト内のどの配列に属しているかを調べ、その配列の値を保存したいということです(つまり、配列名-資産/負債など) を変数に変換します。

しかし、どうすればこれを見つけることができるのかわかりません...次の行を使用して、クリックが検出されたときに画像のプロパティの内容を印刷しようとしました:

console.log("value of variable obj:" + output + ". Shape is " + obj.shape + ". index is " + obj.shape.index);

しかし、それだけでコンソールに次の出力が表示されました

value of variable obj:shape: [object Object]; pixel: [object Uint8ClampedArray]; . Shape is [object Object]. index is 7

コンソールで。

KineticJS ライブラリのローカル コピーを使用してイメージをキャンバスに描画しています。この変数は、kineticJS ライブラリの関数obj内で使用されているものであることがわかっています。mousedown

ユーザーは、「ドラッグ可能な」各画像を対応する説明ボックス (キャンバス上にある) にドラッグする必要があります。

私が知りたいのは、クリックされた画像がどの配列に属しているかを知る方法です。その配列の名前を、ユーザーがクリックした画像の名前と比較できます。 image to: それらが同じである場合、ユーザーは正しい説明ボックスに画像をドラッグしました。そうでない場合は、間違った選択をしました。

クリックした画像がどの配列に属しているかを知る方法を知っている人はいますか?

4

1 に答える 1

0

kineticJS 画像を作成するときは、各画像の「name」プロパティを次のような画像のタイプに設定します。

var chair = new Kinetic.Image({
      x: 140,
      y: 20,
      name: chair,
      ...more...

次に、画像が選択されたら、選択したオブジェクトの .getName() を使用して「椅子」を取得します。

そこから、配列のルックアップを行うと、すべてがうまくいきます...

したがって、css クラス名のような「名前」プロパティを使用しています。

于 2013-03-13T19:56:16.607 に答える