Форум 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)
-   -   Random мувиков на области, ограниченной определенным мувиком не квадратной формы. (http://www.flasher.ru/forum/showthread.php?t=83726)

Olejan 14.08.2006 03:49

Random мувиков на области, ограниченной определенным мувиком не квадратной формы.
 
Есть мувик, с названием mcOblast и мувик mcZ.
Так вот надо, чтобы mcZ рандомно появлялся на области, ограниченной мувиком mcOblast. mcOblast - имеет НЕ КВАДРАТНУЮ форму, а произвольную: полоски + все что угодно...
P.S. Прошу не ругаться сильно, вводил в поиске "random", ничего похожего не нашел... :(

Barzo_V 14.08.2006 08:58

mach.hitTest(m)

если объкт mach вошел в объект m.
читай хелп по hitTest

Olejan 14.08.2006 14:41

Перечитал взад и вперед.
А как это с рандомом совместить?

whiteRed 14.08.2006 14:44

генерируй точки рандомом пока не сработает хиттест

Olejan 14.08.2006 14:52

while'ом?

Olejan 14.08.2006 15:12

А как вообще точки генерировать?

Olejan 14.08.2006 15:17

Имеются ввиду координаты _x и _y?

KidsKilla 14.08.2006 15:53

Код:

function getR(){
        return {
                x:Math.round(mcOblast ._x+Math.random()*mcOblast ._width),
                y:Math.round(mcOblast ._y+Math.random()*mcOblast ._height)
                }
}
var r = getR();
while(!mcOblast .hitTest(r.x,r.y,true)){
        r = getR();
}
mcZ._x = r.x;
mcZ._y = r.y;


Olejan 14.08.2006 16:00

У меня вот такой бред получился:
Код:

function rZ() {
        for (i=0; !mcFoto.hitTest(X, Y, true); i++) {
                X = Math.random()*468;
                Y = Math.random()*60;
                if (mcFoto.hitTest(X, Y, true)) {
                        _root.mcF.attachMovie(mcZ, "mc"+i, i, {_x: X, _y: Y});
                }
        }
}
I = setInterval(rZ, 100);

- не работает!
Мне mcZ-ки аттачить надо в ту область с интервалом определенным в разные точки области...

Olejan 14.08.2006 16:01

Т.е.
Код:

function rZ() {
        for (i=0; !mcOblast.hitTest(X, Y, true); i++) {
                X = Math.random()*468;
                Y = Math.random()*60;
                if (mcOblast.hitTest(X, Y, true)) {
                        _root.mcF.attachMovie(mcZ, "mc"+i, i, {_x: X, _y: Y});
                }
        }
}
I = setInterval(rZ, 100);


Olejan 14.08.2006 16:07

2 KidsKilla:
Мне mcZ-ки аттачить надо в ту область с интервалом определенным в разные точки области...
А твой код, не пойму что делает... :(

Olejan 14.08.2006 16:10

2 KidsKilla:
Вытащил на рабочую область mcZ, все равно твой код не работает :(

Olejan 14.08.2006 16:15

2 KidsKilla:
Код:

return {
                x:Math.round(mcOblast ._x+Math.random()*mcOblast ._width),
                y:Math.round(mcOblast ._y+Math.random()*mcOblast ._height)
                }

Ты же по длине и ширине области mcOblast проверяешь?!? а мне надо только саму область, а не прямоугольник, в который она вписана...

KidsKilla 21.09.2006 14:35

Код:

function getR(mc){
        return {
                x:Math.round(mc._x + Math.random() * mc._width),
                y:Math.round(mc._y + Math.random() * mc._height)
                }
}
function placeRandom(obl, z){
        var r = getR(obl);
        while(!obl.hitTest(r.x, r.y, true)) r = getR(obl);
        z._x = r.x;
        z._y = r.y;
}

//Вызов:
var t = setIntarval(placeRandom, 1000, mcOblast, mcZ);



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

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