![]() |
Как опросить обьект в обьекте?
Есть 2е картинки, мап и спрайт, нужно чтобы при нажатии на мап, двигалась сама картинка и все повешенные на нее обьекты, при этом нужно, чтобы была возможность перетаскивать эти сами обьекты.
Подскажите как. Код AS3:
|
Код AS3:
(Битмап не генерит мышиные события. Он не наследует InteractiveObject) |
спс.
Если не сложно объясните смысловую нагрузку этих строк Код AS3:
|
Объясняю: (Битмап не генерит мышиные события. Он не наследует InteractiveObject)
Поэтому битмап ( new objClass() ) добавляем в интерактивный контейнер — спрайт mapObject, чтобы он мог "ловить" нажатие мыши. В вашем коде spr.addEventListener(MouseEvent.MOUSE_DOWN, aa1); не имеет смысла, потому что битмап spr никогда не пошлет событие MouseEvent.MOUSE_DOWN, соответственно обработчик аа1 никогда не будет вызван. |
Примерно понял, спс.
Еще вопрос тогда, как в вашем случае обратиться к mapObject? Хотябы посмотреть координаты. Код AS3:
функция незнает о таком обьекте... получается можно обратиться только к текущему? А если надо например сравнить координаты нескольких обьектов на карте? Добавлено через 27 минут Если работать только с текущим обьектом, то получается примерно так Код AS3:
например, чтобы обьект нельзя было вытащить за пределы контейнера. МАПа точнее |
"Функция не знает" потому что переменная mapObject объявлена в другой функции — в конструкторе.
Если объявить mapObject как член класса (private var mapObject:Sprite) а не как локальную переменную конструктора, она будет видна для всех других членов класса, включая методы-обработчики. Если объектов много, можно нашпиговать ими массив и сделать его членом класса. |
глобальную переменную то я сделал, я думал, есть какойто более грамотный способ спс.
|
Метод startDrag вообще-то принимает параметры, в том числе прямоугольник, в котором разрешено таскать объект :)
Другое дело, что прямоугольник надо будет пересчитывать для объектов разного размера, чтобы отделить лимитные поля справа и снизу (иначе объект будет уходить своей нижней границей ниже границы карты — прямоугольник определяет область, в которой может находиться точка (0, 0) таскаемого объекта). |
да, я в курсе.
Тока вот тут проблема возникла, если обьявить обе переменные глобальные, то mapImage.x и y всегда равны 0, даже когда обьект двигаешь, а вот координаты mapObject имеют нормальное значение(в пределах mapImage) как мне узнать координаты mapImage? |
mapImage находится в контейнере, и относительно него никуда не смещается. Мы двигаем контейнер, в котором лежит mapImage и объекты. Координаты этого контейнера Вас и должны интересовать, а не картинки))
Добавлено через 6 минут Цитата:
|
| Часовой пояс GMT +4, время: 21:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.