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

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

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

Регистрация: Feb 2013
Сообщений: 31
По умолчанию управление кадрами

Всем доброго времени суток. Есть Movieclip который имеет 40 кадров, есть кнопка которая при нажатии делает переход по этим кадра. Вопрос в том, возможно ли создать внешний xml файл который указывает на активность того или иного кадра, и как в actionscript вписать такой код который на основании полученных данных из xml будет переходить на указанные (активные) кадры а не активные перепрыгивать?

Старый 08.07.2013, 18:16
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 2  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
По идее можно такое реализовать.Я думаю для этого нужно создать массив с (активными) кадрами,а потом производить переход по элементам массива.
Код AS3:
var Array = new Array();//сюда будут записываться активные кадры
var i:int = 0;
addEventListener(Event.ENTER_FRAME, enterFrameListener);
function enterFrameListener(e:Event):void
{
mc.gotoAndStop(Array[i]);
i++;
}
Может я не прав и есть другие варианты.Но это первое , что пришло.

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

Регистрация: Feb 2013
Сообщений: 31
Цитата:
Сообщение от belv Посмотреть сообщение
По идее можно такое реализовать.Я думаю для этого нужно создать массив с (активными) кадрами,а потом производить переход по элементам массива.
Код AS3:
var Array = new Array();//сюда будут записываться активные кадры
var i:int = 0;
addEventListener(Event.ENTER_FRAME, enterFrameListener);
function enterFrameListener(e:Event):void
{
mc.gotoAndStop(Array[i]);
i++;
}
Может я не прав и есть другие варианты.Но это первое , что пришло.
Я извиняюсь за может глупый вопрос, но как можно занести кадры в массив? Каким способом?

Старый 12.07.2013, 13:54
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 4  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Предположим такой Xml:
Код:
var myXml:XML =
				<frames>
					<frame num="1" active="true"/>
					<frame num="2" active="true"/>
					<frame num="3" active="false"/>
					<frame num="4" active="false"/>
					<frame num="5" active="true"/>
				</frames>;
Читаем его, записываем номера кадров (не сами кадры, а только номера):
Код AS3:
var currFrame:uint = 0;
 
var needToWrite:String = "true";
var arrayOfFrames:Array = new Array();
 
 
for each(var frame:XML in myXml.frame)
{
	if (frame.@active == needToWrite)
	{
		arrayOfFrames.push(frame.@num);
	}
}
Затем переходим по кадрам:
Код AS3:
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;
__________________
Нормально делай — нормально будет!

Старый 12.07.2013, 17:11
kirill1989 вне форума Посмотреть профиль Отправить личное сообщение для kirill1989 Найти все сообщения от kirill1989
  № 5  
Ответить с цитированием
kirill1989

Регистрация: Feb 2013
Сообщений: 31
Цитата:
Сообщение от tsarapkabel Посмотреть сообщение
Предположим такой Xml:
Код:
var myXml:XML =
				<frames>
					<frame num="1" active="true"/>
					<frame num="2" active="true"/>
					<frame num="3" active="false"/>
					<frame num="4" active="false"/>
					<frame num="5" active="true"/>
				</frames>;
Читаем его, записываем номера кадров (не сами кадры, а только номера):
Код AS3:
var currFrame:uint = 0;
 
var needToWrite:String = "true";
var arrayOfFrames:Array = new Array();
 
 
for each(var frame:XML in myXml.frame)
{
	if (frame.@active == needToWrite)
	{
		arrayOfFrames.push(frame.@num);
	}
}
Затем переходим по кадрам:
Код AS3:
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;

Сделал как по примеру выше, перепрыгивает при клике на указанный кадр и далее не идет, не могу понять в чем причина..??

Старый 12.07.2013, 17:21
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 6  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Нужно
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;
поместить в обработчик события EnterFrame , чтобы переход по кадрам происходил каждый кадр.
А так у вас получается , что вы нажали на кнопку и вызвали mc.gotoAndStop() (перейти и остановиться на определенном кадре).

Старый 12.07.2013, 18:15
kirill1989 вне форума Посмотреть профиль Отправить личное сообщение для kirill1989 Найти все сообщения от kirill1989
  № 7  
Ответить с цитированием
kirill1989

Регистрация: Feb 2013
Сообщений: 31
Цитата:
Сообщение от belv Посмотреть сообщение
Нужно
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;
поместить в обработчик события EnterFrame , чтобы переход по кадрам происходил каждый кадр.
А так у вас получается , что вы нажали на кнопку и вызвали mc.gotoAndStop() (перейти и остановиться на определенном кадре).
Теперь переход по кадрам происходит, но без остановки, мигает и возвращается на первый кадр, ввел trace(arrayOfFrames); выводит мною поставленные активные кадры 1,2,3,4,5,6,7,48, и без прерывно публикует в output

Старый 12.07.2013, 18:29
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 8  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
добавьте улсовие
Код AS3:
if(mc.currentFrame == arrayOfFrames[arrayOfFrames.length-1]
{
removeEventListener(Event.ENTER_FRAME , имяфункции);
currFrame = 0;
return;
}
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;

Старый 12.07.2013, 23:57
kirill1989 вне форума Посмотреть профиль Отправить личное сообщение для kirill1989 Найти все сообщения от kirill1989
  № 9  
Ответить с цитированием
kirill1989

Регистрация: Feb 2013
Сообщений: 31
Цитата:
Сообщение от belv Посмотреть сообщение
добавьте улсовие
Код AS3:
if(mc.currentFrame == arrayOfFrames[arrayOfFrames.length-1]
{
removeEventListener(Event.ENTER_FRAME , имяфункции);
currFrame = 0;
return;
}
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;
я наверное что то не правильно делаю, поставил условие все равно пробегает но уже не на первом кадре останавливается а на последнем

Старый 13.07.2013, 00:51
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 10  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Если вы хотите чтобы анимация была цикличной тогда так
Код AS3:
if(mc.currentFrame == arrayOfFrames[arrayOfFrames.length-1])
{
mc.gotoAndStop(arrayOfFrames[0]);
currFrame = 0;
return;
}
mc.gotoAndStop(arrayOfFrames[currFrame]);
currFrame++;

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

Теги
xml , управление кадрами
Опции темы
Опции просмотра

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

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


 


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


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