Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 03.09.2010, 00:35
angry_beaver вне форума Посмотреть профиль Отправить личное сообщение для angry_beaver Найти все сообщения от angry_beaver
  № 14  
Ответить с цитированием
angry_beaver

Регистрация: Sep 2010
Сообщений: 6
Спасибо за ваши ответы!

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

У меня есть МК(муви клип), в этом МК menu у меня 5 главных МК кнопок (BUT1, BUT2, BUT3, BUT4, BUT5) с анимацией, каждая главная кнопка имеет саб кнопки и я создал 5 МК (but1Sub, but2Sub, but3Sub, but4sub, but5sub). В butSub есть: саб кнопки МК со своей анимацией, и анимация как саб кнопки выпадают когда срабатывает событие для главной кнопки.

Создал массивы:

Код AS3:
var aButtons:Array = [home_btn, services_btn, ted_btn, knowCenter_btn, about_btn]; - главные кнопки
var aSubMenu:Array = [home_sub, services_sub, ted_sub, knowledge_sub, about_sub];- массив со всеми саб менюшками
 
var aHomeSub:Array = []; - массивы для саб кнопок
var aServicesSub:Array = [package_btn, component_btn, prodRel_btn, medical_btn, solar_btn];
var aTedSub:Array = [report_btn, video_btn, accessibility_btn];
var aKnowCenter:Array = [medical_btn, packageTest_btn, railroad_btn];
var aabout:Array = [qm_btn, news_btn, contact_btn, links_btn];//4*/
-
-
-
Идея была такая:
инициализирую главные кнопки aButtons[], при MOUSE_OVER вызываю функцию где главная кнопка делается нажатой, потом вызываю саб менюшку из aSubMenu[]. Из функции где я вызываю саб меню я хочу инициализировать саб кнопки передавая нужный массив в initButtons(arr); таким образом я использую одну и ту же функцию, и так я хочу сделать для всех функций.

Код AS3:
function initButtons(arr:Array):void {
 
	for(var i:int = 0; i<arr.length; i++){
		arr[i].id = i;
		arr[i].buttonMode = true;
		arr[i].addEventListener(MouseEvent.MOUSE_OVER, playOver);
		arr[i].addEventListener(MouseEvent.MOUSE_OUT, playOut);
		arr[i].addEventListener(MouseEvent.CLICK, doClick);
	}//for
}//initButtons
 
function playOver(event:MouseEvent):void{
 
	var currentBtn:int = event.currentTarget.id;
	trace("suka="+currentBtn); //:)
 
	event.target.gotoAndPlay("over");
	setSelectedBtn(currentBtn, aButtons); // если бы я мог получить массив с кнопкой из события, то было бы очень красиво.
	callSubMenu(currentBtn)
 
}//playOver
 
function setSelectedBtn(id:int, arr:Array){
 
	for(var i:int = 0; i<arr.length; i++){
	if(i == id){
		arr[i].gotoAndStop("down");
		arr[i].buttonMode = false;
		arr[i].removeEventListener(MouseEvent.MOUSE_OVER, playOver);
		arr[i].removeEventListener(MouseEvent.MOUSE_OVER, playSOver);
		arr[i].removeEventListener(MouseEvent.MOUSE_OUT, playOut);
		arr[i].removeEventListener(MouseEvent.CLICK, doClick);
 
		}//if
 
	else{
		if(arr[i].currentLabel == "down"){
			arr[i].gotoAndPlay("out");
			}//if
		arr[i].buttonMode = true;
		arr[i].addEventListener(MouseEvent.MOUSE_OVER, playOver);
		arr[i].addEventListener(MouseEvent.MOUSE_OVER, playSOver);
		arr[i].addEventListener(MouseEvent.MOUSE_OUT, playOut);
		arr[i].addEventListener(MouseEvent.CLICK, doClick);
 
		}//else			
 
	}//for
 
}//setSelectedBtn
 
function callSubMenu(id:int):void{
 
	for(var i:int = 0; i < aSubMenu.length; i++){
 
		if(id == i && id !=0)
                        {
			aSubMenu[i].gotoAndPlay("open");
			initSubMenuButtons(i);
			trace("sub open for "+aSubMenu[i]);
			}//if
 
		else {
			if(aSubMenu[i].currentLabel == "open")
                        {
			aSubMenu[i].gotoAndPlay("close");
			trace("sub closed for "+aSubMenu[i]);
			}//if
		}//else
	}//for
}//callSubMenu
 
function initSubMenuButtons( id:int ):void{
	trace("initSubMenuButtons for " + id);
 
	switch(id){		
		case 0:break;
		case 1:initButtons(aServicesSub);break;
		case 2:;break; //initButtons(aTedSub)
		case 3:;break; //initButtons(aKnowCenter)
		case 4:;break; //initButtons(aAbout)
		default:break;
	}//switch
 
}//initSubMenuButtons
 
------
MAIN
------
initButtons(aButtons);
В коде могут быть ошибки, т.к. я постоянно все переписываю. Вариант этот еще сырой. Моя задача сейчас инициализировать саб кнопки и как бы мне это все так сделать, чтобы каждая саб кнопка имела уникальный ID чтобы мне вызывать iFrame в html....
Вообщем жесть....не судите строго, я недавно только начал изучать AS3.
Знаю что все это можно организовать с классами, только я не понимаю как это реализовать в моем случае!

Спасибо огромное за вашу помощь!

Создать новую тему   Часовой пояс GMT +4, время: 03:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
array , EventListener , массив , получить , слушатель

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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