Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переключение кадров и условие currentFrame (http://www.flasher.ru/forum/showthread.php?t=187856)

pomuс 25.11.2012 08:04

Переключение кадров и условие currentFrame
 
доброго времени суток

у меня вопрос следующего характера. Мне нужно было сделать меню такого вида- 4 мувиклипа, в каждом свои кнопки. и соответственно 2 кнопки, переключающие эти клипы.
На первый взгляд ничего сложного, я прикинул каким способом лучше выполнить, и пришел к выводу сделать 4 кадра на главной сцене. Слой с кнопками переключения клипов, общий для всех. Так же как и слой АС3.
Для мягкой смены кадром сделал следующим образом:

добавляется класс Fader, создается экземпляр.
Далее по условию, какой кадр проигрывается ( if currentFrame == (х)) прописываю слушатели на кнопки, внутри клипов. Без if это не получается, т.к. он ругается на нулевой объект. Вот небольшой пример кода
Код AS3:

if (currentFrame == 1){
obj38_btn.addEventListener(MouseEvent: CLICK, choose);}

Далее прописываются слушатели к кнопкам, которые меняют кадр. Вот и код смены
Код AS3:

function clicked (e:MouseEvent):void{
if (currentFrame == 1){
 switch (e.currentTarget.name){
        case "left":
        addChild(fader);
        TweenLite.to(fader, 0.5, {alpha:1,onComplete: goto});
        i = 4;
        TweenLite.to(fader, 0.5, {delay:0.5, alpha:0, onComplete: removeFader });
        break;
 
        case "right":
        addChild(fader);
        TweenLite.to(fader, 0.5, {alpha:1,onComplete: goto});
        i = 2;
        TweenLite.to(fader, 0.5, {delay:0.5, alpha:0, onComplete: removeFader});
        break;
 }
}

и так на 4 условия.
далее сами исполнительные функции смены
Код AS3:

function removeFader():void{
removeChild(fader);
}
 
function goto ():void{
gotoAndStop(i);
}

Итак, к сути- проблема в том, что currentFrame почем то не меняет свое значение, НО!!! (что самое странное для меня) смена кадров происходит. Я трейсил все и вся, в поисках выявить, где же запарывается логика кода, но потратил на это уйму времени, и безрезультатно. Итог 1- все работает только на первом кадре, на остальных только идет переключение кадров (мувиклипов).

Подтолкните пожалуйста, где же я совершил какую то концептуальную ошибку?

Hauts 25.11.2012 09:32

Цитата:

Подтолкните пожалуйста, где же я совершил какую то концептуальную ошибку?
Вот здесь:
Цитата:

пришел к выводу сделать 4 кадра на главной сцене
Добавлено через 1 минуту
Кадры нужны для анимации. А в вашем случае, думаю, простого переключения видимости хватит. И не нужно будет заново подписываться на события и отслеживать номер кадра.

spirit2 25.11.2012 16:07

Окна - контейнеры (Sprite например).
Кнопки - SimpleButton из flash ide запихнутые в swc, или созданные кодом на основе того же Sprite, например.
Осталось повесить слушатели на кнопки и в обработчиках addChild/removeChild нужных/не нужных окон.

А кадры если и использовать, то только как мультик/кадр с контентом без каких либо интерактивных элементов.

pomuс 25.11.2012 16:36

я в итоге потом так и сделал. Правда еще не понял как сделать плавный переход между кадрами, то есть сделать клип в alpha 0, следующий клип сделать видимым, и потом из альфа 0 в 1.

А по поводу 4 кадров- мне бы понять, почему такая структура не работает (чтобы избегать дальнейших ошибок) Ведь по идеи переключение происходит...

spirit2
только сейчас увидел ваш ответ. Итог 1- все в 1 кадр, и по-другому никак? У меня есть примеры работ, которые сделаны с полной функциональностью на подобном принципе.. поэтому я так изначально и подумал сделать

spirit2 26.11.2012 09:10

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

Для плавного изменения прозрачности нужно повесить слушатель на ENTER_FRAME или таймер и изменять альфу на каждой итерации по чуть-чуть. Или воспользоваться твинерами.


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

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