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

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

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

Регистрация: Jun 2010
Сообщений: 16
По умолчанию проблема с EventListener-ами

в общем есть XML файл, который загружается и обрабатывается. по циклу for-each-in создаются объекты сцены (при помощи класа конструктора), на каждый из которых создаётся EventListener. для всех объектов описан одинаковый EventListener задающий действия. но при нажатии на любом из объектов изменения срабатывают только на последнем созданном в цикле. как сделать чтобы EventListener работал именно для объекта, над которым совершается действие? потому что создавать для каждого отдельный метод обработки нажатий не вариант, т.к. число объектов может изменяться...

каждый из создаваемых объектов состоит из 3 частей. поэтому когда используешь event.target действие выполняется только одна из этих 3 частей, а нужно чтобы для всех сразу.


Последний раз редактировалось AngelDeath; 10.06.2010 в 22:27.
Старый 10.06.2010, 22:28
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
В теории должно работать. А какова реализация?

Класс-конструктор принято называть фабрикой.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Jun 2010
Сообщений: 16
ну в кратце, есть конструктор, который создаёт прямоугольные Sprite, в другом классе (он тоже по сути как конструктор идёт) с помощью этого конструктора создаются 3 таких объекта (объект 1, 2 и 3), и их координаты и размеры вычислябтся в пропорции от переданных в него данных. в главном классе обрабатывается XML файл и вызывая второй класс создаётся объект (в котором те 3 объекта содержатся, лопустим гавОбъект). и для каждого из этих гавОбъектов делаю листенер. в главном классе создаётся глобальная переменная гавОбъект, чтобы использовать её в других методах и функциях класса.

и видимо при создании объектов в цикле, последний созданный гавОбъект запоминается в эту глобальную переменную и потом, при использовании в листенере гавОбъект.действие оно выполняется тока для него. хотя действия обрабатываются на любом из объектов. а как сделать без этой глобальной переменной чего-то пока не могу сообразить...


может быть как-то можно в функцию для обработки листенера передать сам объект параметром?


Последний раз редактировалось AngelDeath; 10.06.2010 в 23:12.
Старый 10.06.2010, 23:19
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
а не подойдет сделать событие всплывающим и ловить его одним единственным EventListener-ом в корневом для всех объектов экземпляре?
__________________
Поймай яблоко 2!

Старый 10.06.2010, 23:26
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 5  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
поясните пожалуйста, что имеется в виду...

Старый 10.06.2010, 23:32
NeonSelf вне форума Посмотреть профиль Отправить личное сообщение для NeonSelf Найти все сообщения от NeonSelf
  № 6  
Ответить с цитированием
NeonSelf

Регистрация: May 2010
Адрес: Украина, Донецкая обл., Харцызск
Сообщений: 13
покажите проблемный код, иначе вам сейчас такого насоветуют...

Старый 10.06.2010, 23:40
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 7  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
вот выкладываю мой проект. необходимо, чтобы формы (EntityForm) перетаскивались мышью. но пока при попытке перетащить любую из них двигается последняя созданная.
Вложения
Тип файла: rar my_project.rar (20.6 Кб, 32 просмотров)

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

Регистрация: Oct 2009
Сообщений: 112
Записей в блоге: 1
Код AS3:
public function startDragging(event:MouseEvent):void 
		{ 
			trace("press button!");
		    form.startDrag();
		}
заменяем на
Код AS3:
public function startDragging(event:MouseEvent):void 
		{ 
			trace("press button!");
		    event.target.startDrag();
		}

Старый 11.06.2010, 01:12
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Попробуйте в конструкторе EntityForm
Код AS3:
super.mouseChildren = false;
В TestDiplomProject
Код AS3:
public function startDragging(event:MouseEvent):void 
{ 
    trace("press button!");
    event.target.startDrag();
}
UPD. Чутка замешкался )

UPD2. Фабрик у Вас в коде нет, а если следовать Вашей логике - то тогда любой класс является классом-конструктором. Подтяните терминологию и Вас начнут лучше понимать.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 11.06.2010 в 01:16.
Старый 11.06.2010, 01:29
AngelDeath вне форума Посмотреть профиль Отправить личное сообщение для AngelDeath Найти все сообщения от AngelDeath
  № 10  
Ответить с цитированием
AngelDeath

Регистрация: Jun 2010
Сообщений: 16
HotIceCream этот вариант пробовал, перетаскивает только отдельные объекты, а не все 3 объекта сразу.

dimarik спасибо. этот вариант помог =) а насчёт терминологии... я совсем недавно начал изучать flash... ещё как бы это помягче сказать... не освоился до конца =)

а можно как-нибудь сделать, чтобы после перемещения EntityForm обновлялись и все остальные объекты (имеется в виду TextForm-ы и линии, поскольку старался их делать не статичными, а с привязкой на координаты других объектов), или их по другому для этого нужно задавать?

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

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

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


 


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


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