-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
203 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#include "AppDelegate.h" | ||
#include "HelloWorldScene.h" | ||
|
||
USING_NS_CC; | ||
|
||
AppDelegate::AppDelegate() { | ||
|
||
} | ||
|
||
AppDelegate::~AppDelegate() | ||
{ | ||
} | ||
|
||
bool AppDelegate::applicationDidFinishLaunching() { | ||
// initialize director | ||
auto director = Director::getInstance(); | ||
auto glview = director->getOpenGLView(); | ||
if(!glview) { | ||
glview = GLView::create("My Game"); | ||
director->setOpenGLView(glview); | ||
} | ||
|
||
// turn on display FPS | ||
director->setDisplayStats(true); | ||
|
||
// set FPS. the default value is 1.0/60 if you don't call this | ||
director->setAnimationInterval(1.0 / 60); | ||
|
||
// create a scene. it's an autorelease object | ||
auto scene = HelloWorld::createScene(); | ||
|
||
// run | ||
director->runWithScene(scene); | ||
|
||
return true; | ||
} | ||
|
||
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too | ||
void AppDelegate::applicationDidEnterBackground() { | ||
Director::getInstance()->stopAnimation(); | ||
|
||
// if you use SimpleAudioEngine, it must be pause | ||
// SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); | ||
} | ||
|
||
// this function will be called when the app is active again | ||
void AppDelegate::applicationWillEnterForeground() { | ||
Director::getInstance()->startAnimation(); | ||
|
||
// if you use SimpleAudioEngine, it must resume here | ||
// SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#ifndef _APP_DELEGATE_H_ | ||
#define _APP_DELEGATE_H_ | ||
|
||
#include "cocos2d.h" | ||
|
||
/** | ||
@brief The cocos2d Application. | ||
The reason for implement as private inheritance is to hide some interface call by Director. | ||
*/ | ||
class AppDelegate : private cocos2d::Application | ||
{ | ||
public: | ||
AppDelegate(); | ||
virtual ~AppDelegate(); | ||
|
||
/** | ||
@brief Implement Director and Scene init code here. | ||
@return true Initialize success, app continue. | ||
@return false Initialize failed, app terminate. | ||
*/ | ||
virtual bool applicationDidFinishLaunching(); | ||
|
||
/** | ||
@brief The function be called when the application enter background | ||
@param the pointer of the application | ||
*/ | ||
virtual void applicationDidEnterBackground(); | ||
|
||
/** | ||
@brief The function be called when the application enter foreground | ||
@param the pointer of the application | ||
*/ | ||
virtual void applicationWillEnterForeground(); | ||
}; | ||
|
||
#endif // _APP_DELEGATE_H_ | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
#include "HelloWorldScene.h" | ||
|
||
USING_NS_CC; | ||
|
||
Scene* HelloWorld::createScene() | ||
{ | ||
// 'scene' is an autorelease object | ||
auto scene = Scene::create(); | ||
|
||
// 'layer' is an autorelease object | ||
auto layer = HelloWorld::create(); | ||
|
||
// add layer as a child to scene | ||
scene->addChild(layer); | ||
|
||
// return the scene | ||
return scene; | ||
} | ||
|
||
// on "init" you need to initialize your instance | ||
bool HelloWorld::init() | ||
{ | ||
////////////////////////////// | ||
// 1. super init first | ||
if ( !Layer::init() ) | ||
{ | ||
return false; | ||
} | ||
|
||
Size visibleSize = Director::getInstance()->getVisibleSize(); | ||
Point origin = Director::getInstance()->getVisibleOrigin(); | ||
|
||
///////////////////////////// | ||
// 2. add a menu item with "X" image, which is clicked to quit the program | ||
// you may modify it. | ||
|
||
// add a "close" icon to exit the progress. it's an autorelease object | ||
auto closeItem = MenuItemImage::create( | ||
"CloseNormal.png", | ||
"CloseSelected.png", | ||
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); | ||
|
||
closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , | ||
origin.y + closeItem->getContentSize().height/2)); | ||
|
||
// create menu, it's an autorelease object | ||
auto menu = Menu::create(closeItem, NULL); | ||
menu->setPosition(Point::ZERO); | ||
this->addChild(menu, 1); | ||
|
||
///////////////////////////// | ||
// 3. add your codes below... | ||
|
||
// add a label shows "Hello World" | ||
// create and initialize a label | ||
|
||
auto label = LabelTTF::create("Hello World", "Arial", 24); | ||
|
||
// position the label on the center of the screen | ||
label->setPosition(Point(origin.x + visibleSize.width/2, | ||
origin.y + visibleSize.height - label->getContentSize().height)); | ||
|
||
// add the label as a child to this layer | ||
this->addChild(label, 1); | ||
|
||
// add "HelloWorld" splash screen" | ||
auto sprite = Sprite::create("HelloWorld.png"); | ||
|
||
// position the sprite on the center of the screen | ||
sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); | ||
|
||
// add the sprite as a child to this layer | ||
this->addChild(sprite, 0); | ||
|
||
return true; | ||
} | ||
|
||
|
||
void HelloWorld::menuCloseCallback(Ref* pSender) | ||
{ | ||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) | ||
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert"); | ||
return; | ||
#endif | ||
|
||
Director::getInstance()->end(); | ||
|
||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) | ||
exit(0); | ||
#endif | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#ifndef __HELLOWORLD_SCENE_H__ | ||
#define __HELLOWORLD_SCENE_H__ | ||
|
||
#include "cocos2d.h" | ||
|
||
class HelloWorld : public cocos2d::Layer | ||
{ | ||
public: | ||
// there's no 'id' in cpp, so we recommend returning the class instance pointer | ||
static cocos2d::Scene* createScene(); | ||
|
||
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone | ||
virtual bool init(); | ||
|
||
// a selector callback | ||
void menuCloseCallback(cocos2d::Ref* pSender); | ||
|
||
// implement the "static create()" method manually | ||
CREATE_FUNC(HelloWorld); | ||
}; | ||
|
||
#endif // __HELLOWORLD_SCENE_H__ |