![]() |
|
||||||||||
|
|||||
|
[+2 06.05.08]
Регистрация: Nov 2007
Сообщений: 24
|
Я создал массив из хотически разбросанных мувиков "ball". И хочу найти любые пересечения этих мувиков. То есть мне нужно перебрать все элементы массива, сравнивая их между собой. В коде что-то неправильно.
var n:Number = 0;
var radius = 15;
var mol:Array = [];
for ( i = 0; i<4; i++) {
mol[i]= attachMovie("ball", "ball"+n, n++);
mol[i]._x = 200*Math.random();
mol[i]._y = 200*Math.random();
t1=mol[i]._x
t=mol[i-1]._x
r1=mol[i]._y
r=mol[i-1]._y
rast1=Math.abs(t1-t)
trace(rast1)
trace(rast2)
rast2=Math.abs(r1-r)
if(rast1<30 and rast2<30) {trace(radius)}
}
|
|
|||||
|
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Какие значения по вашему должны принимать вот эти переменные, при i=0
И как вы рассчитываете просмотреть значение вот этой переменной, до её вычисления |
|
|||||
|
[+2 06.05.08]
Регистрация: Nov 2007
Сообщений: 24
|
Ralfdog я понимаю что значения при i=0 будут undefined. Но я же поэтому и спрашиваю, каким образом можно сравнить каждый элемент массива с остальными, просто я, то этого не понимаю.
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
var n:Number = 0;
var radius:Number = 15;
var mol:Array = [];
for (var i:Number = 0; i < 4; i++) {
var mc:MovieClip = attachMovie ("ball", "ball" + n, n++);
mc._x = 200 * Math.random ();
mc._y = 200 * Math.random ();
mol.push (mc);
if (i > 0) {
for (var j:Number = 0; j < i; j++) {
var x:Number = mol[j]._x;
var y:Number = mol[j]._y;
var dx:Number = mc._x - x;
var dy:Number = mc._y - y;
var dist:Number = Math.sqrt (dx * dx + dy * dy);
if (dist < radius * 2) {
trace (dist);
}
}
}
}
|
|
|||||
|
[+2 06.05.08]
Регистрация: Nov 2007
Сообщений: 24
|
Спасибо iNils! Код работает, буду разбиратся!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:29. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|