Actionscript 3 AS3中的对象障碍?

Actionscript 3 AS3中的对象障碍?,actionscript-3,flash,Actionscript 3,Flash,我是一个初学者在编码,但我试图使一个闪光的rpg类型的游戏。我有一个障碍物围绕着我的游戏和一个行走的人(manmc)。我一直在看关于如何制作物体屏障的视频/阅读文章,但我似乎无法在不出错的情况下正确编码。我试图让我的角色在撞到树时停下来。该树编码为(treer1_MC)。我只是试着在按下按钮时对它进行编码,但它什么也不做,导致角色无法向上行走 import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.dis

我是一个初学者在编码,但我试图使一个闪光的rpg类型的游戏。我有一个障碍物围绕着我的游戏和一个行走的人(manmc)。我一直在看关于如何制作物体屏障的视频/阅读文章,但我似乎无法在不出错的情况下正确编码。我试图让我的角色在撞到树时停下来。该树编码为(treer1_MC)。我只是试着在按下按钮时对它进行编码,但它什么也不做,导致角色无法向上行走

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;

manmc.gotoAndStop ("Stand Front Frame");

var rightPressed:Boolean = new Boolean(false);
var leftPressed:Boolean = new Boolean(false);
var upPressed:Boolean = new Boolean(false);
var downPressed:Boolean = new Boolean(false);
var manSpeed:Number = 3;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
stage.addEventListener(Event.ENTER_FRAME, gameLoop);

function keyDownHandler (keyEvent:KeyboardEvent):void
{
    if(keyEvent.keyCode == Keyboard.RIGHT)
    {
        rightPressed = true;
    }
    else if(keyEvent.keyCode == Keyboard.LEFT)
    {
        leftPressed = true;
    }
    else if(keyEvent.keyCode == Keyboard.UP)
    {
        upPressed = true;
    }
    else if(keyEvent.keyCode == Keyboard.DOWN)
    {
        downPressed = true;
    }
}

function keyUpHandler (keyEvent:KeyboardEvent):void
{
    if(keyEvent.keyCode == Keyboard.RIGHT)
    {
        rightPressed = false;
        manmc.gotoAndStop("Stand Right Frame");
    }
    else if(keyEvent.keyCode == Keyboard.LEFT)
    {
        leftPressed = false;
        manmc.gotoAndStop("Stand Left Frame");
    }
    else if(keyEvent.keyCode == Keyboard.UP)
    {
        upPressed = false;
        manmc.gotoAndStop("Stand Back Frame");
    }
    else if(keyEvent.keyCode == Keyboard.DOWN)
    {
        downPressed = false;
        manmc.gotoAndStop("Stand Front Frame");
    }
}

function gameLoop(loopEvent:Event):void
{
    if(rightPressed)
    {
        if(manmc.x < 1050)
        {
            manmc.x += manSpeed;
        }
        manmc.gotoAndStop("Walk Right Frame");
    }
    else if(leftPressed)
    {
        if (manmc.x > 145)
        {
            manmc.x -= manSpeed;
        }
        manmc.gotoAndStop("Walk Left Frame");
    } 
    else if(downPressed)
    {
        if(manmc.y < 780)
        {
        manmc.y += manSpeed;
        }
        manmc.gotoAndStop("Walk Front Frame");
    }
        if (manmc.hitTest(treer1_MC))
    {
            trace("leftHit");
            manmc._x += 3;

    }
    else if(upPressed)
    {
        if(manmc.y > 145)
        {
            manmc.y -= manSpeed;
        }
        manmc.gotoAndStop("Walk Back Frame");
    }
}

这只是因为碰撞条件的声明超出了“向下按压”条件:

 else if(downPressed)
{
    if(manmc.y < 780)
    {
    manmc.y += manSpeed;
    }
    manmc.gotoAndStop("Walk Front Frame");
}
    if (manmc.hitTest(treer1_MC))
{
        trace("leftHit");
        manmc._x += 3;

}
else if(按下)
{
if(manmc.y<780)
{
manmc.y+=操纵速度;
}
manmc.gotoAndStop(“行走前车架”);
}
if(手动hitTest(树1_MC))
{
跟踪(“左击”);
manmc.x+=3;
}
缩进问题:),正确的方法应该是:

 else if(downPressed)
{
    if(manmc.y < 780)
    {
    manmc.y += manSpeed;
    }
    manmc.gotoAndStop("Walk Front Frame");

    if (manmc.hitTest(treer1_MC))
    {
        trace("leftHit");
        manmc._x += 3;
    }
}
else if(按下)
{
if(manmc.y<780)
{
manmc.y+=操纵速度;
}
manmc.gotoAndStop(“行走前车架”);
if(手动hitTest(树1_MC))
{
跟踪(“左击”);
manmc.x+=3;
}
}
我希望这有帮助;)

编辑:

manmc.hitTest(树1_-MC)

应该是:

manmc.hitTestObject(treer1\u-MC)


因为函数:hitTest()是AS2函数,所以在AS3上我们有:hitTestPoint()和hitTestObject();)

仍然给出了一个错误:(“TypeError:error#1006:hitTest不是一个函数。在开始时_fla::maintaline/gameLoop()”哦!还有一件事:manmc.hitTest(treer1_-MC)应该是:manmc.hitTestObject(treer1-MC)@SamA欢迎使用Stackoverflow!如果此答案解决了您的问题,请单击其左侧的勾号。这可以让其他有相同问题的人将其识别为已接受的工作答案。此外,它还将帮助您了解Stackoverflow(简称Stackoverflow)的工作原理。
 else if(downPressed)
{
    if(manmc.y < 780)
    {
    manmc.y += manSpeed;
    }
    manmc.gotoAndStop("Walk Front Frame");

    if (manmc.hitTest(treer1_MC))
    {
        trace("leftHit");
        manmc._x += 3;
    }
}