Форум 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)
-   -   OnEnterFrame почему то один раз только обрабатывается (http://www.flasher.ru/forum/showthread.php?t=78326)

ndine 14.04.2006 10:30

OnEnterFrame почему то один раз только обрабатывается
 
_root.createEmptyMovieClip("test", 0);
test._x = 2;
test._y = 2;
loadMovie("test.jpg", test, "GET");
test._alpha = 0;
test.onEnterFrame = function()
{
if (test._alpha < 100)
test._alpha += 6;
}

вот test.onEnterFrame выполняется один раз и всё.. то есть альфа мувика увеличивается на 6 и остаётся такой.. в чём касяк?

Король 14.04.2006 10:43

loadMovie и onEnterFrame несовместимы в таком исполнении
Код:

Using event handlers with MovieClip.loadMovie()
can be unpredictable. If you attach an event handler
to a button by using on(), or if you create a dynamic
handler by using an event handler method such as
MovieClip.onPress(), and then you call loadMovie(),
the event handler does not remain after the new
content is loaded. However, if you attach an event
handler to a movie clip by using onClipEvent() or on(),
and then call loadMovie() on that movie clip, the event
handler remains after the new content is loaded.


motor4ik 14.04.2006 11:18

вот блин, а я постеснялся спросить, давно правда дело было галлерею сам делал с нуля, намучился, думаю почему только первый подгружается кадр остальные не грузятся, пришлось извращатся...во дела!

breez38 14.04.2006 12:12

еще один человек столкнулся с "хитростями загрузки". Загрузка во Флеше происходит АСИНХРОННО, то есть, если вызываешь loadMovie, то это не значит что у тебя сначала пройдет загрузка, а уж потом будет выполняться код просле него. Как раз наоборот: сначала выполниться весь код, а затем только будет начата загрузка.
К тому же после загрузки все обработчики событый, "навешанные" на клип до загрузки, типа onEnterFrame или onPress, сбрасываются и их нужно навешивать снова.
Так что, если тебе нужно, чтоб картика загрузилась, а потом плавно проявилась, то тебе нужно сначала ее загрузить, а по окончанию загрузки прицепить ей onEnterFrame в котором собственно и будешь плавно проявлять. Поэтому для загрузки вместо loadMovie используй MovieClipLoader и отлавливай у него событие onLoadInit (настувает, когда то что загружалось готово к использованию).
И еще:
У тебя свойство _alpha не дойдет до 100, а останиться на 96, т.е. картинка будет слегка прозрачной :). (я думаю ты понял почему)
Так что лучше изменить код вот так:
Код:

test.onEnterFrame = function()
{
        if (test._alpha + 6 < 100)
                test._alpha += 6;
        else test._alpha = 100;
}


Король 14.04.2006 12:23

или так
Код:

_alpha += 5

breez38 14.04.2006 12:27

или использовать инкремент, являющийся делителем 100

Король 14.04.2006 12:30

или использовать _alpha += Math.ceil((100 - _alpha)/n)

motor4ik 14.04.2006 12:32

может книгу напишем "1001 способ _alpha +"

scourge ' kangaroo 14.04.2006 13:23

где-то я уже это видел :mosking:

KUZEN 14.04.2006 18:03

Цитата:

Сообщение от Король
или использовать _alpha += Math.ceil((100 - _alpha)/n)

По аккуратнее всех нубов распугаете :taunt: :taunt: :taunt:


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

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