Hello Everybody,
I would be very happy if you could help me, i have problem with method setChildIndex, it throws me the Error #2006 : The supplied index is out of bounds.
at flash.display:DisplayObjectContainer/setChildIndex()
at Logic/set_ChildIndex()
at Statue/setLevel()
at Isometric_game_fla::MainTimeline/statues()
at Isometric_game_fla::MainTimeline/Isometric_game_fla::frame1()
But it throws this error only when i create containers where i want store these MovieClips. Please take a look :
[COLOR=Red]**var container2:MovieClip = new MovieClip();
var container:Sprite = new Sprite();
addChild(container);
addChild(container2);**[/COLOR]
var level:Array;
var grid:Title;
var num:int;
for(var j = 0; j < 8; j++){
for(var i = 1; i < 9; i++){
var midarray:Array = new Array(Title.title_width*i+j*Title.title_width,Title.title_height*i-j*Title.title_height);
Title.axis_map.push(midarray);
num = i+j*8;
/*trace(grid.getPosition);*/
grid = new Title(Title.axis_map[num-1][0],Title.axis_map[num-1][1]);
grid.setPosition(num);
[COLOR=Red]**container.**[/COLOR]addChild(grid);
}
}
addChild(grid);
grid.createLevelArray();
var Statues:Statue;
statues();
function statues(){
for (var k:int = 0; k < 8; k++) {
Statues = new Statue();
[COLOR=Red]**container2.**[/COLOR]addChild (Statues);
Statues.setPosition(64-k);
Statues.setLevel();
Statues.x = Title.axis_map[Title.axis_map.length-1-k][0];
Statues.y = Title.axis_map[Title.axis_map.length-1-k][1];
Statues.gotoAndStop(Math.round(Math.random()*6+6));
}
for (k = 0; k < 8; k++) {
Statues = new Statue();
[COLOR=Red]**container2.**[/COLOR]addChild (Statues);
Statues.setPosition(k+1);
Statues.setLevel();
Statues.x = Title.axis_map[k][0];
Statues.y = Title.axis_map[k][1];
Statues.gotoAndStop(Math.round(Math.random()*6+6));
}
}
there is Title.as :
var container2:MovieClip = new MovieClip();
var container:Sprite = new Sprite();
addChild(container);
addChild(container2);
var level:Array;
var grid:Title;
var num:int;
for(var j = 0; j < 8; j++){
for(var i = 1; i < 9; i++){
var midarray:Array = new Array(Title.title_width*i+j*Title.title_width,Title.title_height*i-j*Title.title_height);
Title.axis_map.push(midarray);
num = i+j*8;
/*trace(grid.getPosition);*/
grid = new Title(Title.axis_map[num-1][0],Title.axis_map[num-1][1]);
grid.setPosition(num);
container.addChild(grid);
}
}
addChild(grid);
grid.createLevelArray();
var Statues:Statue;
statues();
function statues(){
for (var k:int = 0; k < 8; k++) {
Statues = new Statue();
container2.addChild (Statues);
Statues.setPosition(64-k);
Statues.setLevel();
Statues.x = Title.axis_map[Title.axis_map.length-1-k][0];
Statues.y = Title.axis_map[Title.axis_map.length-1-k][1];
Statues.gotoAndStop(Math.round(Math.random()*6+6));
}
for (k = 0; k < 8; k++) {
Statues = new Statue();
container2.addChild (Statues);
Statues.setPosition(k+1);
Statues.setLevel();
Statues.x = Title.axis_map[k][0];
Statues.y = Title.axis_map[k][1];
Statues.gotoAndStop(Math.round(Math.random()*6+6));
}
}
a Statue.as :
package {
import flash.display.MovieClip;
public class Statue extends MovieClip {
private var _position:uint;
private var logic:Logic = new Logic();
public static const STATUE_CLICKED = "statue_clicked";
public function Statue () {
}
public function setPosition(number:uint):void {
this._position = number;
}
public function getPosition():uint{
return this._position;
}
public function setLevel(){
/*trace(Title.level_array);
trace(this);*/
trace(Title.level_array.length);
logic.set_ChildIndex(Title.level_array,this,_position);
}
}
}
and Logic.as :
package {
import flash.events.EventDispatcher;
import flash.display.MovieClip;
public class Logic extends EventDispatcher {
public function Logic() {
}
public function set_ChildIndex(coordinates:Array,target:MovieClip,i:uint):void {
target.parent.setChildIndex(target,coordinates[i-1]);
}
}
}
if i put there target.parent.parent it dosent work as well.
Thank you for your time :]