Форум 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=98233)

iNils 14.07.2007 01:16

Cкептик, я не зря написал "проснулись", вы видели 2-ой пост данной темы (на первой странице)?

Den_Sao_Pin 14.07.2007 14:06

Ладно, Флеш то у меня 8, но АкшнСкрипт - второй ;-)
Предварительно создаешь три мувика с любыми именами (в самих мувиках: первый кадр actions содержит команду stop(); следующий кадр называется hit) - в свойствах Linkage (правая кнопка на мувике в библиотеке - для того, чтобы можно было обращаться к мувику из AS по имени) прописываешь имена: bla1_mc, bla2_mc, bla3_mc.
Код:

//С уважением, Den_Sao_Pin. http://mozgoedy.narod.ru/

_global.cDepth = 5;


//Задаю высоту экрана

var stageHeight:Number = 160;


//код для непрерывного появления восклицаний
this.onEnterFrame = function() {
        /*если хочешь, чтобы появлялось больше экземпляров-вторую цифру поменяй на меньшую; вообще, смысл этого следующий: если случайное число из диапазона от 0 до 5, равно 0, то происходит следующее*/
        if (randRange(0, 5) == 0) {
                //прикрепляю мувики к сцене
                var randomBla:Number = randRange(1, 3);
                var thisMC:MovieClip = this.attachMovie("bla"+randomBla+"_mc", "bla"+_global.cDepth+"_mc", _global.cDepth);
                _global.cDepth++;
                //выставляю место появления
                var randomX:Number = randRange(30,450);
                var randomY:Number = randRange(170,220);
                thisMC._x = randomX;
                thisMC._y = randomY;
                var scale = randRange(70, 100);
                //изменяю масштаб восклицаний
                thisMC._xscale = scale;
                thisMC._yscale = scale;
                thisMC._alpha = scale;
        }
        thisMC.onEnterFrame = function() {
                        //двигаю новые мувики по направлению вверх
                        var speed:Number = randRange(3,8);
                        this._y -= speed;
                        //немного сдвигаю по х + меняю масштаб
                        this._x -= .4;
                        this._xscale +=speed/3;
                        this._yscale +=speed/3;
                        //при выходе за пределы границы экрана - второй кадр мувика bla
                        if (this._y<stageHeight) {
                                this.gotoAndPlay("hit");
                        var ymov = this._y;
                        //это уже пошли изменения для второго кадра
                                ymov -= speed;
                                xmov *= 0.5;
                               
                                this._alpha -=speed/1.2;
                                this._xscale -=2*speed;
                                this._yscale -=2*speed;
                                //если мувик "подбирается" к самому верху - удаляю его, чтобы он не загружал память
                                if (this._y<50) {
                                        this.removeMovieClip();
                                }
                        }
}

//функция для задания случайных чисел в заданном диапазоне
function randRange(minNum:Number, maxNum:Number):Number {
        return (Math.floor(Math.random()*(maxNum-minNum+1))+minNum);
}
}

Вот в принципе все :-)

etc 14.07.2007 14:17

Den_Sao_Pin, приведенный код — ActionScript 1 чистейшей воды (наличие типизации — это ещё не AS2).

Den_Sao_Pin 14.07.2007 15:18

тем более ;-)

Cкептик 14.07.2007 17:02

Цитата:

Сообщение от iNils
Cкептик, я не зря написал "проснулись", вы видели 2-ой пост данной темы (на первой странице)?

Сравните и вы поймете, что мой вариант - правильней.

iNils 14.07.2007 18:37

Цитата:

Сообщение от Cкептик
Сравните и вы поймете, что мой вариант - правильней.

Не вижу. Я вижу только собственную интерпретацию вопроса и использование устарелого метода int. А фактически, ваш код округляет числа, а у БигДана нет, поставь он Math.round, было бы тоже самое, но в вопросе не упоминалось, что числа должны быть целыми.


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

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