//Вычисляем коэффициент масштабирования для пункта меню (чем дальше элемент -> тем меньше коэффициент масштабирования) var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
//Масштаб пункта меню в соответствии с коэффициентом menuItem.scaleX = menuItem.scaleY = scaleRatio;
//Положение пункта меню на сцене (из 3D в 2D координаты) menuItem.x = vanishingPointX + menuItem.xpos3D * scaleRatio; menuItem.y = vanishingPointY + menuItem.ypos3D * scaleRatio;
//Добавляем текст в пункт меню menuItem.menuItemText.text = "Menu item " + i;
//Мы не хотим, чтобы текстовое поле отлавливало мышиные события menuItem.mouseChildren = false;
//Присваиваем MOUSE_OVER, MOUSE_OUT и CLICK слушатели для пункта меню menuItem.addEventListener(MouseEvent.MOUSE_OVER, mouseOverItem); menuItem.addEventListener(MouseEvent.MOUSE_OUT, mouseOutItem); menuItem.addEventListener(MouseEvent.CLICK, itemClicked);
//Добавляем пункт меню в массив пунктов меню menuItems.push(menuItem);
//Добавляем пункт меню на сцену addChild(menuItem); }
//Добавим ENTER_FRAME слушатель для анимации addEventListener(Event.ENTER_FRAME, moveCarousel);
//Эта функция вызывается в каждом фрейме function moveCarousel(e:Event):void {
//Вычисляем угловую скорость в соответствии с положением mouseY angleSpeed = (mouseY - stage.stageHeight / 2) * 0.0002;
//Цикл по пунктам меню for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) {
//Запомним пункт меню в локальную переменную var menuItem:MenuItem = (MenuItem)(menuItems[i]);
//Вычисляем коэффициент масштабирования var scaleRatio = focalLength/(focalLength + menuItem.zpos3D);
//Масштаб элемента в соответствии с коэффициентом menuItem.scaleX=menuItem.scaleY=scaleRatio;
//Установим новые 3D координаты menuItem.xpos3D=- radius*Math.cos(menuItem.currentAngle)*0.5; menuItem.ypos3D=radius*Math.sin(menuItem.currentAngle); menuItem.zpos3D=radius*Math.cos(menuItem.currentAngle);
//Вызываем функцию, которая упорядочивает элементы так, что они перекрывают друг друга корректно sortZ(); }
//Эта функция сортирует элементы так , что они перекрывают друг друга корректно function sortZ():void {
//Упорядочиваем массив так, что элемент, который имеет самое высокое //z положение (= самый дальний) является первым в массиве menuItems.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
//Установим новые дочерние индексы для изображений for (var i:uint = 0; i < NUMBER_OF_ITEMS; i++) { setChildIndex(menuItems[i], i); } }
//Эта функция вызывается, когда мышь наводится на пункт меню function mouseOverItem(e:Event):void {
//изменяем альфа в 1 e.target.alpha=1; }
//Эта функция вызывается, когда мышь уходит с пункта меню function mouseOutItem(e:Event):void {
//изменяем альфа в 0.3 e.target.alpha=0.3; }
// Эта функция вызывается, когда пункт меню кликается function itemClicked(e:Event):void {
trace("Кликнули по меню! Добавьте сюда свою логику."); }
Все права принадлежат PainKiller.Net.Ru 2009-2010. Дизайн сайта разработан - PainKiller.Net.Ru
Внимание! Рип шаблона запрещен "Нарушение авторского права"!
Design bY PainKiller.Net.Ru