Рафаэль - Изменение цвета букв текстовой строки - PullRequest
1 голос
/ 15 декабря 2011

(с использованием Raphael_2.01, WindowsXP, Firefox8.0.1)

Здравствуйте,

Я пытаюсь изменить цвет букв текста, ссылаясь на «Рисование текста» http://www.html5rocks.com/en/tutorials/raphael/intro/.

Я могу отобразить текст «HTML5ROCKS», но не могу изменить цвет.

var t = paper.text(50, 10, "HTML5ROCKS");

var letters = paper.print(50, 50, "HTML5ROCKS", paper.getFont("Courier"), 40);
// I think "Vegur" is Mac font. So I change it to "Courier".

letters[4].attr({fill:"orange"});
for (var i = 5; i < letters.length; i++) {
    letters[i].attr({fill: "#3D5C9D", "stroke-width": "2", stroke: "#3D5C9D"});
}

Что случилось?

1 Ответ

2 голосов
/ 20 декабря 2011

Как говорится в руководстве (не так ясно, как должно), вам нужно преобразовать шрифт в формат "cufon", если вы хотите обрабатывать отдельные буквы как уникальные пути SVG.Если вы сделаете это, функция paper.print будет работать как положено.Без этого функция печати возвращает пустой массив (и происходит сбой «letters [4]»).

Экспериментально я взял два отсутствующих файла шрифтов из html5rocks:

<script src="Vegur.font.js"></script>
<script src="cufon.js"></script>

и добавилих на образец HTML-страницы:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Raphaël—JavaScript Library</title>
</head>
<body>
    <div id="demo-1"></div>
    <script src="raphael.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="Scripts/Vegur.font.js" type="text/javascript"></script>
    <script src="Scripts/cufon.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            var paper = Raphael("demo-1", 320, 200);
            var t = paper.text(50, 10, "HTML5ROCKS");
            var letters = paper.print(50, 50, "HTML5ROCKS", paper.getFont("Vegur"), 40);
            letters[4].attr({ fill: "orange" });
            for (var i = 5; i < letters.length; i++) {
                letters[i].attr({ fill: "#3D5C9D", "stroke-width": "2", stroke: "#3D5C9D" });
            }
        });        
    </script>
</body>
</html>

Второй текст HTML5ROCKS окрашен, как и ожидалось (как показано на исходной странице учебника).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...