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

storm_ 24.01.2009 02:15

Определение из множества клипов самого широкого и самого узкого
 
Дорогие форумчане.
Ситуация в следующем, на сцену прелоадером загружаются картинки в сгеннерированные клипы. У каждой картинки разная ширина. Нужно всего то определить самый широкий и самый узкий клип.

К примеру. Есть три переменные с тремя разными значениями. Я их забиваю в массив, а вот как теперь вывести из него только максимальное и минимальное значение?
Код AS1/AS2:

m0 = 1;
m1 = 5;
m2 = 3;
var arrayWidth:Array = new Array();
for (i=0; i<3; i++) {
        arrayWidth.push(this["m"+i]);
        trace(arrayWidth[i]);
}

Помогите разобраться пожалуйста.

Fatality 24.01.2009 03:06

Ну в случае с массивом максимальное и минимальное значение удобно получать путем сортировки копии массива.
Код AS1/AS2:

function max(array:Array):Number
{
        var temp:Array = arr.slice();
        temp.sort();
        return temp[temp.length - 1];
}
function min(array:Array):Number
{
        var temp:Array = arr.slice();
        temp.sort();
        return temp[0];
}
var arr:Array = [5,4,1,3,6,2];
trace(max(arr));
trace(min(arr));


storm_ 24.01.2009 03:17

Вроде, то что надо. Работает!
Спасибо за поддержку, Fatality, в столь поздний час. :)

Fatality 24.01.2009 03:35

Рад был помочь, только тот способ не полноценен он будет нормально сортировать числа только от 0 до 9.
Такая конструкция намного лучше:
Код AS1/AS2:

Array.prototype.max = function()
{
        var copy:Array = this.slice();
        copy.sort(16);
        if (!isNaN(copy[this.length-1]))
        {
                return copy[this.length-1];
        }
        else
        {
                return NaN;
        }
};
Array.prototype.min = function()
{
        var copy:Array = this.slice();
        copy.sort(16);
        if (!isNaN(copy[0]))
        {
                return copy[0];
        }
        else
        {
                return NaN;
        }
};
 
var arr:Array = [52, 465, 13545];
trace(arr.max());
trace(arr.min());

теперь у любого массива есть методы max() и min(), так удобнее.

storm_ 24.01.2009 04:21

=)
Еще раз спасибо.
Я только что столкнулся с проблемой десятичных чисел.
Спасибо.


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

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