0

Я пытаюсь создать платформерную игру, и я пытаюсь сделать остановку «player1», когда она попадает на «платформу». Вот мой код до сих пор,hitTestObject обнаружение столкновения не работает в as3!

gotoAndStop("gameStart"); 

import flash.display.MovieClip; 
import flash.events.*; 
import flash.ui.Keyboard; 
import flash.ui.*; 


import flash.utils.Timer; 
import flash.events.TimerEvent; 

player1.gotoAndStop("nothing"); 


//private var speed:Number = 0; 
//private var maxspeed:Number = 4; 

var myTimer:Timer = new Timer(10,0); 


stage.focus = this; 


player1.addEventListener(Event.ENTER_FRAME,enterFrameHandler); 
/* 
myTimer.addEventListener(TimerEvent.TIMER,someFunction); 



myTimer.start(); 

function someFunction(event:TimerEvent) { 
player1.y += 2; 


} 
*/ 

function setup() { 
stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToArrowKeys); 
} 
setup(); 


function reactToArrowKeys(keyEvent:KeyboardEvent) { 

if (keyEvent.keyCode == 37) { 

    if (player1.x > 0) { 
    player1.x -= 5; 
    } 

} else if (keyEvent.keyCode == 39) { 

    if (player1.x < 700) { 
    player1.x += 5; 
    } 

} 


} 


function enterFrameHandler(e:Event):void { 
    if (player1.hitTestObject(platform)) { 
    trace("hitting"); 
    } else { 
    player1.y += 4; 
    } 
    } 

однако функция hitTestObject (enterFrameHandler) не работает должным образом и всегда будет принимать «еще» маршрут.

, пожалуйста, помогите!

+0

Вы можете предоставить дополнительную информацию? потому что это работает для меня. Я создал MovieClip под названием player1 и кирпичную платформу, и он обнаруживает хит. – Allan

ответ

1

Код, как указано, работает отлично для меня. Я бы искал какую-то глупую ошибку - например, если вы скопировали и вставляли фрагменты роликов, у вас может быть более одного клипа на сцене под названием «платформа», и в этом случае ваша ссылка может не решить тот, который вы намерены. Или что-то в этом роде.

Чтобы отслеживать его, попробуйте позвонить:

trace(player1.getBounds(stage)); 
trace(platform.getBounds(stage)); 

, который расскажет вам, где вспышка думает, что ограничительные рамки этих клипов. Я предполагаю, что код вернет нечто, отличное от того, что вы ожидаете, и решите, что это несоответствие покажет, где ошибка.

+0

ooooooh ok я не знал, что у вас не может быть больше, чем на клипе с именем platform! благодаря! – 2009-08-27 01:34:58

+0

Да, если да, то когда вы ссылаетесь на «платформу», Flash просто выбирает один из них. Удачи! – fenomas

Смежные вопросы