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

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

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

Регистрация: Nov 2010
Сообщений: 12
Question Персонаж некорректно передвигается.

Вообщем как обычно, после долгих часов раздумий, обращаюсь за помощью.
Весь код перерыл, но так и не дошло до меня в чем же проблема.
Короче, персонаж двигается согласно заданным параметрам,но после возвращается в прежнее положение.
Код AS3:
package
{
 
	import flash.display.*;
    import flash.events.*;
    import flash.ui.*;
    import flash.utils.*;
 
	public class ScotlandCheer extends MovieClip
	{
		public var ground:Ground;
		public var army:Array;
		public var alien:Alien;
		public var gameTimer:Timer;
		public var archibald:Archibald;
		public var grounded:Boolean;
		public var downKeyIsBeingPressed:Boolean;
		public var upKeyIsBeingPressed:Boolean;
		public var leftKeyIsBeingPressed:Boolean;
		public var rightKeyIsBeingPressed:Boolean;
 
 
 
		public function ScotlandCheer()
		{
			leftKeyIsBeingPressed = false;
			rightKeyIsBeingPressed = false;
			downKeyIsBeingPressed = false;
			upKeyIsBeingPressed = false;
 
 
 
			ground = new Ground();
			addChild(ground);
 
			army = new Array();
			var newAlien = new Alien (200,50);
			army.push (newAlien);
			addChild(newAlien);
 
 
 
			archibald = new Archibald();
			addChild(archibald);
			archibald.x = mouseX;
			archibald.y = mouseY;
 
 
			gameTimer = new Timer(25);
			gameTimer.addEventListener (TimerEvent.TIMER,onTick);
			gameTimer.start();
			grounded = true;
			addEventListener( Event.ADDED_TO_STAGE, onAddToStage );
			return;
 
 
 
 
 
 
 
		}
 
 
 
 
 
 
		public function onTick(timerEvent:TimerEvent):void
		{
 
			if (Math.random() <0.01)
			{
			var randomX:Number = Math.random()* 550;
			var newAlien = new Alien (randomX,50);
			army.push (newAlien);
			addChild(newAlien);
			}
			archibald.x = 400;
			archibald.y = 500;
 
			for each( var alien:Alien in army)
 
			if (grounded) alien.MoveABit();
 
			if(alien.hitTestObject(ground))
			{
				alien.MoveABit();
				grounded = false;
 
			}
			if (leftKeyIsBeingPressed)
			{
				archibald.moveABit(-3,0);
			}
 
			// ГраницаЭкрана
 
			if (archibald.x <(archibald.width / 2))
			{
				archibald.x = archibald.width / 2;
			}
			else if (archibald.x > 800 - (archibald.width / 2))
					 {
						 archibald.x = 800 - (archibald.width / 2)
					 }
 
 
		}//Конец функции
 
		public function onKeyPress(event:KeyboardEvent):void
		{
			if (event.keyCode == Keyboard.LEFT)
			{
				leftKeyIsBeingPressed = true;
			}
			else if (event.keyCode == Keyboard.RIGHT)
			{
				rightKeyIsBeingPressed = true;
			}
			else if (event.keyCode == Keyboard.DOWN)
			{
				downKeyIsBeingPressed = true;
			}
			else if (event.keyCode == Keyboard.UP)
			{
				upKeyIsBeingPressed = true;
			}
			return;
		}
		public function onAddToStage( event:Event ):void
{
	stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyPress );
	stage.addEventListener( KeyboardEvent.KEY_UP, onKeyRelease );
	return;
}
 
			public function onKeyRelease(event:KeyboardEvent):void
		{
			if (event.keyCode == Keyboard.LEFT)
			{
				leftKeyIsBeingPressed = false;
			}
			else if (event.keyCode == Keyboard.RIGHT)
			{
				rightKeyIsBeingPressed = false;
			}
			else if (event.keyCode == Keyboard.DOWN)
			{
				downKeyIsBeingPressed = false;
			}
			else if (event.keyCode == Keyboard.UP)
			{
				upKeyIsBeingPressed = false;
			}
			return;
		}
 
 
 
 
	}
 
 
}
Вообщем-то вот. Ума не приложу, в чем же тут проблема?

Создать новую тему   Часовой пояс GMT +4, время: 07:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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