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

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

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

Регистрация: Sep 2012
Сообщений: 204
По умолчанию обращение к currentLabel клипа

Добрый день
У меня тут такая проблемка - надо было перегнать одну старую анимацию еще на AS1 в AS3. Там вся анимация основана на метках. Label.
я перестроил все под код as3, но мне также необходимо регулировать некоторые другие процессы, в родительском контейнере (где лежит эта анимация), в зависимости, какая метка сейчас проигрывается.
клип анимации называется main.
из контейнера я обращаюсь
Код AS3:
if (main.currentLabel == "1"){
       trace ("1");
}
трейс не проходит. Если сделать через currentFrame - та же история
Как же тогда проверять фазу проигрывания анимации из вне?
И еще, связанный вопрос- на каждом этапе анимации создается переменная со значением. доступ к этой переменной также не возможен, если она не обозначена в первом кадре анимации. Можно ли как то еще указать флешу, что мол вот- если играется эта метка, то надо считать переменную "х" ?

Старый 31.01.2013, 14:16
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 2  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
А в какой системе делаете? Во Flash Pro или в Flash Builder/Flash Develop?
И сам код, с переменными, к которым не можете получить доступ, тоже не помешал бы

Если создаете во Flash Pro через встроенную библиотеку мувиклипов, .currentFrame будет работать

Старый 31.01.2013, 14:22
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 3  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Для начала
Код AS3:
trace(main.currentLabel);
__________________
adobe AS3 manual

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

Регистрация: Sep 2012
Сообщений: 204
итак, работаю я в данном случае в Flash Pro, т.к. кода то там код наплакал, в основном анимашки
код к переменным? ну вот например
Код AS3:
switch (this.position) {
case 1 :
	this.offset = 3;
	break;
case 2 :
	this.offset = 5;
	break;
case 3 :
	this.offset = 7;
	break;
}
это в фазе 4. То есть к переменной offset я не могу добраться.
Код AS3:
if (main.currentLabel  == "4"){
	if (offset == 5);{
               trace ("var 5");
}
strangedk
такой трейс проходит, и он показывает что фаза 1. Но показывает только потому что фаза 1 начинается с первого кадра. Если я поставлю трейст на другую фазу - то там ничего не срабатывает
например
Код AS3:
if (main.currentLabel  == "3"){
	trace("3");
}
в то время как если поставить трейс в самой анимации на 3-ей фазе, то там все показывает (в чем не было сомнений )

Старый 31.01.2013, 15:31
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 5  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
А где вы, это
Код AS3:
if (main.currentLabel  == "3"){
	trace("3");
}
Вставляете? В каком кадре? Я бы вообще пихал весь код в первый кадр. И для этого приведенного кода, я бы писал вот так:
Код AS3:
main.addEventListener (Event.ENTER_FRAME, efHr);
function efHr (e:Event):void {
  if (main.currentLabel == "3"){
    trace("3");
  }
}
Так мне было бы надежней и понятней, чем то по какой системе компилятор AS3 компилирует код в кадрах.
__________________
мой пустой блог

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

Регистрация: Sep 2012
Сообщений: 204
iflamberg
код пишется в первом и единственном кадре. В этом же кадре находитя 1 кадр с мувиклипом анимации именем main. А вот в main уже больше 100 кадров
на enterFrame посадить не пробовал. Сейчас протестирую

Испробовал - так он видит нужные lebel но можно ли сделать так чтобы нужное действие выполнилось только 1 раз? а то он выполняет функцию каждый кадр при совпадении метки

Старый 31.01.2013, 16:11
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Отпишитесь от события enterFrame, когда оно больше не нужно:
Код AS3:
main.addEventListener (Event.ENTER_FRAME, efHr);
function efHr (e:Event):void {
  if (main.currentLabel == "3"){
    //делаем что надо
    main.removeEventListener (Event.ENTER_FRAME, efHr);
  }
}
или установите какую-нибудь переменную состояния, чтобы она показывал, что дейсвие уже выполнено
Код AS3:
var flag:Boolean = false; //флаг состояния
main.addEventListener (Event.ENTER_FRAME, efHr);
function efHr (e:Event):void {
  if (main.currentLabel == "3" && !flag){
    //делаем что надо
    flag = true; //меняем переменную состояния
  }
}
__________________
мой пустой блог

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

Регистрация: Sep 2012
Сообщений: 204
эмм... я об этом и подумал сначала, но не очень удобно будет создавать 10 отдельных слушателей, на 10 различных фаз. Но ладно, пусть хоть так.
Спасибо за помощь!

Старый 31.01.2013, 16:34
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 9  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Если "фаза" должна повториться только один раз, то создайте массив, и заносите в него те фазы которые уже выполнились. Слушатель здесь один должен быть. И когда все они выполнятся, тогда отписывайтесь от слушателя.
__________________
adobe AS3 manual

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

Регистрация: Sep 2012
Сообщений: 204
да тут все гораздо сложнее. Дело в том что есть еще возможность возврата к прошедшим фазам. По клику кнопки можно просмотреть каждую фазу по отдельности.
Получается следующее -
1) кнопками можно переключать фазы (тут никаких проблем)
2) сами фазы независимо от нажатий кнопок будут идти вперед и меняться.

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

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

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


 


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


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