Показать сообщение отдельно
Старый 31.10.2010, 01:22
medvedya2 вне форума Посмотреть профиль Отправить личное сообщение для medvedya2 Найти все сообщения от medvedya2
  № 4  
Ответить с цитированием
medvedya2

Регистрация: Mar 2010
Сообщений: 128
Еще код урезал теперь для System.gc() нажать 1 и начинает работать мелено.
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.KeyboardEvent;
	import flash.events.ProgressEvent;
	public class EngineerTestForFlasher extends Sprite
	{
		public function EngineerTestForFlasher()
		{
			Repository.hero= new Hero;
			Repository.gamescreen.start();
			stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyboardControl.KeyDown);		
			stage.addEventListener(KeyboardEvent.KEY_UP,KeyboardControl.KeyUp);	
			this.addChild(Repository.gamescreen);
			this.addChild(new FPSMemCounter(0));
 
		}
	}
}
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
 
	public class GameScreen extends Sprite
	{
 
		public function GameScreen()
		{
 
		}
		public function start():void
		{
			this.addChild(Repository.hero);
		}
 
	}
}
Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Hero extends MovieClip
	{
		public static var X:Number=100;
		public static var Y:Number=100;
		public static var HP:int;
		public static var SPEED:Number=4;
		private var ROTATION:Number=0;
		public static var angle:Number;
		public static var keyLeft:Boolean;
		public static var keyRight:Boolean;
		public static var keyUp:Boolean;
		public static var keyDown:Boolean;
		public static var size:int=15;
 
		public function Hero()
		{
			this.addEventListener(Event.ENTER_FRAME,onFrame);
			var img:Sprite = new Sprite;
			img.graphics.beginFill(0);
			img.graphics.drawCircle(0,0,size);
			this.addChild(img);
			X=100;
			y=100;
		}
		private function onFrame(e:Event):void
		{
			ROTATION=-1;
			if(keyUp)ROTATION=0.5*Math.PI;
			if(keyLeft)ROTATION=0;
			if(keyRight)ROTATION=Math.PI;
			if(keyDown)ROTATION=1.5*Math.PI;
			if(keyUp&&keyLeft)ROTATION=0.25*Math.PI;
			if(keyUp&&keyRight)ROTATION=0.75*Math.PI;
			if(keyDown&&keyLeft)ROTATION=1.75*Math.PI;
			if(keyDown&&keyRight)ROTATION=1.25*Math.PI;
			if(ROTATION!=-1)
			{
				var nextX:int=X-Math.cos(ROTATION) * SPEED;
				var nextY:int=Y-Math.sin(ROTATION) * SPEED;
				X=nextX;
				Y=nextY;
			}
			if(this.x!=X)this.x=X;
			if(this.y!=Y)this.y=Y;	   
		}	
 
	}
}
Код AS3:
package
{
	import flash.events.KeyboardEvent;
	import flash.system.System;
	import flash.text.TextField;
 
	public class KeyboardControl
	{
		public function KeyboardControl()
		{
		}
		public static function KeyDown(e:KeyboardEvent):void
		{
 
 
 
			if (e.keyCode==87||e.keyCode==38) Hero.keyUp=true;
			if (e.keyCode==83||e.keyCode==40) Hero.keyDown=true;
			if (e.keyCode==65||e.keyCode==37) Hero.keyLeft=true;
			if (e.keyCode==68||e.keyCode==39) Hero.keyRight=true;
 
			if(e.keyCode==49)
			{
				System.gc();
			}
 
		}
		public static function KeyUp(e:KeyboardEvent):void
		{
			if (e.keyCode==87||e.keyCode==38) Hero.keyUp=false;
			if (e.keyCode==83||e.keyCode==40) Hero.keyDown=false;
			if (e.keyCode==65||e.keyCode==37) Hero.keyLeft=false;
			if (e.keyCode==68||e.keyCode==39) Hero.keyRight=false;
		}
 
	}
}
Код AS3:
package
{
	public class Repository
	{
		public static var hero:Hero= new Hero;
		public static var gamescreen:GameScreen= new GameScreen;
		public function Repository()
		{
		}
	}
}
Самое интересное что таймер работает корректно!
Видимо индусы перестарались с ENTER_FRAME


Последний раз редактировалось medvedya2; 31.10.2010 в 01:35.