Hi again,<br>I made a mistake in my last post<br><br>The part that changes the position is:<br><br> ;;adjust position<br> (setf (getf word :x) (+ x atract-x))<br> (setf (getf word :y) (+ y atract-y))<br><br> <br>
;;move display item<br> [do not works] ---> (set-coords *drawing-canvas-reference* (getf word :display-item) (list (getf word :x) (getf word :y)))<br> [works] ---> (itemmove *drawing-canvas-reference* (getf word :display-item) atract-x atract-y)<br>
<br>Thanks!<br>André<br><br><br><div class="gmail_quote">On Tue, Sep 13, 2011 at 10:42 AM, Andre RsFiveTwo <span dir="ltr"><<a href="mailto:rs.andre@gmail.com">rs.andre@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>I'm trying to create an animation with words based on the (ltktest) function in the library (rotate).<br>For that I'm storing the words in a plist. The code to maintain the words is:<br><br>(defvar *initial-word-energy* 100)<br>
(defvar *words* '()) ; list of words in the form (:text :x :y :energy)<br><br>(defun make-word (text x y display-item)<br> (list :text text :x x :y y :display-item display-item :energy *initial-word-energy*))<br><br>
(defun add-word (word) (push word *words*))<br><br><br>Then I created a button that will add words to the plist and to the canvas:<br><br> (enter-text-button (make-instance 'button <br> :master controls <br>
:text "Enter text"<br> :command (lambda ()<br> ;;store word in *words*<br>
(let* ((text (text user-text-entry))<br> (x (random (read-from-string <br> (cget drawing-canvas-reference <br>
:width))))<br> (y (random (read-from-string <br> (cget drawing-canvas-reference <br>
:height))))<br> ;;put text in canvas<br> (display-item (create-text drawing-canvas-reference<br>
x<br> y<br> text))<br>
(word (make-word<br> text<br> x<br>
y<br> display-item)))<br> <br>
;;store new word<br> (add-word word)<br> <br> ;;clear entry widget<br>
(setf (text user-text-entry) "")<br> (focus user-text-entry)<br> (finish-output)))))<br>
<br><br>The idea is that a word will store the position, the text, other things and the visual representation of the text.<br><br>In the animation part (same code as rotate in the library) I move the words, and here is the problem.<br>
If I try the move changing the coordinates of the updated values of x and y of the word the text apearing in the canvas 'jumps' in the first move, afterward it move normally.<br>The other alternative is to use itemmove, which works. but I would like to just manipulate x and y of the word and transpose it to the created text item in the canvas.<br>
<br> ;;move display item<br> [do not work] ---> (set-coords *drawing-canvas-reference* (getf word :display-item) (list (getf word :x) (getf word :y)))<br> [works] ----> (itemmove *drawing-canvas-reference* (getf word :display-item) atract-x atract-y)<br>
<br>So, I would like to understand better why there seems to be a difference in the values of x an y for the element stored and the element displayed, although they have been created with the same values.<br>If possible, I would like to know how can I query the created text element about it's x and y values.<br>
<br>Sorry for the long message.<br>Any help is appreciated.<br>Thanks,<br>André<br><br><br>
</blockquote></div><br><br clear="all"><br>-- <br>[]'s,<br>André<br>