2012-04-03 4 views
0

Hallo Ich habe den ActionScript-Code hier für ein Bubble Popping-Spiel. Wenn das Spiel beginnt, fallen Blasen von der Oberseite des Spiels nach unten und die Punktezahl wird für die meisten Blasen gehalten, die in 30 Sekunden angeklickt oder gepoppt werden.Bubble-Pop-Spiel Actionscript: Definition der ToString() -Methode durch eine Referenz mit einer statischen Klasse

Die Größe der Blase wird durch die Initialisierungsmethode im Code definiert und verwendet ToString() zur Berechnung der Punktzahl. ToString gibt mir einen 1061: Aufruf an eine möglicherweise undefinierte Methode Random durch eine Referenz mit statischem Typ uint. Dieser Fehler, den ich nicht herausfinden kann, woher er kommt.

Wenn jemand mit Erfahrung in AS3 mir einige Hinweise auf meine Fehler geben könnte, würde ich es sehr schätzen. Danke.

package { 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.media.Sound; 

    public class Ball extends MovieClip{ 

     static public var burstCounter: uint; 
     private var vx: Number; 
     private var vy: Number; 
     private var gravity: Number; 
     private var stageWidth; 
     private var stageHeight; 
     private var bubble:Ball = new Ball(); 
     private var score: uint=0; 

     public function Ball() { 
      bubble.addEventListener(Event.ADDED_TO_STAGE, initialize) 
      bubble.addEventListener(MouseEvent.CLICK, burst) 
      bubble.addEventListener(Event.ENTER_FRAME, dropping) 
     } 

     public function initialize (e:Event):void 
     { 
      bubble.x = Math.random() * stageWidth; 
      bubble.y = 0; 

      stageWidth = stage.stageWidth; 
      stageHeight = stage.stageHeight; 

      bubble.vx = Math.random() * 2 - 1; 
      bubble.vy = Math.random() * 2 + 1; 
      gravity = 0.1; 

      var sizeScale = Math.random() * 1.2 + .6; 
      bubble.scaleX = bubble.scaleY = sizeScale; 
      score = (10/sizeScale); 
      scoreValue.text = score.ToString(); 

      var colorTran = new ColorTransform(); 
      colorTran.color = Math.random() * 0xFFFFFF; 
      transform.colorTransform = colorTran; 
      addChild(bubble); 
     } 
     function dropping(e: Event) :void 
     { 
      x += vx; 
      y += vy; 
      vy += gravity; 

      if((x<0) || (x>stageWidth) || (y<0) || (y>stageHeight)) 
      { 
       if(parent != null) 
       { 
        parent.removeChild(this); 
       } 
       removeEventListener(Event.ENTER_FRAME, dropping) 
      } 
     } 
     function burst (e:Event):void 
     { 
      var ballonPopping: Sound = new BalloonPopping(); 
      bubble.removeEventListener(Event.ADDED_TO_STAGE, initialize); 
      bubble.removeEventListener(Event.ENTER_FRAME, dropping); 
      removeChild(bubble); 

      ballonPopping.play(); 

      burstCounter += score; 
     } 
    } 

} 

Antwort

0

Sie müssen jedes Vorkommen von

Math.Random() 

zu

Math.random() 

Note ändern die Klein r

Oder .. .schon seit es sieht aus wie Sie gerade diese Frage für ToString bearbeitet()

toString() 

Hinweis Versuchen Sie, wie ähnlich sich die Fehler sind. Sie binden eine Methode, die auf beiden nicht vorhanden ist. Großschreibung zählt VAR ist nicht dasselbe wie var

+0

bevorzugen Sie immer 'toString' über' ToString', wenn Sie 'trace (myObj)' schreiben, wird 'toString()' automatisch aufgerufen. Sie können dies verwenden, um nützliche Informationen über Ihr Objekt zu erhalten, anstatt es bei "[Object object]" auszugeben oder "trace (myObj.ToString())" überall aufzurufen – divillysausages

1

Versuchen Math.random() statt ...

0

uint hat keine ToString() -Methode entweder, aber es hat eine toString().

Fall ist wichtig in Methodennamen. :)

0

bewusst sein, dass Gehäuse spielt eine Rolle bei der Benennung & Aufruf Eigenschaften oder Methoden.

ActionScript verwendet pascalCasing für seine Mitglieder, einschließlich static Einsen. Konstanten verwenden ALL_CAPS.

Ich kann mir keine ActionScript-Klassenmitglieder vorstellen, die CamelCasing verwenden, wie Sie es bisher getan haben - soweit ich weiß, gibt es keine.

Verwandte Themen