2011-12-14 6 views
0
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> 

благодаря

+0

Некоторые * БОЛЬШЕ * пример кода? –

ответ

1

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

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

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

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

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

+0

метод преобразования работает. Но когда я манипулирую матрицей, например ele.matrix.translate (dx, dy), перевод не применяется к элементу. Мне нужно вызвать другой метод, например ele.update() – rajkamal

Смежные вопросы