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

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

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

Регистрация: May 2012
Сообщений: 166
Question Плейсхолдер (как можно сделать лучше)

Здравствуйте уважаемые, сделал где то с месяц назад плейсхолдер для персонажа в который передаются разные изображения оружия. Тогда показалось что все нормально сделано, но сейчас понятно что все через ( ! ). Помогите пожалуйста советом как сделать правильно. Вот что у меня сейчас:
Код AS3:
public function buttonOn(e:Event):void //EnterFrame
{
	if (Heroes.hero.oneHandedStance) //какой вид оружия надет
	{
		WeaponDualMh.duMh.addChild(weaponDualMh); //В класс плейсхолдера оружия
	}    //добавляется клип(пока пустой)
}
Далее если надеть оружие выполняется функция которая передает в пустой клип, клип оружия weaponDualMh = new oneHandedSw_mc ;
И что получается: при смене кадров персонажа,в плейсхолдер оружия постоянно передается клип оружия по EnterFrame из-за чего происходит мерцание этого оружия в игре. Как бы вы посоветовали сделать чтобы избежать этого неприятно эффекта?
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Разделить по разным контейнерам: анимация героя в одном, оружие в другом.

И да, что такое 'плейсхолдер'?? Местохранитель?

Старый 19.07.2012, 18:59
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 3  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
placeholder - метка-заполнитель; указатель места заполнения
Попробую разделить, спасибо.
Если кто еще поделится вариантами как лучше все организовать буду благодарен.

Вынес оружие из анимации персонажа, при смене кадров и единичном добавлении клипа оружие пропадает, при постоянном добавлении мерцает при смене кадра персонажа.
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось Tetraeon; 19.07.2012 в 19:43.
Старый 19.07.2012, 19:31
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 4  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
по этому кусочку кода ничего непонятно

то что вам нужно называется "инверсия контроля", я писал об этом в своём блоге

нужен интрефейс "оружие", имплементация которого будет передаваться персонажу извне, а пока оружие не создано можно передавать пустышку которая имлементирует интерфес но ничего не делает
__________________
Хороший отдых - половина работы.

Старый 20.07.2012, 01:13
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 5  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Я не понял как работает пример кода в вашем блоге, я еще далеко не все понимаю поэтому и создал эту тему. Мой кусочек кода показывает только 1 вид оружия хотя их там побольше, но для демонстрации принципа действия, этого должно хватить. Если в словах описать принцип работы кода: Есть персонаж, на линии времени которого есть множество кадров в каждом кадре символ, в котором происходит анимация всех частей тела и оружия(пустой клип - плейсхолдер). Для разделения типов оружия и соответственно анимации обращения с ним я сделал такое же количество кадров на лини времени персонажа в дополнение к остальным и назвал метки кадров соответственно. Каждый плейсхолдер также имеет свой класс. В коде есть 3 переменных типа Boolean каждая названа соответственно типу оружия (двуручн, одноручн и дуалы) можно сделать как угодно, это не важно. При надевании определенного вида оружия соотвец. переменная принимает значение true и функция приведенная мной выше начинает добавлять в плейсхолдер изображение. WeaponDualMh.duMh.addChild(weaponDualMh);
WeaponDualMh - класс плейсхолдера, duMh - статическая переменная через которую я и получаю доступ к классу, weaponDualMh - пустой клип в последствии weaponDualMh = new oneHandedSw_mc ; становится изображением оружия и передаваемый в плейсхолдер по EnterFrame т.е каждый кадр игры. Если не передавать это изображение каждый кадр то оружие появится и пропадет если сменится кадр персонажа или оружия. Это то как оно есть сейчас... как же лучше все реорганизовать что бы не было этих постоянных добавлений изображения ведь этот вариант ест много ресурсов и мерцание оружия все портит. help
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.

Старый 20.07.2012, 01:59
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Подозреваю что просто анимация на таймлайне сделана неправильно, то есть слот для оружия не "непрерывен", его экземпляр меняется в ключевых кадрах. Есть такой неявный прикол у таймлайна.
Можно пробежаться по ключам и проверить, сохраняется ли один экземпляр, по имени. Но если где-то имя "пропало" и Вы просто вписали желаемое, проблему это не решит, к сожалению.

Но, может быть иначе анимацию сделать просто невозможно, не знаю как там у Вас все устроено физически.
__________________
Reality.getBounds(this);

Старый 20.07.2012, 13:29
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 7  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Wolsh вы оказались как всегда правы Bgg и вы тоже. Благодарю вас!

Добавлено через 5 часов 25 минут
Если во всех кадрах слот для оружия вынесен отдельно, то оружие не пропадет при смене кадров, если хотя бы в 1 кадре он находится внутри любого символа, оружие пропадает при смене любого из кадров. Таким образом анимацию сделать не получится... задачка однако.
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось Tetraeon; 20.07.2012 в 13:47.
Старый 20.07.2012, 21:40
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну почему не получится... Вот как-то делал же (не ржать!)
__________________
Reality.getBounds(this);

Старый 21.07.2012, 13:21
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 9  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Понятия не имею в чем проблема тогда... все неприятности начались после переписывания кода... и все что изменилось это добавление персонажа на сцену программно, раньше он был изначально на сцене, ну и конечно пришлось почти во все классы прописать слушатель ADD_TO_STAGE, хотя и в старом варианте оружие пропадало при движении если добавлять его 1 раз, но мерцания не было видно. Еще добавил начальный кадр в главном swf файле, в виде меню, но врятле это могло повлиять т.к. все объекты я распихал по контейнерам им соответствующим (все панели в контейнер интерфейса, все объекты враги и героя в контейнер объектов) вроде все по полочкам разложил.. да и что там я уже каких только манипуляций не делал что бы проверить почему оружие пропадает, единственный вариант когда оно не пропадало это когда я поместил его в отдельный контейнер от персонажа абсолютно во всех кадрах даже в тех которые не задействованы были в процессе проверки.. т.е. пришлось их удалить и тупо оставить 4 кадра с неподвижным слотом оружия и если хотя бы в 1 из них оружие было в символе перса все накрывалось медным тазом. К этим 4 кадрам потом добавил 5-й с отдельным контейнером для оружия в котором сделал его анимацию, да еще такую что оно вообще не двигалось ни то что свой размер меняло, и опять оружие пропало, наверно в коде где то ошибка, хотя я его уже перелопатил и все вроде везде логично, вот элемент кода отвечающий за анимацию персонажа во время движения:
Код AS3:
                                        if (left == 1)
					{
						moving = true;
						heroPoint.x -=  heroSpeed;
						if (! attack)
						{
							if (oneHandedStance) 
							{
								hero.gotoAndStop("ohwalk_L");
							}
							if (twoHandedStance)
							{
								hero.gotoAndStop("walk_L");
							}
							if (dualHandedStance)
							{
								hero.gotoAndStop("duwalk_L");
							}
						}
					}
					if (up == 1)
					{
						moving = true;
						heroPoint.y -=  heroSpeed;
						if (! attack)
						{
							if (this.x < heroPoint.x)
							{
								if (oneHandedStance)
								{
									hero.gotoAndStop("ohwalk_R");
								}
								if (twoHandedStance)
								{
									hero.gotoAndStop("walk_R");
								}
								if (dualHandedStance)
								{
									hero.gotoAndStop("duwalk_R");
								}
							}
							else
							{
								if (oneHandedStance)
								{
									hero.gotoAndStop("ohwalk_L");
								}
								if (twoHandedStance)
								{
									hero.gotoAndStop("walk_L");
								}
								if (dualHandedStance)
								{
									hero.gotoAndStop("duwalk_L");
								}
							}
						}
					}
					if (right == 1)
					{
						moving = true;
						heroPoint.x +=  heroSpeed;
						if (! attack)
						{
							if (oneHandedStance)
							{
								hero.gotoAndStop("ohwalk_R");
							}
							if (twoHandedStance)
							{
								hero.gotoAndStop("walk_R");
							}
							if (dualHandedStance)
							{
								hero.gotoAndStop("duwalk_R");
							}
						}
					}
					if (down == 1)
					{
						moving = true;
						heroPoint.y +=  heroSpeed;
						if (! attack)
						{
							if (this.x < heroPoint.x)
							{
								if (oneHandedStance)
								{
									hero.gotoAndStop("ohwalk_R");
								}
								if (twoHandedStance)
								{
									hero.gotoAndStop("walk_R");
								}
								if (dualHandedStance)
								{
									hero.gotoAndStop("duwalk_R");
								}
							}
							else
							{
								if (oneHandedStance)
								{
									hero.gotoAndStop("ohwalk_L");
								}
								if (twoHandedStance)
								{
									hero.gotoAndStop("walk_L");
								}
								if (dualHandedStance)
								{
									hero.gotoAndStop("duwalk_L");
								}
							}
						}
Ниже сама игра, пока только за война начал делать.
Вложения
Тип файла: rar RPG.rar (3.03 Мб, 33 просмотров)
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось Tetraeon; 21.07.2012 в 15:43.
Старый 21.07.2012, 23:57
RandomUser вне форума Посмотреть профиль Отправить личное сообщение для RandomUser Найти все сообщения от RandomUser
  № 10  
Ответить с цитированием
RandomUser

Регистрация: Mar 2006
Адрес: Odessa
Сообщений: 157
Вы предлагаете декомпилировать вашу свф-ку, чтобы понять что не так?
При анимации контейнера, он должен находиться на таймлайне постоянно, т.е. никаких пропущенных кадров.
И во всех ключевых кадрах он должен называться одинаково.
Тоже самое касается всех(!) его родительских клипов.
__________________
Не всех война убила - многих покалечила

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

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

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


 


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


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