0

我正在使用KineticJS Sprite对象创建一个简单的 HTML5 2D 画布游戏。我需要每个精灵都具备一定的特性,比如“盾牌”、“火力”、“速度”等。所以我需要将自己的自定义属性添加到 Sprite 对象中。

理想情况下,我想要类似的东西:

mySpriteObj.setCustom('shield',50) // set a custom property to 50

……然后后来……

var shield = mySpriteObj.getCustom('shield') // returns 50

但似乎没有这样的东西。我确实尝试将 attr 属性(getAttrsetAttr)与我自己的自定义值一起使用,但这不起作用。

有没有一种简单的方法可以将您自己的变量与 Sprite 对象相关联?

谢谢欧文

4

2 回答 2

1

即使getAttr()andsetAttr()是最好的方法,只要您不尝试使用.toJSON()然后重新创建节点来保存画布,您就可以像这样直接分配任何自定义值:

mySpriteObj.shield = someValue;
mySpriteObj.speed = someOtherValue;
var myObjSpeed = mySpriteObj.speed;
var myObjShield = mySpriteObj.shield;

虽然,您可能希望使用getAttr()and共享您的代码setAttr()并尝试修复其中的错误。

于 2013-09-09T09:04:00.400 回答
0

要向 a 添加方法,Kinetic.Shape您可以使用该addMethods函数,请参阅文档

您可以查看Kinetic Source以获取有关如何使用此方法的示例。

例子:

Kinetic.Util.addMethods(Kinetic.Shape, {
  getCustom: function() {
    //getCustom attribute code here
  },
  getCustom2: function() {
    //getCustom attribute code here
  }
});

请注意,您可以通过在对象中为函数的第二个参数添加更多属性(函数)来添加多个addMethod函数。

就像 Ani 所说,您应该使用getAttr()andsetAttr()函数来获取和设置自定义属性。

于 2013-09-09T15:17:59.047 回答