Created
September 7, 2014 07:36
-
-
Save takashi1975/420f9df11fe9a53026fd to your computer and use it in GitHub Desktop.
Cocos2d-x v3.x シングルタップ
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
#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); | |
//タッチイベント | |
protected: | |
virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event); | |
virtual void onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event); | |
virtual void onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event); | |
//virtual void onTouchCancelled(cocos2d::Touch *touch, cocos2d::Event *event); | |
}; | |
#endif // __HELLOWORLD_SCENE_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
#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); | |
//タッチイベント | |
{ | |
//シングルタップ | |
auto listener = EventListenerTouchOneByOne::create(); | |
//自分の下位のレイヤーにタッチイベントを渡さない | |
listener->setSwallowTouches(true); | |
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this); | |
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this); | |
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this); | |
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); | |
} | |
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 | |
} | |
//タッチイベント | |
bool HelloWorld::onTouchBegan(Touch *touch, Event *event) | |
{ | |
CCLOG("%s", __PRETTY_FUNCTION__); | |
//trueを返さないと Moved, Ended が来ないよ ^^; | |
return true; | |
} | |
//タッチイベント | |
void HelloWorld::onTouchMoved(Touch *touch, Event *event) | |
{ | |
CCLOG("%s", __PRETTY_FUNCTION__); | |
} | |
//タッチイベント | |
void HelloWorld::onTouchEnded(Touch *touch, Event *event) | |
{ | |
CCLOG("%s", __PRETTY_FUNCTION__); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment