2014-09-04 2 views
0

Я пытаюсь создать эффект частиц с привязкой SVG, и я хочу, чтобы мои частицы отскакивали от краев SVG.Snap SVG/jQuery Collision

Здесь JSFiddle

 if ( pElement < 0 || pElement > eval(w)) { 
      var vlcx = - vlcx; 
      var vlcy = vlcy; 
     }; 

     if ( pElement < 0 || pElement > eval(h)) { 
      vlcx = vlcx; 
      vlcy = - vlcy; 
     } 

Я реверс скорость, но .. ничего

+0

Что означает «ничего»? Сообщения об ошибках? Ваш код не действует? Если это последний, вы уверены, что он даже выполняет? – skrrgwasme

+0

Нет сообщения об ошибке. Частицы покидают svg, я думаю, что забыл одно условие, которого я не знаю. Это кажется правильным для меня. –

+0

Обновление скрипки. Теперь они отскакивают по краям. Http://jsfiddle.net/dmsr2rpw/2/ –

ответ

0

Несколько исправлений в вашей скрипке. Во-первых, вам нужно обновить скорость каждый раз при перемещении частицы, иначе это обыкновение обратный

pElement.attr({ 
     cx: eval(pElementX+=vlcx), 
     cy: eval(pElementY+=vlcy), 
     vx: vlcx, 
     vy: vlcy, 
    }); 

Во-вторых, в коде выше, pElement должен быть pElementX или pElementY. Используйте posX или posY, поэтому мы не будем путаться с pElement.

В-третьих, используйте console.log(i,'/', posX,'/', posY,'/', vlcx,'/', vlcy) для отладки позиции.

Потенциальная ошибка: используйте posX < radiusP/2 вместо posX < 0, поэтому частицы не вылетают из коробки SVG перед реверсом. Точно так же posX > (width - radiusP/2)

Примечание: Если Math.random() == 10 для обоих X и Y скорости, вы будете иметь неподвижную частицу.

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

  • Нет связанных вопросов^_^