Kineticjs:无法为数组元素创建Text对象

时间:2014-04-10 08:58:47

标签: arrays object text kineticjs

我现在正在尝试一段时间并且我搜索了很多内容,但是我总是得到一个错误:

我想创建一个用于在其中编写名称的数组:

function writeNames(){
 names = new Array();

 for (i = 0; i <= 15; i++){
    names[i] = new Kinetic.Text();
    names[i].x(100 * i);
    names[i].y(100 * i);
    names[i].text("Name " + (i+1));
    names[i].fontSize(10);
    names[i].fontFamily("Lucida Sans Unicode");
    names[i].fill("black");
  }
}

但是每当我调用这个函数时,我都会收到错误“无法读取未定义的属性'宽度',就像没有初始化一样。

我正在创建像这样的Kinetic.Image和Kinetic.Line对象,没有任何麻烦。

任何想法为什么它不适用于Text Objects或我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

似乎是您无法创建空文本形状的问题。 Text形状构造函数需要设置text属性或width属性。在施工过程中,Kinetic使用任一属性来确定形状的宽度。

var text = new Kinetic.Text();

会导致您收到的错误。然而

var text = new Kinetic.Text({text: 'hello'});

var text = new Kinetic.Text({width: 100});

将解决您的问题。

在你的情况下,我会使用将所有属性传递给构造函数,而不是之后设置属性。

for (i = 0; i <= 15; i++) {
    names[i] = new Kinetic.Text({
        x: 10,
        y: 25*i,
        text: "Name " + i,
        fontSize: 10,
        fontFamily: 'Lucida Sans Unicode',
        fill: 'black'
    });  
}

另见http://jsfiddle.net/x764C/