-
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.
-
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|