2010-09-22 41 views
0

创建一个类似pacman的游戏,玩家可以在其中玩游戏。当一个MovieClip(盒子)在舞台上吃圆圈时,动态文本字段中的分数应该增加10分。Flash游戏创建分数动态文本字段(AS3)

接收到错误: line:`scoreField.text =“”+ string(currentScore);

错误消息:调用一个可能未定义的方法字符串。

package { 
    import flash.display.Sprite; 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.KeyboardEvent; 
    import flash.ui.Keyboard; 

    public class Move extends MovieClip { 

    //var ScoreObjects:Array = new Array(); // creates ScoreObjects array 
     var circle:MovieClip; 


     private var keyRight:Boolean=false; 
     private var keyLeft:Boolean=false; 
     private var keyForward:Boolean=false; 
     private var keyBackward:Boolean=false; 
     private var forwardMove:int=0; 
     private var sideMove:int=0; 

     private var inertia:int=8; //amount of friction 

    //var score_field:String; 
    //var point:MovieClip; 
    //private var playerScore:int; 

    var currentScore:int; 


// Constructor-------------------------------------------------------------------- 
     public function Move() { 
     init(); 
     } 

// function init ----------------------------------------------------------------- 
    function init():void { 

     //stage.frameRate=60; 
    //var score_field:String=""; 

    /*ScoreObjects[0] = new Circle(); 
    ScoreObjects[0].amount = 1; // amount of point -- not sure 
    ScoreObjects[0].name = "circle";*/ 
    circle.amount = 10; // each circle is worth 10 points 

    //var playerScore:int = 0; 
    var currentScore:int = 0; 

     stage.addEventListener(Event.ENTER_FRAME, frameloop); 
     stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownEvent); 
     stage.addEventListener(KeyboardEvent.KEY_UP, keyUpEvent); 

    box.addEventListener(Event.ENTER_FRAME, eatCircle); 
    wall.addEventListener(Event.ENTER_FRAME, hitWall); 



    //stage.addChild(ScoreObjects[0]); // add Score Objects to stage ------------------------------ 
    //trace(ScoreObjects[0]); 

    /*ScoreObjects[0].x = 105; 
    ScoreObjects[0].y = 233;*/ 

     } 

// function eatCircle -------------------------------------------------------------- 
function eatCircle(event:Event):void { 

    if (box.hitTestObject(circle)) { 
    trace ("I ate the circle"); 
    stage.removeChild(circle); 
    var newPoint:int; 
    newPoint = circle.amount; 
    // point = ScoreObjects[0].amount //store property's value of amount in variable...? 
    calcPoints(newPoint); 
    //box.deleteEventListener(Event.ENTER_FRAME, eatCircle) 
    //calcScore(); 
    //playerScore++; 
    } else { 
    trace ("I didn't eat the circle"); 
    } 
} 

function calcPoints(newPoint:int):void { 
    currentScore += newPoint; 
    updateDisplayScore(currentScore); 
} 

function updateDisplayScore(currentScore:int) { 
    scoreField.text = " " + String(currentScore); 
    var displayText:String=""; 
    displayText = scoreField.text; // assigning the message to the field*/ 
} 



// function hitWall -------------------------------------------------------------- 
function hitWall(event:Event):void { 
    if (box.hitTestObject(wall)) { 
    box.y+=6; 
    } else if (box.hitTestObject(wall2)) { 
    box.y-=6; 

    } else if (box.hitTestObject(wall3)) { 
    box.x+=6; 

    } else if (box.hitTestObject(wall4)) { 
    box.x-=6; 
     } 

} 

// function keyDownEvent ------------------------------------------------------------ 
    function keyDownEvent(event:KeyboardEvent):void { 
     switch (event.keyCode) { 
      case Keyboard.UP: 
       keyForward = true; 
       keyBackward = false; 
       break; 

      case Keyboard.DOWN: 
       keyBackward = true; 
       keyForward = false; 
       break; 

      case Keyboard.LEFT: 
       keyLeft = true; 
       keyRight = false; 
       break; 

      case Keyboard.RIGHT: 
       keyRight = true; 
       keyLeft = false; 
       break; 
     } 
     } 

// function keyUpEvent ------------------------------------------------------------ 
    function keyUpEvent(event:KeyboardEvent):void { 
     switch (event.keyCode) { 

      case Keyboard.UP: 
       keyForward = false; 
       break; 

      case Keyboard.DOWN: 
       keyBackward = false; 
       break; 

      case Keyboard.LEFT: 
       keyLeft = false; 
       break; 

      case Keyboard.RIGHT: 
       keyRight = false; 
       break; 
     } 
     } 

// function frameloop ------------------------------------------------------------ 
    function frameloop(event:Event):void { 

     //amount of force 
     if (keyForward) { 
      forwardMove -=2; 
     } 
     if (keyBackward) { 
      forwardMove += 2; 
     } 
     if (keyLeft) { 
      sideMove -= 2; 
     } 
     if (keyRight) { 
      sideMove += 2; 
     } 

     forwardMove +=(0-forwardMove)/inertia; 
     sideMove +=(0-sideMove)/inertia; 

     box.y+=forwardMove; 
     box.x+=sideMove; 

    //point = e.currentTarget.amount; 


     } 

    }// end of class 
}// end of package 
+0

和错误是什么? – Serge 2010-09-22 22:12:06

+0

抱歉不知道我的问题发生了什么。我一直在试图发布代码,但它没有显示出来。 – jc70 2010-09-22 22:13:36

回答

2
scoreField.text = " " + string(currentScore); 

应该

scoreField.text = " " + String(currentScore); 
+0

啊!感谢捕捉!这肯定需要修复。现在我收到一个新的错误:无法访问空对象引用的属性或方法。 \t在Move/init() \t at Move() – jc70 2010-09-22 22:26:02

+0

不知道我是否应该把它作为一个新的问题发布...抱歉,我在这里有点新 – jc70 2010-09-22 22:27:04

+1

错别字真的很痛!至于新的问题,是的,最好把它作为一个新的问题,因为它不是同一个错误。但我敢肯定你会得到这个错误,因为你没有声明你的函数是'public' – Serge 2010-09-22 22:33:16

0
scoreField.text = "" + String(currentScore); 

会工作,你也可以使用

scoreField.text = " " + currentScore.toString();