Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Зациклилась заставка перед приложением (http://www.flasher.ru/forum/showthread.php?t=195112)

Yulia_V 28.02.2013 16:16

Зациклилась заставка перед приложением
 
Здравствуйте. В главной линии времени 3 кадра. 1-заставка, 2-главное меню, 3-основной контент. Контент и меню связала. Стала делать заставку, а она зацикливается и функция не хочет по условию вызывать следущий кадр. Прошу помощи.
Код AS3:

var stop_zast:Boolean = false;
if (stop_zast == false){
function zastavka1():void
{
        gotoAndStop(1);
        if(zastavka.currentFrame == 135){
                zastavka.stop();
                hi_again();
                stop_zast = true;
        }
}
zastavka1();
}
function hi_again():void
{
gotoAndStop(2);
// Тут прочие действия, которые выполняет функция
}


iflamberg 28.02.2013 16:29

Вот это сравнение if(zastavka.currentFrame == 135){ должно каждый кадр проверяться, а не как у вас сделано.

Код AS3:

var stop_zast:Boolean = false;
if (stop_zast == false){
function zastavka1():void
{
        gotoAndStop(1);
        addEventListener(Event.ENTER_FRAME, zastavkaEFHr);
}
zastavka1();
}
 
function zastavkaEFHr(e:Event):void {
        if(zastavka.currentFrame == 135){
                removeEventListener (Event.ENTER_FRAME, zastavkaEFHr);
                zastavka.stop();
                hi_again();
                stop_zast = true;
        }
}
 
 
function hi_again():void
{
gotoAndStop(2);
// Тут прочие действия, которые выполняет функция
}

Могут быть опечатки.

KumoKairo 28.02.2013 16:37

Скорее всего функция zastavka1() выполняется один раз, когда сама заставка на первом кадре, поэтому условие
Код AS3:

if(zastavka.currentFrame == 135)

никогда не выполнится

На саму заставку можно накрутить слушатель события .onComplete вместо прямой проверки на равенство 135

Код AS3:

function zastavka1():void
{
        gotoAndStop(1);
        zastavka.addEventListener(Event.COMPLETE, onCompleteHandler);
}
function onCompleteHandler(e:Event):void
{
        zastavka.stop();
                hi_again();
                stop_zast = true;
}
function hi_again():void
{
gotoAndStop(2);
// Тут прочие действия, которые выполняет функция
}


Yulia_V 28.02.2013 17:43

Спасибо! Всё ясно! Теперь работает.

caseyryan 28.02.2013 20:04

Цитата:

На саму заставку можно накрутить слушатель события .onComplete вместо прямой проверки на равенство 135
Для этого надо чтобы сама заставка отправляла это событие.

Можно сделать как сказал KumoKairo, а на 135 кадр заставки добавить строчки:
Код AS3:

import flash.event.Event;
dispatchEvent(new Event(Event.COMPLETE));
stop();


KumoKairo 28.02.2013 20:34

А встроенные во Flash Pro мувики не отправляют событие при завершении?

in4core 28.02.2013 20:51

Во flash pro - нет встроенных мувиков вопервых, во вторых ни один из DO никаких событий(почти) сам не отправляет

caseyryan 28.02.2013 22:35

Цитата:

во вторых ни один из DO никаких событий(почти) сам не отправляет
Отправляет много чего. Но вот complete мувиклип точно не отправит

KumoKairo 28.02.2013 22:55

Зачем все по-другому в этом флеш про?

Люди стараются делают фреймворки для удобства работы с анимацией, а флеш про у стандартных мувиков оказывается Event.COMPLETE не посылает..


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

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