PDA

Просмотр полной версии : Переходим из фрэймов в классы.


ZergMaster
15.04.2010, 16:34
Здравствуйте люди добрые!=)

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

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


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 ?

wvxvw
15.04.2010, 21:04
Из вашего кода не понятно каким образом кнопки могут поменять состояние enabled / disabled. А так, ну вот, наверное...
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;
}
}
}
}
Соответсвенно импорт нужно дописать, если нужно.