PDA

Просмотр полной версии : Почему _alpha выдает странные результаты?


Mr. Fixit
06.10.2007, 23:04
n._alpha -=2;
trace(n._alpha) // 97.65625

или

trace(n._alpha=99) // 99
trace(n._alpha) // 98.828125

DarkLight
06.10.2007, 23:15
вобщем реально во флеше альфа 16ричная...поэтому остальные округляются...это обсуждалось на форуме и есть в книге Ш. Бхангала Флеш. Трюки. Поэтому если к альфе 0 100 раз сделать ++ она станет 78 всего. Точны только 0,25,50,75,100.

Mr. Fixit
06.10.2007, 23:20
ого, спасибо.
А еще хня была с классом Tween, где по оси _x мувик перемещался не на 260, а на 259.95 каждый раз.. почему так?

tweenSlider = new mx.transitions.Tween (_root.previewAnim_mc.preview_mc, '_x', mx.transitions.easing.Strong.easeInOut, _root.previewAnim_mc.preview_mc._x, to, 1, true);

Nirth
06.10.2007, 23:55
Потому что у Flash Player по математике 2.

Я обчно на complete (или какое там событие? у меня свой твин) вешаю точные координаты.

DarkLight
07.10.2007, 00:01
что меня бесит во флеше: погрешности и антиализинг векторной графики, изза которого нарисовать ряд из 40 столбиков с тонкими ровными промежутками - уже головная боль(

Seer
07.10.2007, 00:02
боян !

etc
07.10.2007, 00:52
Потому происходит конвертация значений 0—100 в 0—255.

Zone71
07.10.2007, 01:16
Это еще хорошо. Пишу следующий код:


var a:Number = 0.16
var b:Number = 0.65
trace(a+b)


и выводит 0.80999999999999 вместо 0.81.

Что интересно, когда пишу


var a:Number = 0.16545
var b:Number = 0.65417
trace(a+b)

выводит 0,81962, т.е. все правильно
Казалось бы, что в первом случае результат должен быть точнее, но нет.

Kikasso
07.10.2007, 01:26
Альфа бывает и больше сотни. Если мувик имеет полупрозрачную заливку, при альфе 100 он полупрозрачен, а при альфе 200 - нет.

iNils
07.10.2007, 02:21
Это еще хорошо. Пишу следующий код:


var a:Number = 0.16
var b:Number = 0.65
trace(a+b)


и выводит 0.80999999999999 вместо 0.81.
А у меня выводит 0.81

Mr. Fixit
07.10.2007, 03:19
выводит 0.81

Zone71
07.10.2007, 12:01
И в CS3, и во Flash 8 такой же результат - 0.80(9).
Только сложение дробных чисел до 2 знаков после запятой дает такой результат. Парадокс.

etc
07.10.2007, 12:41
Нет никаких парадоксов, уже обсуждали это все пару сотен раз.

Zone71
07.10.2007, 14:06
Нет никаких парадоксов, уже обсуждали это все пару сотен раз.

В математических способностях флеша парадокса - нет, но есть в том, что у iNils`а, например, выводит как надо, у меня - нет, во Flex та же самая ситуация.

etc
07.10.2007, 14:19
У меня, у iNils и Mr. Fixit выводит 0.81.

screamge
07.10.2007, 14:48
Я тоже проверил, всё чётко.