More Related Content
Similar to cocos2d-x 3.0 + C++11で始めるゲーム開発超入門 (20)
More from Kohki Miki (20)
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
- 41. // メンバにオブジェクトを格納
_memberNode = new CCNode(); // 参照カウンタ1
!
_memberNode->release(); // 参照カウンタ0
_memberNode = NULL;
!
// メンバにオブジェクトを格納(autorelease)
_memberNode = CCNode::create(); // 参照カウンタ1(autorelease)
_memberNode->retain(); // 参照カウンタ2
!
// 略
_memberNode->release(); // 参照カウンタ0
_memberNode = NULL;
地獄っぽい
- 42. // localスコープでオブジェクトを格納
CCNode *node = new CCNode(); // 参照カウンタ1
node->autorelease(); // autorelease
!
// コンテナにオブジェクトを格納
CCNode *node = CCNode::create(); // 参照カウンタ1(autorelease)
CCArray *array = CCArray::create();
array->addObject(node); // 参照カウンタ2
地獄っぽい
- 44. !
CCMenuItem *item = [CCMenuItemImage itemFromNormalImage:@"button.png"
selectedImage:@"button_selected.png"
target:self
selector:@selector(onButtonPressed:)];
cocos2d(Objective-C)
!
CCMenuItemImage* button = CCMenuItemImage::create("button.png",
"button_selected.png",
this,
menu_selector(MainScene::onButtonPressed)
);
cocos2d-x(C++)
- 59. 演算子オーバーロードがつかえるようになった
CCPoint point = ccp(100, 20);
CCPoint vector = ccp(30, 40);
CCPoint point2 = ccpAdd(point, ccpMult(vector, 5));
cocos2d-x 2.x
auto point = Point(100, 20);
auto vector = Point(30, 40);
auto point2 = point + point2 * 5;
cocos2d-x 3.0
- 61. lambda
!
void MainScene::addButton() {
CCMenuItemImage* button = CCMenuItemImage::create("button.png",
"button_selected.png",
this,
menu_selector(MainScene::onButtonPressed)
);
}
!
void MainScene::onButtonPressed(cocos2d::CCObject *sender) {
// ボタンを押したときの処理
}
cocos2d-x 2.x
- 62. lambda
auto button = MenuItemImage::create("button.png",
"button_selected.png",
[&](Object *sender) {
// ボタンを押したときの処理
}
);
cocos2d-x 3.0
- 63. lambda
id button = [CCMenuItemImage itemFromNormalImage:@"button.png"
selectedImage:@"button_selected.png"
block:^(id sender) {
// ボタンを押したときの処理
}];
cocos2d(Objective-C)
- 64. smart pointer
using namespace cocos2d;!
private CCObject *Class::_object;!
!
void Class::setObject(CCObject *object) {!
if (_object) {!
_object->release();!
}!
_object = object;!
if (object) {!
object->retain();!
}!
}!
cocos2d-x 2.0
- 65. smart pointer
using namespace cocos2d;!
private std::shared_ptr<Object> Class::_object;!
!
void Class::setObject(Object *object) {!
_object = std::shared_ptr<Object>(object);!
}!
cocos2d-x 3.0
- 66. scoped enum
CCLabelTTF *label = CCLabelTTF::create("Hello",
"Helvetica",
16,
CCSizeMake(200, 40),
kCCTextAlignmentLeft
);
cocos2d-x 2.x
auto label = LabelTTF::create("Hello", !
"Helvetica", !
16, !
Size(200, 40), !
TextHAlignment::LEFT!
);
cocos2d-x 3.0
- 75. cocos2d-x in GGJ!
•
Global Game Jamにcocos2d-xチームを作ろう!
•
例年Kobold2D(Objective-C)で参加していたが、cocos2d-x
チームを作りたい気運の高まり
•
打倒Unity
•
世界中で作られたゲーム3000本のうち、1000本以上がUnity
製だった(GGJ2013)