Показать сообщение отдельно
Старый 16.04.2013, 19:13
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 9  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Вот мой вариант.
Работает как часы.

Код AS3:
package  
{
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
 
	public class Cube extends Sprite 
	{
 
		private var cubeFaces:Array = new Array();
		private var mainStage:Stage;
 
		public function Cube(mainStage:Stage) 
		{
			this.mainStage = mainStage;
			init();
		}
 
		private function init() : void
		{
			cubeFaces['face'] = 1;
			cubeFaces['back'] = 6;
			cubeFaces['left'] = 4;
			cubeFaces['right'] = 3;
			cubeFaces['top'] = 5;
			cubeFaces['bottom'] = 2;
 
			traceCube();
 
			mainStage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
		}	
 
		private function onKeyPressed(e: KeyboardEvent) : void 
		{
			var keyPressed:String;
			switch(e.keyCode)
			{
				case Keyboard.LEFT : 	// сдвиг face->left->back->right
										faceShifter("face->left->back->right");
										keyPressed = "LEFT";
										break;
 
				case Keyboard.RIGHT : 	// сдвиг face->right->back->left
										faceShifter("face->right->back->left");
										keyPressed = "RIGHT";
										break;
 
				case Keyboard.UP : 		// сдвиг face->top->back->bottom
										faceShifter("face->top->back->bottom");
										keyPressed = "UP";
										break;
 
				case Keyboard.DOWN : 	// сдвиг face->bottom->back->top
										faceShifter("face->bottom->back->top");
										keyPressed = "DOWN";
										break;
			}
 
			if (keyPressed)
			{
				trace("keyPressed:", keyPressed);
				traceCube();
			}
		}
 
 
		private function faceShifter(shiftRule:String) : void
		{
			var facesForShift:Array = shiftRule.split("->");
			var savingFace:int = cubeFaces[facesForShift[3]];
			for (var i:int = 2; i > -1; i--) 
			{
				cubeFaces[facesForShift[i+1]] = cubeFaces[facesForShift[i]];
			}
			cubeFaces[facesForShift[0]] = savingFace;
		}
 
		private function traceCube() : void
		{
			trace(" ", cubeFaces["top"], " ");
			trace(cubeFaces["left"], cubeFaces["face"], cubeFaces["right"]);
			trace(" ", cubeFaces["bottom"], " ");
			trace(" ", cubeFaces["back"], " ");
		}
 
 
	}
 
}