![]() |
Синхронизация движения объектов
Доброго времени суток коллеги-форумчане.
Прошу вашей помощи ибо сам уже запутался. Вопрос в следующем: я описываю класс в котором есть визуальные элементы и в этом же классе описываю событие клика, по которому каждый экземпляр должен начать двигаться в ту или иную сторону зависимости от положения. Проблема возникла в следующем. Как заставить все экземпляры класса двигаться одновременно при щелчке на одном из них. Экземпляры естественно создаются в другом классе, причем динамически с помощью массива. в общем такая беда. Третий день бьюсь. в первом варианте я синхронизировал через событие onFrame где слушал булеву каждого экземпляра и приравнивал если появлялась положительная все двигалось а теперь почему-то перестало. Пока без кода ибо лень в данный момент копипастить. но если надо. добавлю. мне кажется я упускаю какую-то маленькую деталь. |
Возможно у вас неудобная архитектура проекта. Как у вас происходит навешивание клика - в цикле на каждый объект или на весь контейнер с объектами?
|
нет клик навешивается в основном классе где описывается весь класс, который уже вызывается в родителе. Получается что класс описывает все что должен делать каждый экземпляр. Проще говоря поведение описано в классе и экземпляр слушается как должен, но только 1 тот на котором щелкнули а остальные не реагируют. Вот мне нужно чтобы все отзывались дружно. Толкнул одного остальные тоже подвинулись. Раньше это было двигались, но не останавливались. Когда я исправил и сделал остановку другие почему-то перестали синхронизироваться. Я добавил пару переменных, и их тоже в синхрон передал. такое впечатление что они тупо перестали слушаться булевы движения.
То есть в классе есть булева переменная которая ложна по умолчанию. В синхроне как только появляется правда все остальные экземпляры тоже получают правду и по идеи должны начать движение. сейчас приведу код синхронизации Код AS3:
Moving - булева переменная двигаться или нет LRDirect - переменная цифровая отвечающая за направление движения anglerot - это угол проще говоря расстояние на которое они должны сместиться. вот в общем anglerot добавил чтобы они не двигались бесконечно и соответствено передаю его остальным ибо он определяется в том экземпляре на котором кликнули. Еще раз повторюсь без последней модификации все двигалось просто была ошибка для устранения которой добавил переменную. |
Это не синхронизация, это ...изм! Переделайте все это в циклы для начала и объясните, как у Вас двигаются объекты, одинаково или нет.
|
ну если в основном, тогда при срабатывание события, просто пробегайтесь по массиву объектов и присваивайте нужному параметру нужное значение
|
Цитата:
Цитата:
Вся идея в том чтобы обьект после клика встал на место так называемого первого обькта. и соответственно остальные тоже должны "подвинуться" |
Каждый экземпляр класса мог бы предоставлять публичный метод, который инициирует начало движения. Тогда остается лишь дождаться клика, определить, что это именно тот клик, который нам нужен (какие там критерии у тебя) и сказать родителю-собирателю, чтобы сказал своим, что таки надо двигать. И уже этот класс-контейнер пробегается в цикле по всем экземплярам и вызывает у них метод типа chegoStoimKogoZhdem(kudaBezhatX, kudaBezhatY). Как-то так.
|
Скорее всего будет проще, если вы скинете небольшой исходник по которму можно будет уже более подробно разобраться и потыкать что у вас получилось.
|
Цитата:
Ваш код можно минимизировать до такого: Код AS3:
|
Цитата:
Цитата:
пройти по описанию 1 метр расстояния; пройти влево\вправо; можно идти; |
| Часовой пояс GMT +4, время: 10:27. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.