迷失在此代码上,无法使其正常工作

时间:2014-04-15 00:27:42

标签: actionscript-3

我得到一个关于构造定义的奇怪错误,我不知道是什么意思。 我正在研究这个测试。我认为问题在于功能,但我不确定。 它是游戏中的代码(非常简单),您必须将玩家从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;
        }

1 个答案:

答案 0 :(得分:0)

我玩AS3已经有一段时间,但我看到一些奇怪的事情就是

loc1.i = loc2;

靠近底部

与loc1相关的“i”是什么?这是在使用i的while循环中但从不递增它所以它看起来像一个无限循环

我可能错了很长一段时间。