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

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

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

Регистрация: May 2012
Сообщений: 166
Question Всплывающие текстовые поля для экземпляров класса

Здравствуйте.
Всем наверняка знакомы циферки жизни вылетающие из врагов если по ним бьют... вот это цель которую я никак не могу достичь уже неделю.. вся загвоздка в том что для экземпляров класса врага addChild любого MovieClip'а будит производится только 1 раз(вылетит 1 объект 1 раз). И не понятно как текстовое поле которое в последствии будит принимать значение переменной внедрить в код. Ищу любую помощь по этому вопросу.
Заранее спасибо.

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
для экземпляров класса врага addChild любого MovieClip'а будит производится только 1 раз
это почему?
__________________
:)

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

Регистрация: May 2012
Сообщений: 166
Не знаю, вот элемент кода где прописан addChild на ряду с trace, который выводится многократно.
Код AS3:
public function hPC(e:Event):void {
	if (hP<hPT) {
		trace ("урон",hPT-hP);
		addChild(sw);
		enemy.HpBar.gotoAndStop(Math.floor(hP/maxHP*100));
	}
	removeEventListener (Event.ENTER_FRAME , hPC);
	hPT=hP;
	addEventListener (Event.ENTER_FRAME , hPC);
}


Последний раз редактировалось iNils; 22.05.2012 в 22:30.
Старый 22.05.2012, 23:48
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 4  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Код AS3:
removeEventListener (Event.ENTER_FRAME , hPC);
hPT=hP;
addEventListener (Event.ENTER_FRAME , hPC);
Это еще что за магия?

у вас каждый раз addChild(sw) происходит, зачем это? просто добавьте однажды sw, и обновляйте через sw.text = "...";
__________________
adobe AS3 manual

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

Регистрация: May 2012
Сообщений: 166
С задачей справился... но вот как раз вопрос про addChild остался, вроде бы по другому никак не получится создать всплывающий текст для разных экземпляров класса. Ведь надо по каждому событию что бы появлялась табличка с числом. Если я что то не так понял поправьте.

Вопрос у меня касательно оптимизации процесса, я так понимаю все созданные Child'ы никуда не пропадают.. просто по завершению ролика последний кадр текстового поля с строчкой stop(); прекращает воспроизведение. Как же по убирать накопившиеся Child'ы? Например поставить счетчик этих созданий и по достищению 1000 обнулить sw = null; ? Как же возобновить процесс? После обнуления идет ошибка, мол ссылается на объект null.


Последний раз редактировалось Tetraeon; 23.05.2012 в 03:04.
Старый 26.05.2012, 15:29
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Я повторюсь, зачем каждый раз делать addChild

Либо пусть текстовое поле присутствует постоянно, и обновляйте значение sw.text
Либо при необходимости делайте addChild(sw), и потом по таймеру делайте removeChild(sw)

Код AS3:
// при добавлении проверяйте, нет ли уже такого объекта на сцене
if (sw && !contains(sw)) {
    addChild(sw)
}
 
// при удалении проверка на null и на то что объект добавлен
if (sw && contains(sw)) { 
    removeChild(sw)
}
...и у вас каждый раз будет только один объект.
__________________
adobe AS3 manual

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от strangedk Посмотреть сообщение
Я повторюсь, зачем каждый раз делать addChild
Код AS3:
// при добавлении проверяйте, нет ли уже такого объекта на сцене
if (sw && !contains(sw)) {
    addChild(sw)
}
 
// при удалении проверка на null и на то что объект добавлен
if (sw && contains(sw)) { 
    removeChild(sw)
}
С таким использованием contains мы пару раз огребли, пока не прочитали справку:
Код:
Определяет, является ли указанный объект отображения
дочерним объектом экземпляра DisplayObjectContainer или самим экземпляром.
Область поиска охватывает весь список отображения, включая данный
экземпляр DisplayObjectContainer.
Нижестоящие элементы второго,
третьего и последующих уровней возвращают значение true.
Лучше так:
Код AS3:
if (sw && sw.parent != this) {
    addChild(sw);
}
if (sw && sw.parent == this) { 
    removeChild(sw);
}

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

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

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Например есть container, в котором лежит subcontainer. И по каким-то причинам child переместили из containre в subcontainer (Вы, конечно скажете, что это маловероятно - но мы натыкались пару раз и очень мучительно искали ошибку)
Если сделать так:
Код AS3:
if (container.contains(child))
{
    container.removeChld(child);
}
то в этом конкретном случае флешка упадет - ведь child находится в subcontainer.

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

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

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

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

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


 


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


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