Просмотр полной версии : Не работает Math.round()
1). Подскажите, чет не работает.
_root["squ"+i+j]._alpha = Math.round(Math.random()*50);
Значения получаются дробными, а почему?
2). Как можно округлять до определенного значения?
artem_fs
06.02.2009, 13:46
да работает вроде
lexa2000lexa
06.02.2009, 13:47
1 не знаю как у вас но у меня ваш код номально работает.
2. округлять можно вот такtrace(Math.round(1.111*10)/10)
Значения получаются дробными, а почему?Вы это у альфы потом смотрите?
так, понятно что ничего не понятно, привожу код целиком
for (i=1; i<=6; i++) {
for (j=1; j<=6; j++) {
attachMovie("squ", "squ"+i+j, i*10+j, {_x:50*j, _y:50*i});
attachMovie("squ_ram", "squ_ram"+i+j, 100+i*10+j, {_x:50*j, _y:50*i});
z = Math.round(Math.random()*50);
trace(z);
_root["squ"+i+j]._alpha = z;
_root["squ"+i+j].onRollOver = function() {
trace(this+" "+this._alpha);
};
}
}
вот z ровное, но когда присвается к объекту как _alpha, становится дробным.
Это особенность реализации альфы. Мы процентный доступ, а внутренняя реализация преобразует проценты в значения диапазона 0..255. Отсюда погрешность. Это нормально.
var m = 256 / 100;
for (var i = 0; i < 101; i++) {
this._alpha = i;
var alpha = Math.floor (i * m) / m;
trace (i + " " + (this._alpha == alpha));
}
lexa2000lexa Спасибо, разобрался.
А с альфой странно конечно, ладно когда я ее вычисляю, могу понять, но когда целое число присваивается, все равно остается дробным...
Спасибо и на этом, а то голову ломал :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.