AS3跳跃(飞行)问题

时间:2016-05-19 22:27:45

标签: actionscript-3

我已经搜索了一下,但我找不到可以使用的答案。我可能看起来不够努力。我已经离开学校大约一年了,我遇到了一个我们在课堂上制作的flash游戏。我试图解决它上面的一些错误,以使其正常运行。我遇到的问题是一个跳跃问题:角色可以无休止地跳跃,就好像它在天空中飞舞一样。下一个错误是攻击图形不起作用,除非玩家在天空中。我生锈与编码,我希望回到as3并使用闪存程序。我有一个“player.as”文件,我将在下面粘贴它的代码。  感谢任何帮助,提前谢谢。

package  {

import flash.display.MovieClip;
import CollisionObject;
import flash.events.Event;
import flash.events.TimerEvent; 
import flash.utils.Timer;

public class Player extends CollisionObject {
    private var xMovement:Number;
    public var isAttacking:Boolean;
    private var attackTimer:Timer = new Timer (500, 1);

    public function Player() {
        // constructor code
        trace("I am the player");
        xMovement = 0;
        isAttacking:false;

        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    } // end constructor

    private function enterFrameHandler(event:Event):void{
        this.x += xMovement;
    } //end function

    public function attack() {
        isAttacking = true;
        this.gotoAndStop("attack");
        attackTimer.addEventListener(TimerEvent.TIMER_COMPLETE, doneAttacking);
        attackTimer.start();
    }

    public function startJumping(){
        if (isJumping == false) {
            isJumping == true;
            this.gotoAndStop("jump");
            downwardVelocity = -20; 
        }
    }

    public function doneAttacking  (event:TimerEvent):void{
        isAttacking = false;
        this.gotoAndStop("stop");
    }

    public function moveLeft() : void{
        xMovement =-7;
        this.scaleX = -1;
        this.gotoAndStop("run");
        isRunning = true;
    } //end function

    public function moveRight() : void{
        xMovement =7;
        this.scaleX = 1;
        this.gotoAndStop("run");
        isRunning = true;
    } //end function

    public function standStill() : void{
        xMovement = 0;          
        isRunning = false;
    } //end function

    override public function positionOnLanding(){
        if(isRunning == true){
            this.gotoAndStop("run");
        }else{
            this.gotoAndStop("stop");
        } //end else
    } //end function
} // end class

1 个答案:

答案 0 :(得分:2)

您的玩家无休止地跳跃,因为您从未将iSJumping设置为true。它应该是

isJumping = true;

而不是

isJumping == true;

攻击可能无法正常工作,因为你有一个自己的攻击框架,框架可能会被running或positionOnLanding重置?

请将您的attackTimer事件监听器移动到构造函数中,现在每次攻击时都会创建一个新的事件监听器,这会导致内存泄漏,而且实际上没有理由这样做。