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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.11.2007, 19:10
beshan вне форума Посмотреть профиль Отправить личное сообщение для beshan Посетить домашнюю страницу beshan Найти все сообщения от beshan
  № 1  
Ответить с цитированием
beshan

Регистрация: 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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