написал код загрузчика и вот уже третий день пытаюсь определицца к какому паттерну его отнести... я его отнес к Command (Behavioral)...
может есть у кого-то больше опыта по идентификации паттернофф... буду рад услышать ваше мнение по поводу моего кода и паттерна к которому он может относицца... заранее благодарю...
Код:
package com.util
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.IOErrorEvent;
//************ CLASS DECLARATION ************
/*
LoaderController class controls the loading process on the Command (Behavioral) design pattern.
METHODS:
- getBytesLoaded - return bytesLoaded
- getBytesTotal - return bytesTotal
- progressLoader - displays process loading
- completeLoader - change frame on root
EVENTS:
rootLoaderInit - IE6 AS3 Preloader Events Failing and wait when finish initialization rootSymbol
rootLoaderProgress
rootLoaderComplete
rootLoaderError
*/
public class LoaderController
{
private var root_mc:MovieClip;
private var loader_mc:MovieClip;
private var rootLabel:String;
private var rootSymbol:String;
private var returnFunction:Function;
private var bytesLoaded:Number;
private var bytesTotal:Number;
private var bytesTrash:Number;
//************ CONSTRUCTOR ************
public function LoaderController (_root_mc:MovieClip, _loader_mc:MovieClip, _rootLabel:String, _rootSymbol:String, _returnFunction:Function):void
{
root_mc = _root_mc;
loader_mc = _loader_mc;
rootLabel = _rootLabel;
rootSymbol = _rootSymbol;
returnFunction = _returnFunction;
loader_mc.loader.text = "0 %";
loader_mc.loader_line.scaleX = 1;
root_mc.addEventListener (Event.ENTER_FRAME, rootLoaderInit);
root_mc.loaderInfo.addEventListener (ProgressEvent.PROGRESS, rootLoaderProgress);
root_mc.loaderInfo.addEventListener (Event.COMPLETE, rootLoaderComplete);
root_mc.loaderInfo.addEventListener (IOErrorEvent.IO_ERROR, rootLoaderError);
}
//************ METHODS ************
public function getBytesLoaded ():Number
{
return bytesLoaded;
}
public function getBytesTotal ():Number
{
return bytesTotal;
}
private function progressLoader ():void
{
var proc:Number = Math.floor(bytesLoaded/bytesTotal*100);
loader_mc.loader.text = proc +" %";
loader_mc.loader_line.scaleX = proc/100;
}
private function completeLoader ():void
{
root_mc.gotoAndStop(rootLabel);
}
//************ EVENTS ************
private function rootLoaderInit (event:Event):void
{
//IE6 AS3 Preloader Events Failing
if (!(bytesTrash>1) && root_mc.loaderInfo.bytesTotal >1)
{
if (bytesLoaded == bytesTotal && bytesTotal>1)
{
completeLoader ();
}
else
{
bytesLoaded = root_mc.loaderInfo.bytesTotal;
bytesTotal = root_mc.loaderInfo.bytesLoaded;
progressLoader ();
}
}
// Wait when finish initialization rootSymbol.
if (root_mc[rootSymbol] != null)
{
returnFunction();
loader_mc.visible = false;
root_mc.removeEventListener(Event.ENTER_FRAME, rootInit);
}
}
private function rootLoaderProgress (event:ProgressEvent):void
{
bytesLoaded = event.bytesLoaded;
bytesTotal = bytesTrash = event.bytesTotal;
progressLoader ();
}
private function rootLoaderComplete (event:Event):void
{
completeLoader ();
}
private function rootLoaderError (event:IOErrorEvent):void
{
trace("ioErrorFunction (root): " + event);
}
}
}
для справки:
Design patterns - шаблоны проектирования, предназначенны для оптимизации кода.
Используюцца либо на этапе проетирования системы либо во время рефакторинга/оптимизации уже написанного проекта. Для флеша можно применять либо для очень больших проектофф либо когда однотипные проекты задолбали и хочицца придумать для себя развлекуху
)))
Как правило используецца либо на уровне самостоятельного класса, либо класса и взаимодействия с его наследниками...