Hello,
First let me show you the layout of my displayObjects hierarchy
Document Class have a stageRef:MovieClip object (same size as the swf) that all the other displayobjects are added.
And I have 2 more classes: createLevel and Player. Player class generates a box object and adds it to the stageRef from inside the class itself with:
stageRef.addChild(this)
createLevel class is used to generate a 11x15 sized grid and also have one container named blockHolder that holds the grid pieces.
What I am trying to do is I cant reach the creteLevel’s blockHolder object from Player Object.
I am also adding some related code below:
Document Class:
private var oPlayer:Player;
private var oLevel:CreateLevel;
public var stageRef:MovieClip = new MovieClip();
private var lvlArray1:Array = new Array(
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,
0,0,1,1,1,0,0,0,0,0,0,0,2,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,
0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
);
function main()
{
setStage(750,550); // creates empty mc and adds it
oLevel = new CreateLevel( stageRef, lvlArray1 );
//stageRef MovieClip, Level Array
oPlayer = new Player( stage, stageRef, 'John' );
//stage itself, stage MovieClip, name of Player
Player.as (Partial)
public function Player( _stageObj:Stage, _stageRef:MovieClip, _name:String ) {
sPlayerName = _name;
stageRef = _stageRef;
stageObj = _stageObj;
this.x = 375;
this.y = 450;
stageRef.addChild(this);
// trace(stageRef.contains(stageRef)+' '+this);
// trace(Sprite(stageRef.getChildByName( 'blockHolder' ).name ) );
stageObj.addEventListener(Event.ENTER_FRAME, movePlayer);
stageObj.addEventListener(KeyboardEvent.KEY_DOWN, checkKeyStateDown);
stageObj.addEventListener(KeyboardEvent.KEY_UP, checkKeyStateUp);
}
Above you see, I am trying to access blockHolder but I cant not manage.
Thats the place I need help
CreateLevel.as (All of it)
public function CreateLevel ( _stageRef:MovieClip, _levelArray:Array ){
stageRef = _stageRef;
blockHolder = new Sprite();
stageRef.addChild(blockHolder);
this.createLvl( blockHolder, _levelArray );
}
private function createLvl( blockHolder:Sprite, _levelArray:Array ):void{
var lvlColumns:int = Math.ceil(_levelArray.length/11);
for(var i:int = 0;i < _levelArray.length;i++){
if( ( i%lvlColumns) == 0 ) {
row ++;
}
if( _levelArray* > 0 && _levelArray* < 99 ){
//checking if we move onto the next row
//making a new block
var newBlock:tile = new tile();
if(_levelArray* == 1) {
newBlock.gotoAndStop(1);
} else if(_levelArray* == 2) {
newBlock.gotoAndStop(2);
} else if(_levelArray* == 3) {
newBlock.gotoAndStop(3);
} else if(_levelArray* == 4) {
newBlock.gotoAndStop(4);
}
//change the coordinates of the block
newBlock.x = (i-(row-1)*lvlColumns)*50;
newBlock.y = (row-1)*50;
//then finally adding it to stage
blockHolder.addChild(newBlock);
} else if (_levelArray* == 99){
stageRef.oPlayer.x = (i-(row-1)*lvlColumns)*newBlock.width;
stageRef.oPlayer.y = (row-1)*newBlock.height;
}
}
//reset the row for another use
row = 0;
}