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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2010, 16:34
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 1  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Question Переходим из фрэймов в классы.

Здравствуйте люди добрые!=)

Очень жажду начать программировать в отдельных .as файлах, но все боюсь начать. Осознаю преимущества программирования классами - это и сокращение кода, и динамичность, и лаконичность, и более быстрая работа... Посему прошу провести со мной маленький урок, что займет у вас несколько минут а полезен будет, думаю, многим новичкам)

допустим у нас есть простой код-обработчик кнопок, написанный в 1-м фрэйме, а в библиотеке лежат две кнопки: StartGameButton и HelpButton.

Код AS3:
var rooter = stage;
 
var startButt:MovieClip = new StartGameButton();
addChild(startButt);
startButt.x = 50;
startButt.y = 350;
startButt.enable = true;
 
var helpButt:MovieClip = new HelpButton();
addChild(helpButt);
helpButt.x = 500;
helpButt.y = 350;
helpButt.enable = true;
 
 
_ButEvent(startButt);
_ButEvent(helpButt);
 
 
function _ButEvent(mc)
{
	if(mc.enable) 
	{
		mc.useHandCursor = true;
		mc.buttonMode = true;
		mc.addEventListener(MouseEvent.MOUSE_DOWN, butHandlerDOWN)
 
 
		function butHandlerDOWN(e:Event):void 
		{
		   e.target.gotoAndStop(2)
		   rooter.addEventListener(MouseEvent.MOUSE_UP, butHandlerUP)
		}
 
		function butHandlerUP(e:Event):void 
		{
		   mc.gotoAndStop(1)
		   rooter.removeEventListener(MouseEvent.MOUSE_UP, butHandlerUP)
		   _butHandlerCLICK(mc);
		}
 
	} else {
			mc.gotoAndStop(3)
			trace('button disable')
			}//end if(mc.enable)
 
 
}
 
 
 
 
function _butHandlerCLICK(target) 
{
	switch (target)
    {
            case startButt: 
			{
				trace(m)
				break;
			}
	    case helpButt: 
			{
				trace(m)
				break;
			}
	} //end switch
 
}
Код состоит из двух функций - _ButEvent, что навешивает на кнопки листенеры down-up-click
и функции _butHandlerCLICK , которая проверяет, какая кнопка была нажата и выполняет действия.

так вот вопрос. Приведите пожалуйста на этом коде пример, как разделить его на, допустим, три .as файла - main, ButEvent и butHandlerCLICK ?

Старый 15.04.2010, 21:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Из вашего кода не понятно каким образом кнопки могут поменять состояние enabled / disabled. А так, ну вот, наверное...
Код AS3:
package tests 
{
	//{ imports
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.utils.Dictionary;
	//}
 
	/**
	 * ButtonsExample class.
	 * @author wvxvw
	 * @langVersion 3.0
	 * @playerVersion 10.0.32
	 */
	public class ButtonsExample extends Sprite
	{
		//--------------------------------------------------------------------------
		//
		//  Protected properties
		//
		//--------------------------------------------------------------------------
 
		protected var _buttons:Dictionary = new Dictionary();
 
		//--------------------------------------------------------------------------
		//
		//  Constructor
		//
		//--------------------------------------------------------------------------
 
		public function ButtonsExample() 
		{
			super();
			var startButt:MovieClip = new StartGameButton();
			super.addChild(startButt);
			startButt.x = 50;
			startButt.y = 350;
			this._buttons[startButt] = true;
			startButt.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseUpDownHandler);
 
			var helpButt:MovieClip = new HelpButton();
			super.addChild(helpButt);
			helpButt.x = 500;
			helpButt.y = 350;
			this._buttons[helpButt] = true;
			helpButt.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseUpDownHandler);
		}
 
		//--------------------------------------------------------------------------
		//
		//  Protected methods
		//
		//--------------------------------------------------------------------------
 
		protected function mouseUpDownHandler(event:MouseEvent):void 
		{
			var m:MovieClip = event.target as MovieClip;
			if (!this._buttons[m])
			{
				trace("Button disabled");
				return;
			}
			switch (event.type)
			{
				case MouseEvent.MOUSE_DOWN:
					m.gotoAndStop(2);
					break;
				case MouseEvent.MOUSE_UP:
					m.gotoAndStop(1);
					break;
			}
		}
	}
}
Соответсвенно импорт нужно дописать, если нужно.
__________________
Hell is the possibility of sanity

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

Теги
классы , кнопка
Опции темы
Опции просмотра

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

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


 


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


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