2014-04-15 50 views
0

我得到了關於構造定義的奇怪錯誤,我不知道是什麼意思。 林研究這個測試。我認爲問題是關於功能,但我不知道。 它是一款遊戲中的代碼(非常簡單),您必須將玩家從b點移動到a點,而不讓墜落的小行星碰觸到你。 在此先感謝。在這段代碼上迷路了,不能讓它工作

import flash.display.MovieClip; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
import flash.events.Event; 

     var up:Boolean; 
     var down:Boolean; 
     var left:Boolean; 
     var right:Boolean; 
     var vel:Number; 
     var velInimigo:Number; 
     var sentidoX:Number; 
     var sentidoY:Number; 
     var d:MovieClip; 
     var txt1:MovieClip; 
     var chegada:MovieClip; 
     var player:MovieClip; 
     var inimigos:Array; 
     var i:int; 
     var mc:MovieClip; 





function MainTimeline() 
     { 
      addFrameScript(0, frame1); 
      return; 
     } 

     function OnKeyDown(event:KeyboardEvent) : void 
     { 
      switch(event.keyCode) 
      { 
       case Keyboard.W: 
       { 
        up = true; 
        break; 
       } 
       case Keyboard.S: 
       { 
        down = true; 
        break; 
       } 
       case Keyboard.A: 
       { 
        left = true; 
        break; 
       } 
       case Keyboard.D: 
       { 
        right = true; 
        break; 
       } 
       default: 
       { 
        break; 
       } 
      } 
      return; 
     } 

function OnKeyUp(event:KeyboardEvent) : void 
     { 
      switch(event.keyCode) 
      { 
       case Keyboard.W: 
       { 
        up = false; 
        break; 
       } 
       case Keyboard.S: 
       { 
        down = false; 
        break; 
       } 
       case Keyboard.A: 
       { 
        left = false; 
        break; 
       } 
       case Keyboard.D: 
       { 
        right = false; 
        break; 
       } 
       default: 
       { 
        break; 
       } 
      } 
      return; 
     } 
function OnFrame(event:Event) : void 
     { 
      var loc3: = null; 
      var loc4: = null; 
      if (up) 
      { 
       sentidoY = -1; 
      } 
      else if (down) 
      { 
       sentidoY = 1; 
      } 
      else 
      { 
       sentidoY = 0; 
      } 
      if (left) 
      { 
       sentidoX = -1; 
      } 
      else if (right) 
      { 
       sentidoX = 1; 
      } 
      else 
      { 
       sentidoX = 0; 
      } 
      if (sentidoX == 1 && sentidoY == 0) 
      { 
       player.rotation = 0 + 90; 
      } 
      else if (sentidoX == 1 && sentidoY == 1) 
      { 
       player.rotation = 45 + 90; 
      } 
      else if (sentidoX == 0 && sentidoY == 1) 
      { 
       player.rotation = 90 + 90; 
      } 
      else if (sentidoX == -1 && sentidoY == 1) 
      { 
       player.rotation = 135 + 90; 
      } 
      else if (sentidoX == -1 && sentidoY == 0) 
      { 
       player.rotation = 180 + 90; 
      } 
      else if (sentidoX == -1 && sentidoY == -1) 
      { 
       player.rotation = 225 + 90; 
      } 
      else if (sentidoX == 0 && sentidoY == -1) 
      { 
       player.rotation = 270 + 90; 
      } 
      else if (sentidoX == 1 && sentidoY == -1) 
      { 
       player.rotation = 315 + 90; 
      } 
      player.x = player.x + vel * sentidoX; 
      player.y = player.y + vel * sentidoY; 
      var loc2: = 0 ; 
      while (loc2 < inimigos.length) 
      { 

       loc3 = inimigos[loc2]; 
       loc3.y = loc3.y + loc3.vel; 
       loc3.rotation = loc3.rotation + loc3.rotVel; 
       if (loc3.hitTestObject(player)) 
       { 
        loc4 = new GameOverMC(); 
        stage.addChild(loc4); 
        loc4.x = stage.stage.width/2; 
        loc4.y = stage.stageHeight/2; 
        stage.removeEventListener(Event.ENTERFRAME, OnFrame); 
       } 
       if (loc3.y > stage.stageHeight) 
       { 
        loc3.y = -loc3.height; 
       } 
       loc2++; 
      } 
      if (player.hitTestObject(chegada)) 
      { 
       if (txt1 == null) 
       { 
        txt1 = new VitoriaMC(); 
        stage.addChild(txt1); 
        txt1.x = stage.stage.width/2; 
        txt1.y = stage.stageHeight/2; 
       } 
      } 
      d.x = d.x + d.vel * d.sx; 
      d.y = d.y + d.vel * d.sy; 
      if (d.x >= stage.stageWidth - d.width/2 || d.x <= d.width/2) 
      { 
       d.sx = -d.sx; 
      } 
      if (d.y >= stage.stageHeight - d.height/2 || d.y <= d.height/2) 
      { 
       d.sy = -d.sy; 
      } 
      return; 
     } 
function frame1() 
     { 
      vel = 5; 
      velInimigo = 2; 
      sentidoX = 0; 
      sentidoY = 0; 
      d = new DemoMC(); 
      d.vel = 1; 
      d.sx = 1; 
      d.sy = 1; 
      d.x = stage.stageWidth/2; 
      d.y = stage.stageHeight/2; 
      txt1 = null; 
      chegada = new ChegadaMC(); 
      player = new PlayerMC(); 
      inimigos = new Array(); 
      stage.addChild(d); 
      stage.addChild(chegada); 
      stage.addChild(player); 
      player.x = player.width/2; 
      player.y = stage.stageHeight - player.height/2; 
      chegada.x = stage.stageWidth - chegada.width; 
      chegada.y = 0; 
      i = 0; 
      while (i < 60) 
      { 

       mc = new AstroMC(); 
       stage.addChild(mc); 
       inimigos.push(mc); 
       mc.x = 100 + Math.random() * (600 - mc.width); 
       mc.y = Math.random() * stage.stageHeight; 
       mc.rotVel = Math.random() * 10 - 5; 
       mc.vel = Math.random() * 3 + 1; 
       var loc1: = i; 
       var loc2: = i + 1; 
       loc1.i = loc2; 
      } 
      stage.addEventListener(KeyboardEvent.KEYDOWN, OnKeyDown); 
      stage.addEventListener(KeyboardEvent.KEYUP, OnKeyUp); 
      stage.addEventListener(Event.ENTERFRAME, OnFrame); 
      return; 
     } 
+0

你可以發佈你正在得到的確切錯誤 – RustyH

+0

你是否正在反編譯swf?像'loc3'和'loc4'這樣的名字與你從反編譯器中得到的名字是相似的。 – Panzercrisis

+0

是即時通訊反編譯來研究測試 – Eksu

回答

0

它已經一段時間,因爲我有AS3播放,但我看到一些奇怪的事情一個是

loc1.i = loc2; 

接近底部

什麼是「我」有關LOC1 ?這是在一個while循環使用我,但從來沒有增量,所以它看起來像一個無限循環

再次我可能是錯誤的,它已經相當一段時間。

相關問題