JavaScript-通过在HTML5画布上单击存储在对象内的数组中的图像来获取对象的属性

时间:2013-03-13 17:06:37

标签: javascript html5-canvas kineticjs

我有以下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库的本地副本将图像绘制到画布上,我知道变量obj是kineticJS库中mousedown函数中使用的变量。

用户需要将每个“可拖动”图像拖动到相应的描述框(位于画布上)。

我想知道的是如何找出被点击的图像所属的数组,以便我可以将该数组的名称与用户拖动的图像名称进行比较'clicked'图像为:如果它们相同,则用户将图像拖动到正确的描述框,如果没有,则表示选择不正确。

有谁知道如何找出点击图片属于哪个数组?

1 个答案:

答案 0 :(得分:0)

当您创建kineticJS图像时,请将每个图像的“名称”属性设置为图像类型,如下所示:

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

然后,当选择图像时,使用所选对象的.getName()来检索“chair”。

从那里你进行数组查找,一切都很好......

所以你使用的“name”属性类似于css类名。