Показать сообщение отдельно
Старый 26.07.2010, 16:10
dkrstudio вне форума Посмотреть профиль Отправить личное сообщение для dkrstudio Найти все сообщения от dkrstudio
  № 19  
Ответить с цитированием
dkrstudio

Регистрация: Jul 2010
Сообщений: 24
Вот код который я писал в начале. все вроде работает. кроме кучи багов. хоть щас на сцену

Код:
// Типа boolean
var up:Boolean=false;
var down:Boolean=false;
var left:Boolean=false;
var right:Boolean=false;
var brake:Boolean=false;
// Клавиша нажата
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down);
function key_Down(e:KeyboardEvent):void {
	if (e.keyCode==38) {
		up=true;
	}
	if (e.keyCode==40) {
		down=true;
	}
	if (e.keyCode==37) {
		left=true;
	}
	if (e.keyCode==39) {
		right=true;
	}
	if (e.keyCode==32) {
		brake=true;
	}
}
// Клавиша отпушена
stage.addEventListener(KeyboardEvent.KEY_UP, key_Up);
function key_Up(e:KeyboardEvent):void {
	if (e.keyCode==38) {
		up=false;
	}
	if (e.keyCode==40) {
		down=false;
	}
	if (e.keyCode==37) {
		left=false;
	}
	if (e.keyCode==39) {
		right=false;
	}
	if (e.keyCode==32) {
		brake=false;
	}
}
 
addEventListener(Event.ENTER_FRAME, movieCar);
// Переменные
var power:Number=0.3;
 
var friction:Number=0.95;
var braking:Number=0.85;// тормоз
var deceleration:Number=0.87;
var speed:Number=0;
 
var maxSpeed:Number=10;
var maxDownSpeed:Number=1;
 
var gradusRot:Number=2.4;
var gradus:Number=0;
var radian:Number;
var speedX:Number;
var speedY:Number;
 
function movieCar(e:Event):void {
	if (up) {
		speed+=power&&speed<maxSpeed;
	}
	if (down) {
		speed-=power;
		//speed = -1;
	}
	if ((left) && (up) || (left) && (down)) {
 
		gradus-=gradusRot;
	}
	if ((right) && (up) || (right) && (down)) {
 
		gradus+=gradusRot;
	}
	if (brake) {
		speed*=braking;
 
	}
 
	radian = (gradus * Math.PI)/180;
	speedX=speed*Math.cos(radian);
	speedY=speed*Math.sin(radian);
	MyCar.rotation=gradus;
	MyCar.x+=speedX;
	MyCar.y+=speedY;
 
 
	var MyCarW:Number=MyCar.width/2;
	var MyCarH:Number=MyCar.height/2;
	/*координаты сцены + половину ширины или высоты обьекта*/
	if (MyCar.x>550+MyCarW) {
		MyCar.x = 0 - (MyCarW);
	}
	if (MyCar.x < 0 -(MyCarW)) {
		MyCar.x=550+MyCarW;
	}
	if (MyCar.y>600+MyCarH) {
		MyCar.y = 0 - (MyCarH);
	}
	if (MyCar.y < 0 -(MyCarH)) {
		MyCar.y=600+MyCarH;
	}
 
}
Только объект MyCar создать. Баги есть но работает!
Правда не могу понять. При нажатии лево/право я увеличиваю gradus obj поворачивается на него.
Скорость разложена на

Код:
	speedX=speed*Math.cos(radian);
	speedY=speed*Math.sin(radian);
при нажатии вперед / назад скорость увеличивается на power/ тока не могу теперь понять как уваеличивать скорость в пределах от нуля до (допустим) 3. от 3 до 6, с 6 до 10. и как в любой момент времени реализовать торможение тобись направленное (не знаю как по другому) снижении скорости от n (где n скорость) до 0.???????????????????\



И второй вопрос. не мучайте меня подскажите. может сразу в классы пакеты или как там (я еще не разобрался в них) ведь создаю игру и в ней будут машины. хотя бы те которыми будет управлять один игрок. так как это все дело запихнуть в классы и загружать на сцену в определенные координаты?
__________________
Ну что с этим делать