See Also: CCApplication Members
Manages the running state, scheduling, event handling and rendering of a game.
A CCApplication maintains a list of CocosSharp.CCWindow objects (due to current MonoGame limitations, currently only supports a single window). During each iteration of the game run-loop, the application invokes the CCApplication.Update method where it processes input-events, passing the relevant events to the corresponding windows.
Additionally, in-game time-dependent events, such as running actions, are also updated. Subsequently, a Draw call is received and each of the windows are asked to redraw themselves.
c# Example
// Default case // // Single director/viewport // Layer's camera uses default visible bounds given by window design resolution // Default viewport takes up entire window screen public class AppDelegate : CCApplicationDelegate { public override void ApplicationDidFinishLaunching(CCApplication application, CCWindow mainWindow) { mainWindow.SetDesignResolutionSize(960, 640, CCSceneResolutionPolicy.ShowAll); CCScene scene = new CCScene(mainWindow); CCLayer layer = new MyLayer(); scene.AddChild(layer); sharedWindow.RunWithScene(scene); } } // Custom camera // // As above, with the exception that layer uses custom camera public class AppDelegate : CCApplicationDelegate { public override void ApplicationDidFinishLaunching(CCApplication application, CCWindow mainWindow) { mainWindow.SetDesignResolutionSize(960, 640, CCSceneResolutionPolicy.ShowAll); var scene = new CCScene(mainWindow); var layer = new MyLayer(); var cameraVisibleBounds = new CCSize(1000, 500); var cameraTarget = new CCPoint3(0, 0, 3); var cameraPosition = new CCPoint3(0, 0, 100); var camera = new CCCamera(cameraVisibleBounds, cameraPosition, cameraTarget); layer.Camera = Camera; scene.AddChild(layer); sharedWindow.RunWithScene(scene); } } // Custom viewport // // As with the default, with the exception that the scene uses a custom viewport public class AppDelegate : CCApplicationDelegate { public override void ApplicationDidFinishLaunching(CCApplication application, CCWindow mainWindow) { mainWindow.SetDesignResolutionSize(960, 640, CCSceneResolutionPolicy.ShowAll); // Specify the ratio of the screen to occupy // Note: top-left corner represents origin in screen space CCViewport topLeftViewport = new CCViewport(new CCRect(0.0f, 0.0f, 0.5f, 0.5f)); var scene = new CCScene(mainWindow, topLeftViewport); // Make sure we set custom policy, or else we to default to policy set by window // i.e. CCSceneResolutionPolicy.ShowAll implies that entire screen is used scene.SceneResolutionPolicy = CCSceneResolutionPolicy.Custom; var layer = new MyLayer(); scene.AddChild(layer); sharedWindow.RunWithScene(scene); } } // Multiple running scenes/viewport // // Create multiple scene directors to have multiple running scenes public class AppDelegate : CCApplicationDelegate { public override void ApplicationDidFinishLaunching(CCApplication application, CCWindow mainWindow) { mainWindow.SetDesignResolutionSize(960, 640, CCSceneResolutionPolicy.ShowAll); var topLeftViewport = new CCViewport(new CCRect(0.0f, 0.0f, 0.5f, 0.5f)); var topRightViewport = new CCViewport(new CCRect(0.5f, 0.0f, 0.5f, 0.5f)); var sceneDirector1 = new CCDirector(); var sceneDirector2 = new CCDirector(); var scene1 = new CCScene(mainWindow, topLeftViewport, sceneDirector1) { SceneResolutionPolicy = CCSceneResolutionPolicy.Custom }; CCScene scene2 = new CCScene(mainWindow, topRightViewport, sceneDirector2) { SceneResolutionPolicy = CCSceneResolutionPolicy.Custom }; var layer1 = new MyLayer(); var layer2 = new MyLayer2(); scene1.AddChild(layer1); scene2.AddChild(layer2); sceneDirector1.RunWithScene(scene1); sceneDirector2.RunWithScene(scene2); } }