PDA

Просмотр полной версии : _alpha. Что за глюк?


Jegor UQ
22.04.2006, 22:46
Помнится даже в 6ом флэшэ сталкивался с такой проблемой. Особо она не мешает, но хочется спросить знающих: "почему так?"


var clip:MovieClip = createEmptyMovieClip ("clip", getNextHighestDepth ());
onEnterFrame = function ()
{
trace (clip._alpha);
clip._alpha > 0 ? clip._alpha = Math.floor (clip._alpha - 1) : delete onEnterFrame;
};


Результат:
100
98.828125
96.875
94.921875
...
5.859375
3.90625
1.953125
0

Даже так: clip._alpha = Math.floor (clip._alpha - 1) - не помагает... :confused:
Объясните пожалуйста причину, ведь это тока с этим свойством происходит.

Спасибо!

etc
22.04.2006, 23:00
вероятно геттер и сеттер для альфы работают по-разному. А точнее прозрачность не может быть задана точно. Возможно, это связано с тем, что альфа-канал, как и r-, g- и b-каналы имеет 256 градаций. Внутри флеша происходит пересчёт в 256 градаций и обратно. Наглядный тому пример:
var clip:MovieClip = createEmptyMovieClip ("clip", getNextHighestDepth ());
clip._alpha = 99;
var b = Math.round(256*0.99);
var c = b/256*100;
trace (clip._alpha+','+c);

Как можно видеть, значения переменной "c" и clip._alpha совпадают с точностью до знака, что позволяет говорить о пересчёте. Хотя, конечно, такая проверка не претендует на верность

etc
22.04.2006, 23:25
var clip:MovieClip = createEmptyMovieClip("clip", getNextHighestDepth());
alpha = 100;
this.onEnterFrame = function() {
clip._alpha = alpha;
var b = Math.floor(256*alpha/100);
var c = b/256*100;
trace(clip._alpha+','+c+','+(c==clip._alpha));
alpha-=0,5;
if (alpha<0) {
delete this.onEnterFrame;
}
};

Вероятно именно так и происходит пересчёт значения alpha. Приведённый пример выше не совсем верен. А пример, приведённый в данном сообщении наглядно иллюстрирует работу флеша с прозрачностью (об этом свидетельствует вывод true во всех trace)

Nox Noctis
23.04.2006, 00:43
http://flasher.ru/forum/showthread.php?t=38562&highlight=%E2%EE%F0%EE%ED%FB

обратите внимание на дату поста.

одно время в хэлпе вообще не было написано про уровни альфы, потом было написано про 128, а теперь я что-то вообще не могу найти четких упоминаний.

Nox Noctis
23.04.2006, 00:46
а, вот, нашел.

http://www.macromedia.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary506.html

короче проблема как всегда всего одна - никто не читает документацию. что "профессионалы", что новички.

etc
23.04.2006, 01:00
В стандартной хелпе об уровнях альфы ни слова (никаких 128 или 256). А ходить на livedocs не наши методы (конкретно -- не мои, ибо времени нет) =)

Nox Noctis
23.04.2006, 01:05
раньше это было написано и в обычном хэлпе :)
не помню в какой момент эта надпись пропала.

etc
23.04.2006, 01:09
Миша, вот видишь). И зря убрали.
А меня вообще никогда не интересовало конкретное значение _alpha 8))
Меня интересовало только начальное (0) и конечное (100)
А на сайт мелкоадобы ходить -- трафик.

Jegor UQ
23.04.2006, 01:16
В стандартной хелпе об уровнях альфы ни слова (никаких 128 или 256). А ходить на livedocs не наши методы (конкретно -- не мои, ибо времени нет) =)

Вот и я о том же... :away:

Jegor UQ
23.04.2006, 01:22
_alpha пытали и всё выпытали... Спасибо Всем кто принял участие! :yahoo:

iNils
23.04.2006, 15:16
раньше это было написано и в обычном хэлпе :)
не помню в какой момент эта надпись пропала.
В 5-ке уже не было. Видимо только в 4-ке, но ни хелпа, ни дистрибутива у меня уже не осталось и не проверить.

Nox Noctis
23.04.2006, 15:37
В 5-ке уже не было. Видимо только в 4-ке, но ни хелпа, ни дистрибутива у меня уже не осталось и не проверить.
это было то ли в пятом то ли в шестом. совершенно точно. но там несколько раз выходили апдейты к хэлпу, так что фиг его знает, где оно там было...

как бы там ни было - в ливдоксах это есть и сейчас.

здесь (см второй коммент):
http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part_ASLR.html

по какой причине надо скрывать суть вещей в обычном хэлпе - это одна из неразрешенных загадок в продуктах макромедии.

вот тут тоже народ недоумевает:
http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part4_ASLR2.html

короче.
лично я прежде чем самому лезть эксперименты ставить сначала смотрю хэлп, потом в гугле, потом в саппроте макромедии, потом в ливдоксах. потом (в очень редких случаях, поскольку тут мало чего-то, что я не видел) - на форуме. это экономит либо время либо мозговые усилия.

iNils
23.04.2006, 16:31
Так... 5-ка вышла в июле 2000. Смотрю "5 as referense.pdf" First Edition: July 2000. Тут нет.
Ставлю flash5final (скачан 29.08.00), смотрю html хелп. Тоже нет.
В 6-ке точно нет, я до сих пор пользуюсь этой версией (скачана 07.03.02)

Я никогда не использовал проверку типа _aplha==3. Всегда либо >= либо <=. Поэтому долгое время об такой проблеме вообще не подозревал.

Nox Noctis
23.04.2006, 16:35
я нас три свидетеля - макромедия (http://www.macromedia.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary506.html), петрович (http://flasher.ru/forum/showpost.php?p=245934&postcount=4) и я :)

iNils
23.04.2006, 17:02
Я не спорю, что этого не было. Но в первых релизах этого нет. Не знаю с какой версии делали перевод 5-ки и 6-ки, но там тоже нет.

etc
23.04.2006, 22:38
Ну и ладно, примем к сведению. Меньше знаешь -- крепче спишь)
Шучу)