Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MouseEvent с объектом из массива (http://www.flasher.ru/forum/showthread.php?t=146399)

BWAne 06.11.2010 20:29

MouseEvent с объектом из массива
 
Вложений: 1
Здравствуйте, столкнулся с такой проблемой. Необходимо сделать меню в виде 3D карусели с использованием движка Away3D. Для этого я создаю массив объектов и потом с помощью цикла их размещаю по кругу. Код цикла с добавлением объектов в упрощенном (дабы вы не копались в куче кода что не имеет отношения к делу) варианте таков:
Код AS3:

                private var i:Number = 0; //начальное значение счетчика объектов
                private var R:Number = 400; //радиус окружности
                private var tangle:Number; // угол расположения объекта
                private var itemsnumber:Number = 12; //количество объектов
 
 
                private var boxes:Array = new Array(); //создаем массив
 
                        //функция цикла создания объектов
                        function boxadd():void {
                                for (i ; i < itemsnumber; i++){
                                        tangle = i*(2*Math.PI)/itemsnumber;
                                        boxes[i] = new Cube({y:R*Math.cos(tangle),x:R*Math.sin(tangle),ownCanvas:true]});
                                        scene.addChild(boxes[i]);       
                                }

В аттаче - то что получается.
Для кубиков мне нужно сделать МаусЕвенты, как прописать функцию евента что-бы автоматически определялось какой объект сейчас активен (под курсором) и взаимодействие происходило только с данным объектом?

t4arty 06.11.2010 22:59

Код AS3:

object.addEventListener(MouseEvent.MOUSE_MOVE, blabla);

не ?

3p.station 06.11.2010 23:01

у авея свои обработчики...

BWAne 07.11.2010 12:34

Это все понятно, маус евент пашет если его я назначаю например к boxes[1].
Как назначить маус евент сразу на массив и допустим при клике на любой кубик, этот самый кубик получал например GlowFilter. Только евент сам бы определял на какой именно элемент массива было кликнуто.

TanaTiX 07.11.2010 12:38

Нельзя назначить слушатель на массив, можно на контейнер.

BWAne 07.11.2010 12:55

контейнер в который я добавляю боксы - scene. Следовательно слушатель к нему надо добавлять.
Вот опять к этому и пришли, как в евенте прописать таргет что-бы он автоматически определялся ? Например при наведении на на курсора на бокс подсвечивался именно этот бокс, при наведении на второй - подсвечивался опять же только тот на котором курсор. Не добавлять же к каждому боксу [1] ... [n], отдельный слушатель событий, наверно это же можно сделать в пару строк.

dimarik 07.11.2010 12:59

Наверное нужно слушать эвенты на контейнере scene и работать с боксом как event.target.

BWAne 07.11.2010 14:30

угу вот только как их... или его евент таргетом сделать.
Есть где-нибудь примеры с использованием event.target и curentTarget ?

TanaTiX 07.11.2010 14:40

http://help.adobe.com/ru_RU/AS3LCR/F...l-classes.html

BWAne 07.11.2010 15:15

Спасибо нашел решение
Код AS3:

function OnMouseOver (e:MouseEvent3D):void {
                                        if (e.object is Mesh) {
                                                var mesh:Mesh = e.object as Mesh;
}
}



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

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