Flash Action Script 3.0错误1120

时间:2015-02-08 15:06:50

标签: actionscript-3 flash-cs5

所以我已经到了一个我必须提出问题的地步,我已经花了3个小时谷歌了几个小时。我希望你们能帮助我。

我很确定我已经定义了var UsedSlot,但它说错误1120。 我已经尝试过将它放在不同的线路上,比如定时器之前和之后。我只是一个新手,我需要这个用于我的学期项目。

以下是错误
场景1,图层'播放器',第1帧,第55行1120:访问未定义属性UsedSlot 场景1,图层'播放器',第1帧,第62行1120:访问未定义属性UsedSlot 场景1,图层'播放器',第1帧,第90行1120:访问未定义属性UsedSlot 场景1,层'播放器',帧1,线91 1120:访问未定义属性UsedSlot。

            stop();

            import flash.display.MovieClip;
            import flash.events.Event;
            import fl.motion.MotionEvent;
            import flash.utils.Timer;
            import flash.events.TimerEvent;


            //initialize objects
            var PlayerItems:Array = [new Items_Player_Cheese(),
                                     new Items_Player_Cheese(),
                                     new Items_Player_Cheese(),
                                     new Items_Player_Cheese(),
                                     new Items_Player_Cheese(),];

            //hard code test ***working***
            /*PlayerItems[0].x = Guide_Test_Start.x;
            PlayerItems[0].y = Guide_Test_Start.y;
            stage.addChild(PlayerItems[0]);*/
            ///////////////////

            var j:int;
            var SlotUsed:Array = new Array(PlayerItems.length);
            for(j = 0 ; j < SlotUsed.length; j++)
            {
                SlotUsed[j] = -1
                trace(SlotUsed[j]);
            }

            for(j = 0; j < PlayerItems.length; j++)
            {
                PlayerItems[j].x = Guide_Test_Start.x;
                PlayerItems[j].y = Guide_Test_Start.y;
            }

            var PlaceOccupied:Array = [false,false,false,false,false];

            //check if a place is unoccupied
            var myTimer:Timer = new Timer(3000);
            myTimer.addEventListener(TimerEvent.TIMER, CheckVacancy);
            myTimer.start();


            //choose a starting location
            var CVSync:int;
            function CheckVacancy(e:TimerEvent)
            {
                for(CVSync = 0 ; CVSync < 5; CVSync++)
                {
                    if(PlaceOccupied[CVSync] == false)
                    {
                        // Put an object
                        var ItemIndex = randomRange(0,PlayerItems.length - 1);
                        while(UsedSlot[ItemIndex] > -1)
                            ItemIndex = randomRange(0,PlayerItems.length - 1);

                        trace("Item["+ItemIndex+"] placed on ["+CVSync+"]");
                        PlayerItems[ItemIndex].x = StartGuide[CVSync].x;
                        PlayerItems[ItemIndex].y = StartGuide[CVSync].y;

                        UsedSlot[j] = ItemIndex;
                        PlaceOccupied[CVSync] = true;
                        trace("Vacant Slot Filled" + getTimer() + " ms");
                        break;
                    }
                }
            }

            //Instantiate the objects
            for(j = 0; j < PlayerItems.length; j++)
            {
                trace("Adding Player Items");
                stage.addChild(PlayerItems[j]);
            }



            //Add Listener To determine A hit
            for(j = 0; j < PlayerItems.length; j++)
            {
                PlayerItems[j].addEventListener(MouseEvent.MOUSE_UP, MUp);
            }
            function MUp(e:MouseEvent):void
            {
                for(j = 0; j < PlayerItems.length; j++)
                {
                    if(PlayerItems[j].hitTestObject(MyItem[0]))
                    {
                        CVSync[UsedSlot[j]] = false;
                        UsedSlot[j] = -1;

                        PlayerItems[j].x = -100;
                        trace("Point by: " + MyItem[0].name.toString());
                        break;
                    }
                }
            }


            /*cheese.addEventListener(MouseEvent.MOUSE_UP, MUp);
            function MUp(e:MouseEvent):void{
                if(cheese.hitTestObject(MyItem[0]))
                {
                    trace("Cheese Eaten by: " + MyItem[0].name.toString());
                    cheese.x = Guide_Test_Start.x;
                    cheese.y = Guide_Test_Start.y;
                }
            }*/

            function randomRange(minNum:Number, maxNum:Number):Number 
            {
                return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
            }

1 个答案:

答案 0 :(得分:1)

  

我很确定我已经定义了var UsedSlot

不,你没有,这就是问题所在。

名称UsedSlot在您发布的代码段中出现4次,这是导致4次错误的行。 他们都没有定义变量。

但您确实定义了另一个变量:

var SlotUsed:Array

代码。

如果不清楚:这是两个不同的变量。仅仅因为您在代码中的某处定义变量SlotUsed并不意味着您可以通过其他名称来访问它,例如UsedSlot。 这是区分大小写的,这意味着SlotUsedslotUsed不会被视为相同。

作为一个建议,“非常肯定”在找到这样的问题时通常毫无价值。相反,通过查找声明来证明它。如果你找不到它,它可能不存在。毕竟,编译器找不到它。

使用小写字母启动变量名称是一种常见的约定,这有助于将它们与类(或接口...)的名称区分开来。 虽然您可以选择自己想要的代码,但如果您坚持使用常规约定,那么其他人就可以更轻松地阅读您的代码,从而简化了帮助您解决问题的任务。 =)