Recycling Class objects not setting variables for Typed Group

14 views
Skip to first unread message

Shaun Michael K. Stone

unread,
Jun 2, 2015, 4:43:39 PM6/2/15
to haxef...@googlegroups.com



/**
 * 
 * @param levelId
 * @param gameObjects
 */
public function buildLevelObjectsFromJson(levelId:UInt = 0, gameObjects:Array<LevelObjects>):Void
{
logLevelBuild(levelId);
this.levelId = levelId;
for (obj in gameObjects)
{
trace('adding: ' + obj.id + ' to game objects pool');
var gameObj:GameObject = this.factory.get(
obj.type,
obj.typeId,
obj.delayBefore,
obj.delayAfter,
obj.speed,
obj.xPos,
obj.yPos
);
gameObj.setSpriteAnimations(textureAtlas);
setStartingPosition(gameObj, obj.xPos, obj.yPos);
setDelays(gameObj, obj.delayBefore, obj.delayAfter);
gameObj.setBounds(this.bounds);
gameObj.kill();
this.add(gameObj);
}
}

public function start():Void
{
this.timer.start(FlxRandom.intRanged(0, 5), addGameObject, 1);
}

private function addGameObject(Timer:FlxTimer):Void 
{
var obj:GameObject = cast(this.recycle(GameObject), GameObject);
setStartingPosition(obj);
trace('created ' + obj.getType());
timer.start(FlxRandom.intRanged(2, 5), addGameObject, 1);
}



I populate the class: 

GameObjectsGroup extends FlxTypedGroup<GameObject>

With data of game objects of various subclasses of GameObject as shown in trace.

GameObjectsGroup.hx:157: building game objects for level 1
GameObjectsGroup.hx:78: adding: 0 to game objects pool
GameObjectsGroup.hx:78: adding: 1 to game objects pool
GameObjectsGroup.hx:78: adding: 2 to game objects pool
GameObjectsGroup.hx:78: adding: 3 to game objects pool
GameObjectsGroup.hx:78: adding: 4 to game objects pool
GameObjectsGroup.hx:78: adding: 5 to game objects pool
etc
...

When I call recycle, it returns an empty object with no variables set. Why is this??

Reply all
Reply to author
Forward
0 new messages