Показать сообщение отдельно
Старый 29.01.2011, 23:56
Arbis вне форума Посмотреть профиль Отправить личное сообщение для Arbis Найти все сообщения от Arbis
  № 1  
Ответить с цитированием
Arbis

Регистрация: Apr 2010
Сообщений: 6
По умолчанию hitTestObject проскакивает

Здравствуйте уважаемые флешеры
Что-то глючит у меня метод hitTestObject(), все работает, но почему-то глючит... а именно: может не сработать в первые три секунды после запуска приложения и автомобильчик мой проскочит сквозь стену, и при последующей работе тоже иногда не срабатывает, это случается очень редко, но все же хотелось бы устранить сей недостаток. Собственно кусок кода из моего творения:
Код AS3:
		private function gameRun(){
			Car.addEventListener(Event.ENTER_FRAME, drive); // Car это и есть автомобиль
			stage.addEventListener(KeyboardEvent.KEY_DOWN, addspeed);
			stage.addEventListener(KeyboardEvent.KEY_UP, keyflush);
		}
		private function addspeed(e:KeyboardEvent){
			if(e.keyCode == 38){
				run = 1;
			} else if(e.keyCode == 40){
				run = 2;
			}
		}
		private function keyflush(e:KeyboardEvent){
			if((e.keyCode == 38) || (e.keyCode == 40)){
				run = 0;
			}
		}
                //В коде ниже Car.car.bump и Car.car.bump2 передний и задний бампера
		private function drive(e:Event){
			if(run == 1){ // Если нажата клавиша "Вверх" то проверяется условие на столкновение переднего бампера
				if(Car.car.bump.hitTestObject(wall1) || Car.car.bump.hitTestObject(wall2) || Car.car.bump.hitTestObject(wall3) || Car.car.bump.hitTestObject(wall4)){
					speed = 0;
				} else {
					speed += (speed<maxspeed)?stepspeed:0;
				}
			} else if(run == 2){ // Если нажата клавиша "Вниз" то проверяется условие на столкновение заднего бампера
				if(Car.car.bump2.hitTestObject(wall1) || Car.car.bump2.hitTestObject(wall2) || Car.car.bump2.hitTestObject(wall3) || Car.car.bump2.hitTestObject(wall4)){
					speed = 0
				} else {
					speed -= (speed>-maxspeed)?stepspeed:0;
				}
			} else { // Иначе, если клавиши не нажаты, но скорость автомобиля еще не погашена, то проверяется условие на столкновение и переднего и заднего бампера
				if(Car.car.bump2.hitTestObject(wall1) || Car.car.bump2.hitTestObject(wall2) || Car.car.bump2.hitTestObject(wall3) || Car.car.bump2.hitTestObject(wall4)){
					speed = 0
				} else if(Car.car.bump.hitTestObject(wall1) || Car.car.bump.hitTestObject(wall2) || Car.car.bump.hitTestObject(wall3) || Car.car.bump.hitTestObject(wall4)){
					speed = 0;
				} else {
					speed +=(speed>0)?-stepspeed:(speed<0)?stepspeed:0;
				}
			}
                        //Ну а дальше, если написать грубо
                        Car.y+=speed;
		}
Я что-то делаю не так?