Преобразование не обновляет элемент - PullRequest
0 голосов
/ 14 декабря 2011
var m = ele.matrix;

m.translate(10,10) // эта строка обновляет 'e' и 'f' матрицы.Это также я могу видеть обновленное значение, только если я обновляю значения в firebug

Элемент не переводится.Пожалуйста, дайте мне знать, как заставить элемент подчиняться преобразованию, когда я изменяю матрицу элемента.

полный код:

<html>
<head>
    <script src="raphael-min.js"></script>
    <style>
        #canvas_container {  
                width: 500px;  
                border: 1px solid #aaa;  
            }  
    </style>
</head>
<body><div id="canvas_container"></div></body>
<script>
window.onload = function() {    
    var paper = new Raphael(document.getElementById('canvas_container'), 500, 500);     
    text = paper.text(150,150,"Some Text");     
    text.transform("m1,0,0,1,5,0")  
} 
</script>
</html>

спасибо

1 Ответ

1 голос
/ 14 декабря 2011

Я думаю, что преобразование работает, но оно выполняется немедленно, поэтому вы не увидите, как оно движется.Попробуйте трансформироваться после истечения времени ожидания, чтобы увидеть его:

setTimeout(function() {text.transform("m1,0,0,1,5,0")}, 2000);

Редактировать : Хорошо, я посмотрел на это немного больше и обнаружил некоторые вещи, которые могут помочь.Вы можете следить за этим в fiddle .

Использование свойства matrix элемента на самом деле не задокументировано (и мне интересно, почему Matrix документируется вообще, потому что кажется, что он используетсявнутренне, но на самом деле не предназначено для использования пользователями Рафаэля), и единственный способ, которым я смог выяснить, применил ли он его к элементу, это получить строку преобразования для матрицы и применить ее, используя element.transform().Одна из проблем заключается в том, что Matrix.toTransformString(), похоже, имеет ошибку в том, что если перевод x или y равен 0, перевод теряется полностью (я только что сообщил об этом Дмитрию).Я смог заставить его возвращать матричную строку, передав {isSimple: false}, и это вроде работает.

Однако стоит отметить, что при использовании этого метода все вращение и масштабирование, по-видимому, связаны сorigin, что несколько громоздко (если вы не более хорошо разбираетесь в матричных преобразованиях, чем я, что было бы не сложно).В любом случае, скрипка запускает несколько комбинаций преобразований на нескольких элементах.Это немного неаккуратно, но я думаю, что это может дать вам некоторые идеи о том, как продолжить матричные преобразования (или если вам лучше просто использовать функции преобразования элементов [например, translate, scale and rotate] напрямую).

...