Actionscript 3 有人能解决我的Adobe Animate游戏中的这个问题吗?

Actionscript 3 有人能解决我的Adobe Animate游戏中的这个问题吗?,actionscript-3,adobe,animate.css,Actionscript 3,Adobe,Animate.css,正如您从视频中看到的,当球在特定位置击中屏幕左侧时,球会出现小故障,但是,这不会发生在屏幕右侧。这是我的密码 var xDirection:Number = 10; var yDirection:Number = -10; var targetX:Number = player_mc.x; var easing:Number = 7; var playerScore:Number; function resetBallPosition():void { xDirection = 1

正如您从视频中看到的,当球在特定位置击中屏幕左侧时,球会出现小故障,但是,这不会发生在屏幕右侧。这是我的密码

var xDirection:Number = 10;
var yDirection:Number = -10;

var targetX:Number = player_mc.x;
var easing:Number = 7;

var playerScore:Number;

function resetBallPosition():void
{
    xDirection = 10;
    yDirection = -10;
    ball_mc.x = 2
    ball_mc.y = 11
}

function checkHitLocation(player:MovieClip):void
{
    var hitPercent:Number;
    var ballPosition:Number = ball_mc.x - player_mc.x;
    hitPercent = (ballPosition / player_mc.width);
    xDirection = hitPercent * 30;
    yDirection *= 1.025;
}

function initializeGame(event:MouseEvent):void
{

    playerScore = 0;
    showScore();
    showStart();
    player_mc.addEventListener(Event.ENTER_FRAME, movePlayer);
    ball_mc.addEventListener(Event.ENTER_FRAME, moveBall);
    bg_mc.removeEventListener(MouseEvent.CLICK, initializeGame);

}



function endGame():void

{

    player_mc.removeEventListener(Event.ENTER_FRAME, movePlayer);
    ball_mc.removeEventListener(Event.ENTER_FRAME, moveBall);
    bg_mc.addEventListener(MouseEvent.CLICK, initializeGame);
    text_mc.text = 'CLICK TO PLAY AGAIN';
    text_mc.visible = true
    start_mc.visible = false;

}

function moveBall(event:Event):void
{
    if(ball_mc.x <= 0)
    {
        xDirection *= -1;
        text_mc.visible = false;
        start_mc.visible = false;
    }
    else if(ball_mc.x >= stage.stageWidth - ball_mc.width)
    {
        xDirection *= -1;
        text_mc.visible = false;
        start_mc.visible = false;
    }
    if(ball_mc.hitTestObject(player_mc))
    {
        yDirection *= -1;
        ball_mc.y = player_mc.y - ball_mc.height - player_mc.height/2;
        checkHitLocation(player_mc);
        playerScore ++;
        showScore();
        text_mc.visible = false;
        start_mc.visible = false;
    }
    if(ball_mc.y <= 0)
    {
        yDirection *= -1;
        //resetBallPosition();
        text_mc.visible = false
        start_mc.visible = false;
    }
    else if(ball_mc.y >= stage.stageHeight - ball_mc.height)
    {
        endGame();
        resetBallPosition();
        showScore();

    }
    ball_mc.x += xDirection;
    ball_mc.y += yDirection;

}

function movePlayer(event:Event):void
{
    if(this.mouseX <= player_mc.width/2)
    {
        targetX = 0;
        start_mc.visible = false;
    }
    else if(this.mouseX >= stage.stageWidth - player_mc.width/2)
    {
        targetX = stage.stageWidth - player_mc.width;
        start_mc.visible = false;
    }
    else
    {
    targetX = this.mouseX - player_mc.width/2;
    start_mc.visible = false;
    }
    player_mc.x += (targetX - player_mc.x) / easing;
}

function showScore():void
{
    score_mc.text = "Score: " + playerScore;
    start_mc.visible = false;
}

function showStart():void
{
    start_mc.text = 'CLICK SCREEN TO START';
    start_mc.visible = true;

}

showStart();


bg_mc.addEventListener(MouseEvent.CLICK, initializeGame);
var xDirection:Number=10;
变量Y方向:数字=-10;
var targetX:Number=player_mc.x;
风险值:数字=7;
var playerScore:编号;
函数resetBallPosition():void
{
xDirection=10;
y方向=-10;
球_mc.x=2
球直径=11
}
功能检查位置(玩家:MovieClip):无效
{
var百分比:数字;
var ballPosition:Number=ball_mc.x-player_mc.x;
命中率=(球位/球员宽度);
xDirection=命中率*30;
Y方向*=1.025;
}
函数初始化名称(事件:MouseEvent):void
{
playerScore=0;
showScore();
showStart();
player_mc.addEventListener(Event.ENTER_FRAME,movePlayer);
ball_mc.addEventListener(Event.ENTER_FRAME,moveBall);
bg_mc.removeEventListener(MouseEvent.CLICK,初始化名称);
}
函数endGame():void
{
player_mc.removeEventListener(Event.ENTER_FRAME,movePlayer);
ball_mc.removeEventListener(Event.ENTER_FRAME,moveBall);
bg_mc.addEventListener(MouseEvent.CLICK,初始化名称);
text_mc.text='点击再次播放';
text_mc.visible=真
start_mc.visible=false;
}
函数moveBall(事件:事件):无效
{
if(球长x=舞台宽度-球宽)
{
xDirection*=-1;
text_mc.visible=false;
start_mc.visible=false;
}
if(球击测试对象(球员)
{
y方向*=-1;
ball_mc.y=球员_mc.y-球高度-球员高度/2;
选中位置(玩家\ mc);
playerScore++;
showScore();
text_mc.visible=false;
start_mc.visible=false;
}
如果(球高度=舞台高度-球高度)
{
结束游戏();
重置球位置();
showScore();
}
ball_mc.x+=xD方向;
ball_mc.y+=y方向;
}
函数movePlayer(事件:事件):无效
{
if(this.mouseX=stage.stageWidth-player_mc.width/2)
{
targetX=舞台宽度-播放器宽度;
start_mc.visible=false;
}
其他的
{
targetX=this.mouseX-player_mc.width/2;
start_mc.visible=false;
}
player_mc.x+=(targetX-player_mc.x)/easing;
}
函数showScore():void
{
score_mc.text=“score:+playerScore;
start_mc.visible=false;
}
函数showStart():void
{
start_mc.text='单击屏幕开始';
start_mc.visible=true;
}
showStart();
bg_mc.addEventListener(MouseEvent.CLICK,初始化名称);

提前感谢您,我只是一个初学者,所以我不确定代码中的问题在哪里,所以即使是一些关于在哪里查找的指示也会很好。

因为xDirection*=-1正在请求出现故障。如果球不能一次跳出这个位置,它将永远用x<0缝合它的路线

你不想否定轴球速度,你要确保它在左侧为正,在右侧为负

var aLeft:Number = 0;
var aRight:Number = stage.stageWidth - ball_mc.width;

if (ball_mc.x < aLeft)
{
    // Make it POSITIVE.
    xDirection = Math.abs(xDirection);

    // Fix the position as if the ball ricocheted.
    ball_mc.x = aLeft + (aLeft - ball_mc.x);
}
else if (ball_mc.x > aRight)
{
    // Make it NEGATIVE.
    xDirection = -Math.abs(xDirection);

    // Fix the position as if the ball ricocheted.
    ball_mc.x = aRight + (aRight - ball_mc.x);
}
var-aLeft:Number=0;
变量A正确:数字=舞台宽度-球宽度;
如果(球_mc.x正确)
{
//把它定为负数。
xDirection=-Math.abs(xDirection);
//固定位置,就像球反弹一样。
ball_mc.x=ArRight+(ArRight-ball_mc.x);
}
Y轴坐标和速度也是如此