2014年09月16日

cocos2d-x v3.2でボタンを作成

まずボタンが押された際に実装されるfugaメソッドをHelloWorldScene.hで定義

class HelloWorld : public cocos2d::Layer
{
public:
....
void fuga(cocos2d::Ref* pSender);
....
};


HelloWorldScene.cppでは以下のように定義。

bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
auto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::fuga, this));
closeItem->setPosition(Point(400,50));
auto menu = Menu::create(closeItem,NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu,0);
return true;
}
void HelloWorld::fuga(cocos2d::Ref* pSender)
{
CCLOG("fuga");
}


MenuItemImage::create()でボタンのインスタンスを作成するもこのままではボタンとして機能しないのでMenu::create()に渡すことでボタンとして機能するようになります。
posted by ねこまんま at 00:24
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2でアクションを同時に行う

Spawn::create()で複数のアクションを同時に行うことができる

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto move = MoveBy::create(2,Point(10,10));
auto rotate = RotateBy::create(2, 10);
auto spawn = Spawn::create(move, rotate, nullptr);
sprite->runAction(spawn);
posted by ねこまんま at 00:08
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2でアクション繰り返し行う

Repeat::create(アクション名, 繰り返し回数)で繰り返しアクションを行うことができる。」

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto move = MoveBy::create(1,Point(10,10));
auto rotate = RotateBy::create(1, 10);
auto seq = Sequence::create(move, rotate, nullptr);
auto repeat = Repeat::create(seq, 3);
sprite->runAction(repeat);


RepeatForever::create(アクション名)にするとアクションを永遠に繰り返し処理を行います。

auto repeat = RepeatForever::create(seq);
posted by ねこまんま at 00:05
Comment(0) | TrackBack(0) | cocos2d

2014年09月15日

cocos2d-x v3.2で2つのアクションを連続して行う

Sequence::create()で2つのアクションを連続して行うことができます。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto move = MoveBy::create(2,Point(100,100));
auto rotate = RotateBy::create(2, 90);
auto seq = Sequence::create(move, rotate, nullptr);
sprite->runAction(seq);
posted by ねこまんま at 23:57
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で点滅アクション

cocos2d-x v3.2で点滅アクション

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto blink = Blink::create(1,20);
sprite->runAction(blink);


20回点滅します。

他のアクションはcocos2d-x: Action Class Referenceを参考に。
posted by ねこまんま at 23:48
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像を反転

FlipY::create()を利用すると画像が上下反転します。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto flip = FlipY::create(true);
sprite->runAction(flip);
posted by ねこまんま at 23:36
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像のアニメーションを作成する

cocos2d-x v3.2で画像のアニメーションを作成する

MoveBy::create()でアニメーション用のインスタンスを作成できるのでrunAction()で実行すると走ることができる。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);
auto move = MoveBy::create(2, Point(100,100));
sprite->runAction(move);


第1引数にはアニメーションの秒数を指定できMoveByでは相対移動つまり現在位置から縦100px横100pxに移動するアニメーションを行う。MoveByをMoveToに変更すれば絶対位置で移動する。

拡大・縮小のアニメーションはScaleBy::create()で作成

auto move = ScaleBy::create(2, 1.5);


回転のアニメーションはRotateBy::create()で作成

auto move = RotateBy::create(2, 90);


参考:cocos2d-xで画像をタップしたアニメーションして位置に移動させる
posted by ねこまんま at 23:16
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2でテキストを配置

cocos2d-x v3.2でテキストを配置。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto label = LabelTTF::create("hello world", "Arial", 24);
label->setPosition(Point(visibleSize.width/2,visibleSize.height - label->getContentSize().height ));
this->addChild(label,0);


参考:cocos2d-x v2.xでテキストを配置
posted by ねこまんま at 23:12
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像の基準点を変更する

cocos2d-x v3.2で画像の基準点を変更する。基準点とはそこを基準に移動や拡大縮小が行われるデフォルトでは中央(Point(0.5,0.5))だが以下のようにsetAnchorPoint()でPoint(0,0)を指定すると基準点は左下に移動し、Point(1,1)を指定すると右上に移動する。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
sprite->setRotation(45);
sprite->setAnchorPoint(Point(0,0));
this->addChild(sprite,0);
posted by ねこまんま at 20:18
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像の角度を変更する

cocos2d-x v3.2ではsetRotation()で配置する画像の回転を行うことができる。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
sprite->setRotation(45);
this->addChild(sprite,0);
posted by ねこまんま at 20:11
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像のサイズを変更

cocos2d-x v3.2ではsetScale()で配置する画像の拡大縮小を行うことができる。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
sprite->setScale(2);
this->addChild(sprite,0);
posted by ねこまんま at 20:08
Comment(0) | TrackBack(0) | cocos2d

cocos2d-x v3.2で画像を配置

cocos2d-x ver 2.xと cocos2d-x v3.2で画像を配置が変わっていた。

Size visibleSize = Director::getInstance()->getVisibleSize();
auto sprite = Sprite::create("Icon-57.png");
sprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(sprite,0);


CCSize→SizeみたいにCCプリフィックスが消えている点、ccp→Point、sharedDirector()→getInstance()といった細かなクラス名、メソッド名が変わっている模様。
posted by ねこまんま at 20:04
Comment(0) | TrackBack(0) | cocos2d

2014年09月14日

cocos2d-x v3.2のインストール

これまでcocos2d-x v2.2.3で勉強してきたけどせっかくなのでここいらでバージョンアップして勉強したいのでcocos2d-x v3.2にチェンジ。

cd ~/cocos2d/cocos2d-x-3.2/
./setup.py


NDK、SDK、ANTのパスを聞かれるがひとまず無視。

これでcocos newコマンドが使えるの以下のコマンドを打ってプロジェクトを作成。

cocos new -p net.hoge.fuga -l cpp -d  ~/cocos2d/cocos2d-x-3.2/projects HelloWorld 


プロジェクトの位置はcocos2d-x v2.2.3と同じくprojectsディレクトリにしておく。

参考:Cocos2d-x v3.2の開発環境を作ってみた
posted by ねこまんま at 20:23
Comment(0) | TrackBack(0) | cocos2d

cosos2d-xで向きを縦向きに変更する

cosos2d-x(ver 2.x)で向きを縦向きに変更する。

まずXcodeから設定を変更。アプリのGeneralからTARGETSでアプリを選択しDeviceOrientationで「portrait」を選択。

つぎにiosディレクトリに内のRootViewController.mmを開き以下の内容を変更。

return UIInterfaceOrientationIsLandscape( interfaceOrientation );

return UIInterfaceOrientationIsPortrait( interfaceOrientation );



return UIInterfaceOrientationMaskAllButUpsideDown;

return UIInterfaceOrientationMaskPortrait;


参考: Cocos2d-x: 縦画面・横画面の設定 | Lady Wendy
posted by ねこまんま at 20:09
Comment(0) | TrackBack(0) | cocos2d

2014年09月07日

cocos2d-xで画像をタップしたアニメーションして位置に移動させる

cocos2d-xで画像をタップしたアニメーションして位置に移動させる方法。画像の移動は「cocos2d-xで画像をタップした位置に移動させる」を参考に。

「cocos2d-xで画像をタップした位置に移動させる」のccTouchEnded()を変更、pImg->setPosition()からpImg->runAction()に変更しアクションにはCCMoveToで作成したアニメーションを指定します。

void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
CCPoint touchPosi = pTouch->getLocation();
CCNode* pImg = this->getChildByTag(0);
if(!pImg){
CCLog("empty");
}
CCActionInterval* action;
action = CCMoveTo::create(.5, ccp(touchPosi.x, touchPosi.y));
pImg->runAction(action);
}
posted by ねこまんま at 15:14
Comment(0) | TrackBack(0) | cocos2d

cocos2d-xで画像をタップした位置に移動させる

cocos2d-x(ver 2.x)で画像をタップした位置に移動させる。

画像の配置は「cocos2d-xで画像を配置」を、画面タップは「cocos2d-xで画面タップ」を参考に。

まず、画像配置時に画像にaddChild()を使ってタグ付けを行います。

CCSprite* pImg = CCSprite::create("Icon-57.png");
pImg->setPosition(ccp(size.width/2, size.height/2));
pImg->setTag(0);
this->addChild(pImg);


ccTouchEnded()時にgetChildByTag()を利用して先ほどタグ付けした画像を呼び出しsetPosition()でポジションをタップ座標に変更します。

void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
CCPoint touchPosi = pTouch->getLocation();
CCNode* pImg = this->getChildByTag(0);
if(!pImg){
CCLog("empty");
}
pImg->setPosition(ccp(touchPosi.x, touchPosi.y));
}


これで画像をタップした位置に移動させることができます。

画像移動をccTouchMoved()に変更したら画面スワイプで画像を移動なども可能。
posted by ねこまんま at 14:52
Comment(0) | TrackBack(0) | cocos2d

cocos2d-xで画面タップ

cocos2d-x ver2.xで画面タップを取得する方法

(cocos2d-x ver3.xは「cocos2d-x v3.2でタップを制御」を参照)

HelloWorldScene.hに以下を追加。;タッチ開始を制御するccTouchBegan関数、タッチ中を制御するccTouchMoved関数、タッチ完了を制御するccTouchEnded関数を定義。

class HelloWorld : public cocos2d::CCLayer、ccTouchMoved
{
public:
(中略)
virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

};


HelloWorldScene.cppのHelloWorld::init()には以下の処理を追加

bool HelloWorld::init()
{
(中略)
//シングルタッチを受け付ける
this->setTouchMode(kCCTouchesOneByOne);

//タッチを有効にする
this->setTouchEnabled(true);

return true;
}



またページ下部に以下の関数を追加。

bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
CCLog("タップ開始!");
return true;
}
void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
CCLog("タップ中!");
}
void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
CCLog("タップ終了");
}


タップした座標を取得するには以下のccTouchEnded時の処理をいかに変更する。

void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
CCPoint touchPosi = pTouch->getLocation();
CCLog("タップ終了 x座標:%f y座標:%f", touchPosi.x, touchPosi.y);
}

posted by ねこまんま at 12:12
Comment(0) | TrackBack(0) | cocos2d

2014年09月03日

cocos2d-xで画像を配置

cocos2d-x ver2.xで画像を配置する方法

CCSpriteクラスでスプライトを作成して配置します。

//画面サイズの取得
CCSize size = CCDirector::sharedDirector()->getVisibleSize();
//スプライトを作成
CCSprite* pImg = CCSprite::create("Icon-57.png");
//スプライトの位置をステージ中央に!
pImg->setPosition(ccp(size.width/2, size.height/2));
//ステージに画面を配置
this->addChild(pImg);
posted by ねこまんま at 15:05
Comment(0) | TrackBack(0) | cocos2d

2014年09月02日

cocos2d-xでテキストを表示

CCLabelTTFクラスでテキストを作成して配置できる。

//画面サイズを取得
CCSize size = CCDirector::sharedDirector()->getVisibleSize();

//テキストの設定 CCLabelTTF::create("文字列", "フォントの種類", 文字サイズ);
CCLabelTTF* pLabel = CCLabelTTF::create("Hello\nWorld", "Arial", 30);

//テキストを黄色に設定
pLabel->setColor(ccc3(255, 255, 0));

//画面の中央に表示!
pLabel->setPosition(ccp(size.width/2,size.height/2));
this->addChild(pLabel);
posted by ねこまんま at 14:43
Comment(0) | TrackBack(0) | cocos2d

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。