Обнаружение нескольких движений мыши - PullRequest
0 голосов
/ 24 марта 2011

Обнаружение нескольких движений мыши

Я хочу сделать взаимодействие с указателем мыши следующим образом: http://www.youtube.com/vision2watch#p/u/38/LlHGYaP9fgM

Итак, в основном есть 2 класса;один класс Main, а другой класс image_child.Основной класс отвечает за основное взаимодействие, такое как загрузка класса загрузчика XML, набор текстов и другие вещи.Класс image_child отвечает за рендеринг и представление изображений на сцене с их движениями и взаимодействием, когда мышь движется.У меня есть проблема.

Существует 2 способа визуализации этого взаимодействия на сцене:

Метод A:

1- Создайте массив изОбъекты image_child с именем ImageBank Array = new Array ().

2- У каждого дочернего элемента есть функция «.cordinator (x, y)», которую я могу вызывать и отправлять мышью x и y в класс..ie ImageBank[i].cordinator(120,144);

3- Поместите Array в цикл, например «For» или «While» в основном классе, наведите мышью x и y и визуализируйте взаимодействие на сцене;и повторяйте цикл каждый раз, когда у меня движение мыши с новой координацией.

/// 120 is mouse x and 144 is mouse y

for (var i:int = 0; i< ImageBank.length; i++) {

    ImageBank[i].cordinator(120,144);

}

Метод B:

1 - Написать слушатель события перемещения мыши внутри каждогоimage_child объект, который обнаруживает движения мыши.

2- Получите мышь x и y из этого события.

3- Отобразите взаимодействие на сцену (внутри каждого экземпляра image_child)

Кажется, что метод B проще и понятнее , но в методе B каждый экземпляр имеет прослушиватель события перемещения мыши, и если у меня есть 70 экземпляров, то у меня есть 70 прослушивателей события перемещения мыши, что я считаю не очень хорошимвещь вообще.

У вас есть идеи или предложения?(Я ищу лучшее исполнение и плавное движение.)

1 Ответ

1 голос
/ 24 марта 2011

Я думаю, что самым простым решением было бы передать ваше событие в ваш класс image_child, двигая мышью из основного класса.

Итак, в вашем основном классе вы можете попросить слушателя сделать что-то вроде этого:

private function listenerName(evt:MouseEvent):void    
{
    for(var i=0; i<imgChildContainer.numChildren-1; i++)
    {
        var mc:MovieClip = imgChildContainer.getChildAt(i);
        mc.mouseMove(Yourcoordinateshere/Whatever);
    }
}

This assumes your image_childs are in a container.

Кроме этого, я бы добавил слушателей в image_child, что вы упомянули, что не хотите делать.

Надеюсь, это поможет.

...