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

DEM90 23.04.2009 04:01

увеличение\уменьшение размера объекта
 
У меня есть 7 объектов (имена o1,o2,o3 и т.д.), мне надо, что рандомно сначало один увеличился (к примеру на 15%, или на какое-то кол-во пикселей), потом что бы он вернулся к изначальному размеру 9тоже плавно), потом это повторилось, но уже с другим объектом и так бесконечно.
Заранее спасибо за ответ.

lexa2000lexa 23.04.2009 11:01

в помошь вам
Код AS1/AS2:

_xscale,_yscale и Math.round(Math.random()*7)


DEM90 23.04.2009 20:34

Эти функции я знаю, у меня проблема в том, что я не знаю как сделать, что бы сначало увеличивался один, потом уменьшался до исходного размера, потом брался другой и т.д. и т.п.

ЗЫ. я пользовался протсо функцией random(), это сильно отличается от Math.round(Math.random()*7)?

Stargazer 23.04.2009 23:00

Цитата:

Math.round(Math.random()*7)
Код AS1/AS2:

Math.floor(Math.random() * x); // даёт линейное распределение вероятности (но не выпадет сам X. максимум: X-1)
Math.round(Math.random() * x); // 0 и Х имеют половину вероятности выпадания по сравнению с остальными


Art_133 23.04.2009 23:32

Привет! Делать было нечего решил Вам немного помочь. Но столкнулся с задачей решение которой не могу найти. Нужна помощь.
Вот код:
Код AS1/AS2:

// Импортируем классы для анимации обьектов
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
//Номер текущего клипа
var curNum:Number = 0;
//Колличество роликов
var num:Number = 7;
//Задержка между ресайзами
var time = 1;
// Создаём масив что бы увеличение обьектов не повторялось больше 1-го раза за круг
var randArr:Array = new Array();
// количество роликов 7
for (var i:Number = 0; i<=(num-1); i++) {
        // заполняем масив
        randArr.push(i);
}
// Перемешваем масив
//Функция перемешивания массива
Array.prototype.shuffle = function(b) {
        var i = this.length, j, t;
        while (i) {
                j = Math.floor((i--)*Math.random());
                t = b && typeof this[i].shuffle !== 'undefined' ? this[i].shuffle() : this[i];
                this[i] = this[j];
                this[j] = t;
        }
        return this;
};
 
//Вызываем эту функцию
randArr.shuffle();
 
// Вызываем функцию изменения размера
reSize(200,randArr[curNum]);
 
 
 
// Функция Изменение размера
function reSize(n:Number, clip:Number) {
        trace(clip);
        var Xscale:Tween = new Tween(_root['o'+clip], "_xscale", Strong.easeOut, _root['o'+clip]._width, n, 2, true);
        var Yscale:Tween = new Tween(_root['o'+clip], "_yscale", Strong.easeOut, _root['o'+clip]._height, n, 2, true);
        Xscale.onMotionFinished = function() {
                this.yoyo();
        };
        Yscale.onMotionFinished = function() {
                this.yoyo();
        };       
        //trace(n);
}
 
//Функцию нахождения случайного числа
//r - максимальное число
function rand(r:Number):Number {
        return (Math.floor(Math.random()*r));
}

Вроде работает, но нужно ведь остановить трансформацию текущего клипа и запустить функцию заново прибавив 1 к номеру элемента массива. То-есть следующий код:
Код AS1/AS2:

 
// Перебираем масив
curNum++;
if (curNum>num) {
curNum = 0;
}
// Запускаем функцию трансформации заново 
intr = setTimeout(reSize, time*1000, 200, randArr[curNum]);

Подскажите как отследить момент когда текущий клип вернулся к старым размерам и остановить его?
Спасибо!
П.С. Извините за возможно не грамотный код, я только учусь...

DEM90 24.04.2009 00:34

Art_133, Большое спасибо!

ЗЫ. я бы делал так:
создал еще две переменные sizeX = _root['o'+clip]._xscale; и sizeY = _root['o'+clip]._yscale;. Они определяются в самом начале, а потом мы просто смотрим, если нынешний размер объекта равен этим двум, то останавливаем издевательства над этим и начинаем издеваться над следующим.


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

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