2016-05-19 11 views
0

Iveは少しの周りを検索しましたが、私は働くことができる答えを見つけることができませんでした。私は約1年間学校にいませんでした。クラスで作ったフラッシュゲームを見つけました。 Iveが正しく機能するようにいくつかのエラーを修正しようとしていました。私が遭遇する問題は、ジャンプする問題です:キャラクターは空を飛んでいるかのように無限にジャンプすることができます。次のエラーは、プレーヤーが空にいない限り、攻撃グラフィックは再生されません。私はコーディングに錆びていて、私はas3に戻り、フラッシュプログラムを使用したいと考えています。私は "player.as"ファイルを持っています。私は以下のコードを貼り付けます。 ご協力いただきありがとうございます。AS3ジャンピング(飛行)問題

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 
+4

あなたのコードは不完全ですどこで 'downwardVelocity'を使用していますか?あなたは 'startJumping()'と 'attack()'をどこで呼びますか? – BadFeelingAboutThis

答えて

2

iSJumpingをtrueに設定していないため、プレイヤーは無限にジャンプしています。あなたは攻撃とフレームのための独自のフレームは、おそらく実行中またはpositionOnLandingによってリセットされて持っているので、それは

isJumping = true; 

代わりの

isJumping == true; 

攻撃はおそらく動作していないことでしょうか?

attackTimerイベントリスナーをコンストラクタに移動してください。攻撃するたびに新しいイベントリスナーが作成されるため、メモリリークが発生します。

+0

isJumping == trueを変更しました。 to isJumping = true;プレイヤーはジャンプしません。しかし、それはまだ効果音を演奏します。前のコメントから、コードは不完全です。これは古いプロジェクトなので、私は本当に分かりません。私はAS3で永遠に働いていません。私は本当にどこで笑を開始するか分からない。その屋根裏部屋から古い壊れたおもちゃを引っ張って、それを修正しようとしているが、あなたが最初にそれをやったことを知らないことは笑います。 –

関連する問題