|
|
|||||
Регистрация: Dec 2001
Адрес: Kiev
Сообщений: 91
|
Design patterns?
написал код загрузчика и вот уже третий день пытаюсь определицца к какому паттерну его отнести... я его отнес к 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 - шаблоны проектирования, предназначенны для оптимизации кода. Используюцца либо на этапе проетирования системы либо во время рефакторинга/оптимизации уже написанного проекта. Для флеша можно применять либо для очень больших проектофф либо когда однотипные проекты задолбали и хочицца придумать для себя развлекуху ))) Как правило используецца либо на уровне самостоятельного класса, либо класса и взаимодействия с его наследниками... |
Часовой пояс GMT +4, время: 11:25. |
|
« Предыдущая тема | Следующая тема » |
|
|