Created
November 6, 2012 12:00
-
-
Save alamboley/4024256 to your computer and use it in GitHub Desktop.
How to use the Level Manager (Citrus Engine recipe)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//In your Main class : | |
public function Main() { | |
levelManager = new LevelManager(ALevel); | |
levelManager.applicationDomain = ApplicationDomain.currentDomain; // to be able to load your SWF level on iOS | |
levelManager.onLevelChanged.add(_onLevelChanged); | |
levelManager.levels = [[Level1, "levels/A1/LevelA1.swf"], [Level2, "levels/A2/LevelA2.swf"]]; | |
levelManager.gotoLevel(); //load the first level, you can change the index. You can also call it later. | |
} | |
private function _onLevelChanged(lvl:ALevel):void { | |
state = lvl; | |
lvl.lvlEnded.add(_nextLevel); | |
lvl.restartLevel.add(_restartLevel); | |
} | |
private function _nextLevel():void { | |
levelManager.nextLevel(); | |
} | |
private function _restartLevel():void { | |
state = levelManager.currentLevel as IState; | |
} | |
// Note that you must create an abstract class : Level1 and Level2 extends ALevel | |
// which extends the State or StarlingState class. From our example : | |
public class ALevel extends State { | |
public var lvlEnded:Signal; | |
public var restartLevel:Signal; | |
protected var _level:MovieClip; | |
public function ALevel(level:MovieClip = null) { | |
super(); | |
_level = level; | |
lvlEnded = new Signal(); | |
restartLevel = new Signal(); | |
// Useful for not forgetting to import object from the Level Editor | |
var objectsUsed:Array = [Hero, Platform, Enemy, Sensor, CitrusSprite]; | |
} | |
override public function initialize():void { | |
super.initialize(); | |
var box2d:Box2D = new Box2D("Box2D"); | |
add(box2d); | |
// create objects from our level made with Flash Pro | |
ObjectMaker2D.FromMovieClip(_level); | |
} | |
} |
Here I'm using State, not StarlingState so we're on the display list ;)
Hy there i am a new flash builder developer.
I have a little question..can you put a link of how to make an import from flash pro to builder to a level made in flash pro? Or some tutorials to create levels in flash pro and use in builder
thanks
Critically important for anyone targeting Starling (just spent four hours trying to workaround a missing Starling context because I didn't understand the nature of my problem): your ALevel should extend StarlingState, not State. You will still need to call setUpStarling in your main. Like this:
public class ALevel extends StarlingState { ... }
public class Main extends StarlingCitrusEngine {
public function Main() {
setUpStarling(true);
...
}
...
}
Hopefully this will save you the headache I just dealt with.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for this!, I see you've not called the 'setupStarling()' method, is that ok?