Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.11.2012, 08:04
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 1  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
По умолчанию Переключение кадров и условие 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- все работает только на первом кадре, на остальных только идет переключение кадров (мувиклипов).

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

Старый 25.11.2012, 09:32
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Цитата:
Подтолкните пожалуйста, где же я совершил какую то концептуальную ошибку?
Вот здесь:
Цитата:
пришел к выводу сделать 4 кадра на главной сцене
Добавлено через 1 минуту
Кадры нужны для анимации. А в вашем случае, думаю, простого переключения видимости хватит. И не нужно будет заново подписываться на события и отслеживать номер кадра.
__________________
hauts.ru

Старый 25.11.2012, 16:07
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 3  
Ответить с цитированием
spirit2

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

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

Старый 25.11.2012, 16:36
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 4  
Ответить с цитированием
pomuс

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

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

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


Последний раз редактировалось pomuс; 25.11.2012 в 17:55.
Старый 26.11.2012, 09:10
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 5  
Ответить с цитированием
spirit2

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

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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