2009-08-27 10 views
2

Я работаю над тем, чтобы некоторые фигуры плавали вокруг экрана в случайном порядке. В конце концов они будут взаимодействовать друг с другом, а также иметь функции onclick. Я могу заставить круги отображать на экране, но я не могу заставить их двигаться. Кажется, что функция .animate() не то, что мне нужно здесь.Использование Raphael JS для формирования фигур вокруг экрана

Кто-нибудь знает, как я буду это делать?

Вот что у меня есть:

jQuery(function ($) { 

    // Global Vars 
    var items = 30, 
    width = window.innerWidth, 
    height = window.innerHeight, 
    paper = Raphael("galaxy", width, height), 
    frameRate = 100, 
    i, 
    galaxy = [], 
    star = [], 
    stars = []; 

    // Do some variants for each item 
    for (i = 0; i<items; i++) { 
     stars[i] = { 
      x : Math.random() * width, 
      y : Math.random() * height, 
      r : Math.random()*255, 
      g : Math.random()*255, 
      b : Math.random()*255, 
      size : Math.random() * 20 
     } 
    } 

    // Creates canvas 320 × 200 at 10, 50 
    // Creates circle at x = 50, y = 40, with radius 10 
    for (i = 0; i<items; i++) { 
     star[i] = paper.circle(stars[i].x, stars[i].y, stars[i].size); 
     star[i].attr("fill", "rgb("+stars[i].r+", "+stars[i].g+", "+stars[i].b+")"); 
     star[i].attr("stroke", "none"); 

    }//end for 

}); 

ответ

3

она могла бы работать с неживой(). Если вы, например, добавьте это к вышеуказанной функции:

(function anim() { 
    for (i = 0; i<items; i++) { 
     newX = Math.random() * width; 
     newY = Math.random() * height; 
     star[i].animate({cx: newX, cy: newY}, 1000); 
    } 
    setTimeout(anim, 1000); 
})(); 

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

+0

Ничего себе, это прекрасно. Я попробовал разные комбинации использования setTimeout, но я никогда не смог понять это правильно. Благодаря! –