Показать сообщение отдельно
Старый 16.07.2014, 00:41
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 6  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Вот код из backgroundManager'a :

Код AS3:
package code.game.background
{
	import code.feather.Antimation.FeatherClip;
	import code.feather.ScreenManager.ScreenManager;
	import flash.display.Sprite;
	import code.featherEngine.featherConsole.Console;
 
	public class BackgroundManager extends Sprite
	{
		private static var _instance:BackgroundManager;
		private var _screen:ScreenManager;
		private var backgrounds:Array;
 
		public function BackgroundManager() 
		{
			if(_instance != null)
			{
				throw("Error use instance in BackgroundManager");
			}
			_instance = this;
 
			_screen = ScreenManager.instance;
			backgrounds = new Array();
		}
 
		public static function get instance():BackgroundManager
		{
			return (_instance == null) ? new BackgroundManager() : _instance;
		}
 
		/**
		 * Добавление заднего статичного фона по умолчанию в центре экрана.
		 * @param	name - имя закэшированного feather клипа.
		 * @param	type - тип фона статичный или динамичный.
		 * @param	speed - если динамичный укажите скорость.
		 * @param	num - число динамических фонов на экране (1 по умолчанию).
		 * @param	_x - положение по х на сцене.
		 * @param	_y - положение по у на сцене.
		 */
		public function addBackground(name:String, type:String, speed:Number = 0, koef:Number = 1, num:int = 1, _x:Number = 320, _y:Number = 240):void
		{
			if (num == 1)
			{
				createBackground(name, type, speed, koef, _x, _y, _x);
			}
			else
			{
				for (var i:int = 0; i < num; i++) 
				{
					createBackground(name, type, speed, koef, _x + (640 * i), _y, _x);
				}
			}
 
			Console.getInstance().message("Game: Added " + num + " new background.", Console.INFORMATION);
		}
 
		private function createBackground(name:String, type:String, speed:Number, koef:Number,  _x:Number, _y:Number, oldX:Number):void
		{
			var background:Object = new Object();
			background.name = name;
			background.koef = koef;
			background.graf = new FeatherClip();
			background.graf.setAnim(name);
			background.speed = speed;
			background.graf.x = _x;
			background.graf.y = _y;
			background.X = oldX;
 
			if (type == "dynamic")
			{
				backgrounds.push(background);
				_screen.addToScene(background.graf);
			}
			else if (type == "static")
			{
				_screen.addToScene(background.graf);
			}
		}
 
		private function moveBackground():void
		{
			if (backgrounds.length > 0)
			{
				for (var i:int = 0; i < backgrounds.length; i++) 
				{
                                        //Может быть из - за этого?
					var obj:Object = backgrounds[i];
 
					if (obj.speed != null)
					{
						obj.graf.x -= obj.speed;
					}
					else
					{
						Console.getInstance().message("Error: не указана скорость фона", Console.ERROR);
					}
				}
			}
		}
 
		private function redrawBackgrounds():void
		{
			if (backgrounds.length > 0)
			{
				for (var i:int = 0; i < backgrounds.length; i++) 
				{
					var obj:Object = backgrounds[i];
 
					if (obj.graf.x <= -obj.graf.width / 2 + obj.speed)
					{
						obj.graf.x = obj.X + obj.graf.width - obj.speed - obj.koef;
					}
				}
			}
		}
 
		public function update():void
		{
			moveBackground();
			redrawBackgrounds();
		}
	}
}