Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Работа с массивами (http://www.flasher.ru/forum/showthread.php?t=117667)

Slayer333 01.11.2008 23:53

Работа с массивами
 
Я создал массив из хотически разбросанных мувиков "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)}
                }


iNils 01.11.2008 23:55

Для оформления своего кода надо использовать теги [code][/code].

RAlfDog 02.11.2008 05:28

Какие значения по вашему должны принимать вот эти переменные, при i=0
Код:

t=mol[i-1]._x
r=mol[i-1]._y

И как вы рассчитываете просмотреть значение вот этой переменной, до её вычисления
Код:

trace(rast2)
rast2=Math.abs(r1-r)


Slayer333 02.11.2008 13:07

Ralfdog я понимаю что значения при i=0 будут undefined. Но я же поэтому и спрашиваю, каким образом можно сравнить каждый элемент массива с остальными, просто я, то этого не понимаю.

iNils 02.11.2008 13:20

Код:

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);
                        }
                }
        }
}


Slayer333 02.11.2008 14:44

Спасибо iNils! Код работает, буду разбиратся!


Часовой пояс GMT +4, время: 06:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.