2012-08-09 19 views
1

我試着做一下這個拉斐爾教程[http://www.html5rocks.com/en/tutorials/raphael/intro/]確實和印有.PRINT串選擇單個字母,但沒有喜悅選擇在.PRINT單個字母與拉斐爾2.1

我已經生成具有的Cufón字體和替換Cufon.registerFont與Raphael.registerFont

因爲標籤僅僅是一個路徑不是路徑的數組
var paper = Raphael('#div', 500, 500), 
    label = paper.print(xCenter, yCenter, 'blah', paper.getFont("CelliniProMedium"), 54); 

label[1].attr('fill', 'red'); 

導致錯誤。 什麼給?

在此先感謝

回答

1

是的,這絕對是1.4到2.0之間的行爲變化 - 它有點功能在多種情況下派上用場。

在另一方面,複製陣列結果的功能是很容易通過擴展拉斐爾2.0做...

Raphael.fn.printArray = function printArray(x, y, string, font, size, letter_spacing, line_height) 
{ 
    var result = []; 
    var cx = x, cy = y;   
    size = size || 16; 
    letter_spacing = letter_spacing || 0.2; 
    line_height = line_height || 1.5;   
    for (var i = 0; i < string.length; i++) 
    { 
     if (string[i] == " ") 
     { 
      cx += size; 
      continue; 
     } 
     else if (string[i] == "\n") 
     { 
      cx = x; 
      cy += size * line_height; 
      continue; 
     } 
     var glyph = this.print(0, 0, string[i], font, size).attr({ opacity: 0 }); 
     var glyphBox = glyph.getBBox(); 
     glyph.attr({ transform: "T" + cx + "," + cy, opacity: 1 }); 
     cx += glyphBox.width + (size * letter_spacing); 
     result.push(glyph); 
    } 
    return result; 
} 

這是不完美的代碼,但有一點細化它可以很容易地填補了國內空白。

+0

看起來不錯,謝謝 – gotofritz 2012-08-10 07:48:30

0

所以它看起來像它要麼錯誤或2.1功能 - 我從GitHub了1.4和它的作品如預期。如果任何人都可以在這個問題上發表更多的觀點,那麼我們可以暫時解決問題,因爲我認爲這對其他人可能有用。