I think your problem might not be with Canvas Library (which I've
never heard of before now) - but more with the fact that you store
coordinates in a string(?).

At one point you're doing this:

    positionCoordinates[grid_id] = x_cord + "," + y_cord; // let's say
"50,75"

and later you do this:

    xycoord = positionCoordinates[j].split(","); // this would result
in ["50", "75"]

    x_cord = xycoord[0]; // "50"
    y_cord = xycoord[1]; // "75"

x_cord is now a string - not a number.

In javascript string concatenation and number addition use the same
operator: + (plus)

So "50" + "-40" results in "50-40" not 10 as you would probably
expect. Thats what results in the console output:

examples.interactive.js:3611450-1305NaN,24957-24651NaN


You need to convert your strings to numbers (if you still insist on
storing coords in string format) - String.toInt method to the rescue:

    x_cord = xycoord[0].toInt(); // 50 - now a number
    y_cord = xycoord[1].toInt(); // 75 - also a number


...BUT you should definately consider using an array with numbers in
it for storing the coords! - and remember to declare your variables
with the "var" keyword - also in your for-loops



On Oct 4, 11:20 am, shouvik <[email protected]> wrote:
> Here is a Jsfiddle implementation of my code. Hope this helps.
>
> http://jsfiddle.net/WRRns/5/
>
> If I run it without the animate function it works fine. But
> otherwise.. You got to see it in a browser console to understand whats
> happening.
>
> You could find the usage of the function 
> here.http://forvar.de/js/mcl/examples.interactive.html
>
> Thanks
> Shouvik
>
> On Oct 4, 10:50 am, Oskar Krawczyk <[email protected]> wrote:
>
>
>
>
>
>
>
> > It would be better if you posted a jsfiddle.net instead of pasting the code 
> > here.
>
> > O.
>
> > On 2010-10-04, at 06:59, shouvik wrote:
>
> > > Hi Guys,
>
> > > Newbie here. I may lack my knowledge in understanding of mootools but
> > > here is an issue I am facing.
>
> > > I am facing some trouble implementing an animation function.
> > > specifically the Cmorph function. If I hard set the new position of
> > > the tiles on the canvas element the position changes directly, but
> > > when I try animate into that position instead of just replacing the
> > > value. All the items from my canvas just disappear.
>
> > > Here is the function:
>
> > >    CANVAS.reanimate = function ()
> > >    {                                                                      
> > >                          //not optimised yet: animations are not working
> > > properly.
>
> > >            console.log("calling the reanimate function");
>
> > >            for(i=0; i<(gridSize*gridSize); i++)
> > >            {
> > >                    var cfn = currentCoinPositions[i];
> > >                    var xycoord = positionCoordinates[i].split(",");       
> > >       //hold
> > > the new position of the elements
> > >                    var x_cord_new = xycoord[0];
> > >                    var y_cord_new = xycoord[1];
>
> > >                    currentCoinPositions[i].x = x_cord_new;   //assigning 
> > > positions
> > > from an object array which is a copy of all the items on canvas
> > >                    currentCoinPositions[i].y = y_cord_new;
>
> > >                    if(cfn !=
> > > 'nill')                                                          //
> > > changing the position of the elemet
> > >                    {
> > >                            var x_cord = 
> > > CANVAS.layers.get("myLayer").get("coin_"+i).x;
> > >                            CANVAS.layers.get("myLayer").get("coin_"+i).y 
> > > = y_cord_new; //
> > > comment when using animation function.
> > >                    }
> > >            }
>
> > >            //uncomment it and comment above to see animation(animations 
> > > not
> > > working yet)
> > >            /*
> > >            for(i=0; i<(gridSize*gridSize); i++)         //loop 
> > > initialized for
> > > animation of the coins to the new position.
> > >            {                                                              
> > >  //If I use
> > > this code in my implementation, all the coins are removed from the
> > > canvas when the reanimate function is called.
> > >                    if(currentCoinPositions[i] != 'nill')
> > >                    {
> > >                            coin = "coin_"+i;
> > >                            x = currentCoinPositions[i].x;
> > >                            y = currentCoinPositions[i].y;
> > >                            console.log(x+","+y)
> > >                            new 
> > > Cmorph(CANVAS.layers.get("myLayer").get(coin),
> > >                            {
> > >                               duration : 1000,
> > >                               transition : 'back:out',
> > >                             }).morph({
> > >                               x : x,
> > >                               y : y
> > >                            });
> > >            }
> > >    } */
> > >    }
>
> > > Now if you look at the finction I have commented out, I have noticed a
> > > very peculiar behavior here.
>
> > > I randomly clicked on the canvas after all the items vanished from it,
> > > dragged the pointer around the canvas and saw really funny positions
> > > for where the items are located on my console!
> > > I also used the animation function in the redraw thread and noticed
> > > that the position of x and y coordinates of my canvas items
> > > exponentially increase. Please advice.
>
> > > Log collection of position.
> > > calling animate down
> > > examples.interactive.js:352195,163 //returns the xy coordinates of the
> > > items in the canvas.
> > > examples.interactive.js:361195,163
> > > examples.interactive.js:352245,135
> > > examples.interactive.js:361245,135
> > > examples.interactive.js:352295,163
> > > examples.interactive.js:361295,163
> > > examples.interactive.js:35245,192
> > > examples.interactive.js:361450-405,13557-13365
> > > examples.interactive.js:35295,220
> > > examples.interactive.js:361950-855,16357-16137
> > > examples.interactive.js:352145,192
> > > examples.interactive.js:3611450-1305,13557-13365
> > > examples.interactive.js:352195,220
> > > examples.interactive.js:361195,220
> > > examples.interactive.js:352245,192
> > > examples.interactive.js:361245,192
> > > examples.interactive.js:352295,220
> > > examples.interactive.js:361295,220
> > > examples.interactive.js:35245,249
> > > examples.interactive.js:361450-405,19257-19008
> > > examples.interactive.js:35295,277
> > > examples.interactive.js:361950-855,22057-21780
> > > examples.interactive.js:352145,249
> > > examples.interactive.js:3611450-1305,19257-19008
> > > examples.interactive.js:352195,277
> > > examples.interactive.js:361195,277
> > > examples.interactive.js:352245,249
> > > examples.interactive.js:361245,249
> > > examples.interactive.js:352295,277
> > > examples.interactive.js:361295,277
> > > examples.interactive.js:35245,306
> > > examples.interactive.js:361450-405,24957-24651
> > > examples.interactive.js:35295,334
> > > examples.interactive.js:361950-855,27757-27423
> > > examples.interactive.js:352145,306
> > > examples.interactive.js:3611450-1305,24957-24651
> > > examples.interactive.js:352195,334
> > > examples.interactive.js:361195,334
> > > examples.interactive.js:352245,306
> > > examples.interactive.js:361245,306
> > > examples.interactive.js:352295,334
> > > examples.interactive.js:361295,334
> > > examples.interactive.js:35245,363
> > > examples.interactive.js:361450-405,30657-30294
> > > examples.interactive.js:35295,391
> > > examples.interactive.js:361950-855,33457-33066
> > > examples.interactive.js:352145,363
> > > examples.interactive.js:3611450-1305,30657-30294
> > > examples.interactive.js:352195,391
> > > examples.interactive.js:361195,391
> > > examples.interactive.js:352245,363
> > > examples.interactive.js:361245,363
> > > examples.interactive.js:352295,391
> > > examples.interactive.js:361295,391
> > > examples.interactive.js:35245,420
> > > examples.interactive.js:361450-405,36357-35937
> > > examples.interactive.js:35295,448
> > > examples.interactive.js:361950-855,39157-38709
> > > examples.interactive.js:352145,420
> > > examples.interactive.js:3611450-1305,36357-35937
> > > examples.interactive.js:352195,448
> > > examples.interactive.js:361195,448
> > > examples.interactive.js:352245,420
> > > examples.interactive.js:361245,420
> > > examples.interactive.js:352295,448
> > > examples.interactive.js:361295,448
> > > examples.interactive.js:317calling the reanimate function
> > > examples.interactive.js:344calling animate down
> > > examples.interactive.js:352195,163
> > > examples.interactive.js:361195,163
> > > examples.interactive.js:352245,135
> > > examples.interactive.js:361245,135
> > > examples.interactive.js:352295,163
> > > examples.interactive.js:361295,163
> > > examples.interactive.js:35245,192
> > > examples.interactive.js:361450-405NaN,13557-13365NaN
> > > examples.interactive.js:35295,220
> > > examples.interactive.js:361950-855NaN,16357-16137NaN
> > > examples.interactive.js:352145,192
> > > examples.interactive.js:3611450-1305NaN,13557-13365NaN
> > > examples.interactive.js:352195,220
> > > examples.interactive.js:361195,220
> > > examples.interactive.js:352245,192
> > > examples.interactive.js:361245,192
> > > examples.interactive.js:352295,220
> > > examples.interactive.js:361295,220
> > > examples.interactive.js:35245,249
> > > examples.interactive.js:361450-405NaN,19257-19008NaN
> > > examples.interactive.js:35295,277
> > > examples.interactive.js:361950-855NaN,22057-21780NaN
> > > examples.interactive.js:352145,249
> > > examples.interactive.js:3611450-1305NaN,19257-19008NaN
> > > examples.interactive.js:352195,277
> > > examples.interactive.js:361195,277
> > > examples.interactive.js:352245,249
> > > examples.interactive.js:361245,249
> > > examples.interactive.js:352295,277
> > > examples.interactive.js:361295,277
> > > examples.interactive.js:35245,306
> > > examples.interactive.js:361450-405NaN,24957-24651NaN
> > > examples.interactive.js:35295,334
> > > examples.interactive.js:361950-855NaN,27757-27423NaN
> > > examples.interactive.js:352145,306
> > > examples.interactive.js:3611450-1305NaN,24957-24651NaN
> > > examples.interactive.js:352195,334
> > > examples.interactive.js:361195,334
> > > examples.interactive.js:352245,306

Reply via email to