![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
в общем есть XML файл, который загружается и обрабатывается. по циклу for-each-in создаются объекты сцены (при помощи класа конструктора), на каждый из которых создаётся EventListener. для всех объектов описан одинаковый EventListener задающий действия. но при нажатии на любом из объектов изменения срабатывают только на последнем созданном в цикле. как сделать чтобы EventListener работал именно для объекта, над которым совершается действие? потому что создавать для каждого отдельный метод обработки нажатий не вариант, т.к. число объектов может изменяться...
каждый из создаваемых объектов состоит из 3 частей. поэтому когда используешь event.target действие выполняется только одна из этих 3 частей, а нужно чтобы для всех сразу. Последний раз редактировалось AngelDeath; 10.06.2010 в 22:27. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
ну в кратце, есть конструктор, который создаёт прямоугольные Sprite, в другом классе (он тоже по сути как конструктор идёт) с помощью этого конструктора создаются 3 таких объекта (объект 1, 2 и 3), и их координаты и размеры вычислябтся в пропорции от переданных в него данных. в главном классе обрабатывается XML файл и вызывая второй класс создаётся объект (в котором те 3 объекта содержатся, лопустим гавОбъект). и для каждого из этих гавОбъектов делаю листенер. в главном классе создаётся глобальная переменная гавОбъект, чтобы использовать её в других методах и функциях класса.
и видимо при создании объектов в цикле, последний созданный гавОбъект запоминается в эту глобальную переменную и потом, при использовании в листенере гавОбъект.действие оно выполняется тока для него. хотя действия обрабатываются на любом из объектов. а как сделать без этой глобальной переменной чего-то пока не могу сообразить... может быть как-то можно в функцию для обработки листенера передать сам объект параметром? Последний раз редактировалось AngelDeath; 10.06.2010 в 23:12. |
|
|||||
|
Lorem ipsum
|
а не подойдет сделать событие всплывающим и ловить его одним единственным EventListener-ом в корневом для всех объектов экземпляре?
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
поясните пожалуйста, что имеется в виду...
|
|
|||||
|
Регистрация: May 2010
Адрес: Украина, Донецкая обл., Харцызск
Сообщений: 13
|
покажите проблемный код, иначе вам сейчас такого насоветуют...
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
вот выкладываю мой проект. необходимо, чтобы формы (EntityForm) перетаскивались мышью. но пока при попытке перетащить любую из них двигается последняя созданная.
|
|
|||||
public function startDragging(event:MouseEvent):void { trace("press button!"); form.startDrag(); } |
|
|||||
|
.
|
Попробуйте в конструкторе EntityForm
В TestDiplomProject
public function startDragging(event:MouseEvent):void { trace("press button!"); event.target.startDrag(); } UPD2. Фабрик у Вас в коде нет, а если следовать Вашей логике - то тогда любой класс является классом-конструктором. Подтяните терминологию и Вас начнут лучше понимать. Последний раз редактировалось dimarik; 11.06.2010 в 01:16. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 16
|
HotIceCream этот вариант пробовал, перетаскивает только отдельные объекты, а не все 3 объекта сразу.
dimarik спасибо. этот вариант помог =) а насчёт терминологии... я совсем недавно начал изучать flash... ещё как бы это помягче сказать... не освоился до конца =) а можно как-нибудь сделать, чтобы после перемещения EntityForm обновлялись и все остальные объекты (имеется в виду TextForm-ы и линии, поскольку старался их делать не статичными, а с привязкой на координаты других объектов), или их по другому для этого нужно задавать? |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:54. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|