Форум 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 появления Movie clip-a в заданных пределах(x;y) (http://www.flasher.ru/forum/showthread.php?t=135286)

madison 20.01.2010 04:20

Random появления Movie clip-a в заданных пределах(x;y)
 
Други, помогите реализовать, такое...

Random появления(исчез.) Movie clip-a в заданных пределах(x;y), по времени.

____________x
|-x----x--x----
|---x--------x-
|x------x------
|---------x--x-
|----x-----x---
y

где x - Мovie clip

thx

Juice_Green 20.01.2010 07:24

завести массив, элементы которого будут заданные координаты x,y, рандомно выбирать один из элементов этого массива,
в чем именно у вас трудности в реализации?

FRAG 20.01.2010 08:14

создаешь сцену 200х200 (код писал исходя из таких размеров), в ней рисуешь свой клип, у меня в примере это квадрат 20х20, ставишь его в координату 10;10, чтоб он был в левом верхнем углу. вешаешь на него скрипт:

onClipEvent(load){x = this._x}//получаем начало координат по иксу с которого будет прыжок
onClipEvent(enterFrame){
if(random(100) > 70){//создаем условие при котором произойдет прыжок по иксу, чем больше значение от 50 (0<>99), тем реже клип будет прыгать
this._x = x + random(10)*20;//задаем прыжок на случайную координату, любой прыжок будет происходить точно по сетке в 20 рх
}}
//только проверь, если копировать будешь код,чтоб коменты все были после "//"

а в сцену в первый фрейм, в котором и находится наш квадрат пишешь это:

for(i = 1; i <= 9; i ++){//цикл создания 10 подобных основному клипов вниз по у
clip.duplicateMovieClip('clip'+i, i);//создаем копию клипа
setProperty('clip'+i, _y, i*20 + 10);//задаем ей _у ниже на 20 px чем у основного,
setProperty('clip'+i, _x, 10);//и икс 10 рх чтоб все копии находились друг под другом
}

вот и все, скорость появления так же зависит и от частоты кадров. потому-что прыжок выполняется по событию (enterFrame)

udaaff 20.01.2010 11:02

Код AS1/AS2:

var depth:Number = 0;
var intervalID:Number = setInterval(intervalHandler, 20);
 
function intervalHandler():Void
{
        var mc:MovieClip = attachMovie("id", "mc" + depth, depth++);
        mc._x = Stage.width * Math.random();
        mc._y = Stage.height * Math.random();
        mc.onEnterFrame = mc_onEnterFrameHandler;
}
 
function mc_onEnterFrameHandler():Void
{
        this._alpha -= 5;
        if (this._alpha < 0)
                removeMovieClip(this);
}



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

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