2014-04-10 78 views
1

我現在想了一會兒文本對象,我用Google搜索了很多,但我總是拋出一個錯誤: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這樣的對象沒有任何麻煩。

任何想法爲什麼它不適用於文本對象或我在這裏做錯了什麼?

回答

0

這似乎是您無法創建空白文字形狀的問題。 Text shape構造函數需要設置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/

+0

那完美。先生非常感謝您! –