PDA

Просмотр полной версии : Определение из множества клипов самого широкого и самого узкого


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

К примеру. Есть три переменные с тремя разными значениями. Я их забиваю в массив, а вот как теперь вывести из него только максимальное и минимальное значение?
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
Ну в случае с массивом максимальное и минимальное значение удобно получать путем сортировки копии массива.
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.
Такая конструкция намного лучше:
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
=)
Еще раз спасибо.
Я только что столкнулся с проблемой десятичных чисел.
Спасибо.