![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2001
Адрес: Kiev
Сообщений: 91
|
написал код загрузчика и вот уже третий день пытаюсь определицца к какому паттерну его отнести... я его отнес к 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 - шаблоны проектирования, предназначенны для оптимизации кода. Используюцца либо на этапе проетирования системы либо во время рефакторинга/оптимизации уже написанного проекта. Для флеша можно применять либо для очень больших проектофф либо когда однотипные проекты задолбали и хочицца придумать для себя развлекуху ))) Как правило используецца либо на уровне самостоятельного класса, либо класса и взаимодействия с его наследниками... |
|
|||||
|
расслабся и не думай об этом ) лучше бы изучил как правильно писать коменты ASDoc было бы полезнее )
Про паттерны полезно почитать и осмыслить что к чему, но не стоит останавливатся на точном следовании того или иного паттерна - все зависит он проекта! И уж тем более не стоит пытаться готовый код подогнать под какое либо определение.
__________________
33 коровы |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 134
|
Я могу понять, когда мы выбираем паттерн для решения определенной задачи.... Но искать паттерн под готовый код - это уже... хм... вобщем... да.
![]() -Это из той же оперы, что писать юнит-тест к написанному и протестированному ручками коду ![]()
__________________
http://creationcomplete.com |
|
|||||
|
Регистрация: Dec 2001
Адрес: Kiev
Сообщений: 91
|
по поводу комментариефф... тексты исчо деффачка транслятор будет проверять... а формат камментофф это шаблон клиента... вообще позиция клиента и мне не понятна но он хочет что бы ффсе классы были написанны "Java-style design pattern"... поэтому и получаецца что я свой код пишу годамми отточенными шаблонами но надо мои шалоны исчо как позицианировались относительно стандартных design pattern....
судя по вашим камментариям помощи я не дождусь )))))) ну да ладно... |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
По поводу оптимизации. Оптимизация всегда направлена на ухудшение кода в пользу его быстродействия.
|
|
|||||
|
ветеран форума
|
Цитата:
__________________
4am is time to rock |
|
|||||
|
откуда там упоминание о Command взялось вообще?
> controls the loading process... я бы вообще не стал относить этот код к какому-либо типовому решению, но елси бы меня взяли за горло и вежливо попросили это сделать, то, скорее, это адаптер для загрузки чавото кудато |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Цитата:
|
|
|||||
|
ветеран форума
|
Цитата:
И выбор неоптимального алгоритма - не косяк, т к не всегда можно точно оценить быстродействие на стадии проектирования
__________________
4am is time to rock |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|