A Flash Developer Resource Site

Results 1 to 2 of 2

Thread: Error #1010 in referencing items in an array

Hybrid View

  1. #1
    Junior Member
    Join Date
    May 2006
    Posts
    7

    Error #1010 in referencing items in an array

    So, when I try to move my "stars" I get a 1010 error. when I try to loop a singular item, it works, but dynamically... it's a different story.

    Using FlashDevelop.

    main()
    Actionscript Code:
    package
    {
        import com.gfx.mainContainer;
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import com.gfx.sprites.Ship;
       
        [SWF(width = '300', height = '400', backgroundColor = '#000000', frameRate = '30')]
       
        public class Main extends mainContainer
        {
           
        }
    }

    mainContainer()
    Actionscript Code:
    package com.gfx
    {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import com.gfx.sprites.smlStar;
        import com.gfx.sprites.medStar;
        import com.gfx.sprites.lrgStar;
        import flash.events.Event;
       
       
        public class mainContainer extends MovieClip
        {
            public var stWidth:Number = root.stage.stageWidth;
            public var stHeight:Number = root.stage.stageHeight;
            public var starArray:Array = new Array();
           
            public function mainContainer()
            {
                var starContainer:MovieClip = new MovieClip;
                addChild(starContainer);
                popStars();
                trace(starArray.length)
                super();
                   
                    function moveStars(event:Event):void
                    {
                        var i:Number = 0;
                        var starCount:Number = starArray.length;
                        while (i <= starCount)
                        {
                            starArray[i].y = starArray[i].y++;
                            i++
                        }
                    }
                function popStars():void
                {
                    var str_xPos:Number;
                    var str_yPos:Number;
                    var i:Number = 0;
                    while (i <= 75)
                    {
                        var SmlStar:smlStar = new smlStar();
                        var MedStar:medStar = new medStar();
                        var LrgStar:lrgStar = new lrgStar();
                        if (i <= 25)
                        {
                            starContainer.addChild(SmlStar);
                            starArray.push(SmlStar);
                            rndPos();
                            starArray[i].x = str_xPos;
                            starArray[i].y = str_yPos;
                            trace(starArray[i].x, starArray[i].y);
                            i++
                        }
                        else if (i <= 50)
                        {
                            starContainer.addChild(MedStar);
                            starArray.push(MedStar);
                            rndPos();
                            starArray[i].x = str_xPos;
                            starArray[i].y = str_yPos;
                            trace(starArray[i].x, starArray[i].y);
                        i++
                        }
                        else if (i >= 50)
                        {
                            starContainer.addChild(LrgStar);
                            starArray.push(LrgStar);
                            rndPos();
                            starArray[i].x = str_xPos;
                            starArray[i].y = str_yPos;
                            trace(starArray[i].x, starArray[i].y);
                            i++
                        }
                       
                        function rndPos():void
                        {
                            var tempX:Number = stWidth - starArray[i].width;
                            var tempY:Number = stHeight - starArray[i].height;
                           
                            str_xPos = Math.floor(Math.random()*(stWidth + 1));
                           
                            str_yPos = Math.floor(Math.random() * (stHeight + 1));
                           
                            if (str_xPos <= 0)
                            {
                                str_xPos = 0;
                            }
                            else if (str_xPos >=  tempX)
                            {
                                str_xPos = tempX;
                            }
                            else if (str_yPos <= 0)
                            {
                                str_yPos = 0;
                            }
                            else if (str_yPos >=  tempY)
                            {
                                str_xPos = tempY;
                            }
                        }
                    }
                    starContainer.addEventListener(Event.ENTER_FRAME, moveStars);
                    trace(starArray, i);
                }
               
            }
           
           
        }

    }

    Any thoughts?

    I can trace starArray, but I can't loop to each individual element and move it.

  2. #2
    :
    Join Date
    Dec 2002
    Posts
    3,518
    Code:
    package com.gfx{
    
    	import flash.display.MovieClip;
    	import flash.display.Sprite;
    	import com.gfx.sprites.smlStar;
    	import com.gfx.sprites.medStar;
    	import com.gfx.sprites.lrgStar;
    	import flash.events.Event;
    
    	public class mainContainer extends MovieClip {
    
    		public var stWidth:Number = root.stage.stageWidth;
    		public var stHeight:Number = root.stage.stageHeight;
    		public var starArray:Array = new Array();
    		private var starContainer:MovieClip;
    		private var str_xPos:Number;
    		private var str_yPos:Number;
    
    		public function mainContainer() {
    			starContainer = new MovieClip();
    			addChild(starContainer);
    			popStars();
    			trace(starArray.length);
    			super();
    		}
    		private function moveStars(event:Event):void {
    			var i:Number = 0;
    			var starCount:Number = starArray.length;
    			while (i < starCount) {
    				starArray[i].y +=  1;
    				i++;
    			}
    		}
    		private function popStars():void {
    			var i:Number = 0;
    			while (i <= 75) {
    				if (i <= 25) {
    					var SmlStar:smlStar = new smlStar();
    					starContainer.addChild(SmlStar);
    					starArray.push(SmlStar);
    				} else if (i <= 50) {
    					var MedStar:medStar = new medStar();
    					starContainer.addChild(MedStar);
    					starArray.push(MedStar);
    				} else if (i >= 50) {
    					var LrgStar:lrgStar = new lrgStar();
    					starContainer.addChild(LrgStar);
    					starArray.push(LrgStar);
    
    				}
    				rndPos(i);
    				starArray[i].x = str_xPos;
    				starArray[i].y = str_yPos;
    				i++;
    			}
    			starContainer.addEventListener(Event.ENTER_FRAME,moveStars);
    		}
    		private function rndPos(i:Number):void {
    			var tempX:Number = stWidth - starArray[i].width;
    			var tempY:Number = stHeight - starArray[i].height;
    			str_xPos = Math.floor(Math.random() * stWidth + 1);
    			str_yPos = Math.floor(Math.random() * stHeight + 1);
    			if (str_xPos <= 0) {
    				str_xPos = 0;
    			} else if (str_xPos >= tempX) {
    				str_xPos = tempX;
    			} else if (str_yPos <= 0) {
    				str_yPos = 0;
    			} else if (str_yPos >= tempY) {
    				str_xPos = tempY;
    			}
    		}
    	}
    }

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center