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;
}
Я что-то делаю не так? :confused:
|