Форум 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)
-   -   _alpha. Что за глюк? (http://www.flasher.ru/forum/showthread.php?t=78701)

Jegor UQ 22.04.2006 22:46

_alpha. Что за глюк?
 
Помнится даже в 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.p...EE%F0%EE%ED%FB

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

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

Nox Noctis 23.04.2006 00:46

а, вот, нашел.

http://www.macromedia.com/support/fl...ionary506.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

Цитата:

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

В 5-ке уже не было. Видимо только в 4-ке, но ни хелпа, ни дистрибутива у меня уже не осталось и не проверить.

Nox Noctis 23.04.2006 15:37

Цитата:

Сообщение от iNils
В 5-ке уже не было. Видимо только в 4-ке, но ни хелпа, ни дистрибутива у меня уже не осталось и не проверить.

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

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

здесь (см второй коммент):
http://livedocs.macromedia.com/flash...Part_ASLR.html

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

вот тут тоже народ недоумевает:
http://livedocs.macromedia.com/flash...rt4_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

я нас три свидетеля - макромедия, петрович и я :)

iNils 23.04.2006 17:02

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

etc 23.04.2006 22:38

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


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

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