Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Kineticjs:无法为数组元素创建文本对象_Arrays_Object_Text_Kineticjs - Fatal编程技术网

Arrays Kineticjs:无法为数组元素创建文本对象

Arrays Kineticjs:无法为数组元素创建文本对象,arrays,object,text,kineticjs,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)

我现在尝试了一段时间,我在谷歌上搜索了很多,但我总是会抛出一个错误:

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

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");
  }
}
但每次调用此函数时,我都会遇到一个错误,即无法读取未定义的属性“width”,就好像什么都没有初始化一样

我正在创建像这样没有任何问题的Kinetic.Image和Kinetic.Line对象


你知道为什么它不适用于文本对象,或者我在这里做错了什么吗?

问题似乎在于你不能创建一个空的文本形状。文本形状构造函数需要设置Text属性或width属性。在构造过程中,Kinetic使用任一属性来确定形状的宽度

var text = new Kinetic.Text();
将导致您收到的错误。然而

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

将解决您的问题

在您的情况下,我将使用将所有属性传递到构造函数中,而不是随后设置属性

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'
    });  
}
也看到

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'
    });  
}