Форум 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:


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

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