インターネット上にある断片化された情報を切り取って、リブログする。 主にソフトウェア、Ubuntu関連、CPUなど気になったニュース、また、日々の面白い出来事やニュースもリブログします。
2016年12月14日水曜日
[UWP]忙しい人向けCocos2d-x入門
cocos2d-xの言語はC++です。
タッチイベント・画像配置・アニメーション、音再生などのAPIを使ったサンプルコードを書いたのでメモ。
〇パッケージ一覧 coscos2dの他
coscos2d::extension (ボタンなどのクラス関連)
coscos2d::ui(ui関連)
coscos2d::network(network関連)
〇ソースコードサンプル //----------------------------------
//Step1.テキストを表示する
//----------------------------------
auto hello = Label::createWithTTF("hello world", "Arial", 48);
hello->setPosition(100, 200);
this->addChild(hello);
//----------------------------------
//Step2.画面に画像を配置する
//----------------------------------
//プレイヤー画像作成
auto player = Sprite::create("images/player.png");
//プレイヤーを移動
player->setPosition(Vec2(160, 120));
//画面に張り付ける
this->addChild(player);
//----------------------------------
//Step3.画像のグルーピング
//----------------------------------
Node* fruits = Node::create();
Sprite* apple = Sprite::create("images/fruit0.png");
Sprite* grape = Sprite::create("images/fruit1.png");
Sprite* orange = Sprite::create("images/fruit2.png");
//タグId付与
fruits->setTag(9999);
apple->setTag(1);
grape->setTag(2);
orange->setTag(3);
//子ノード登録
fruits->addChild(apple);
fruits->addChild(grape);
fruits->addChild(orange);
//各画像の位置設定
apple->setPosition(Vec2(100, 100));
grape->setPosition(Vec2(200, 200));
orange->setPosition(Vec2(300, 30));
//登録(まとめて登録できる)
this->addChild(fruits);
//タグ指定してデータを取り出す
Node* fruits0 = this->getChildByTag(9999);
Sprite *fruit0 = (Sprite*)fruits->getChildByTag(1);
Sprite *fruit1 = (Sprite*)fruits->getChildByTag(2);
Sprite *fruit2 = (Sprite*)fruits->getChildByTag(3);
//グループ画像まとめて移動
fruits0->setPosition(Vec2(50, 50));
〇物理エンジンを使う
auto scene = Scene::createWithPhysics();
PhysicsWorld* world = scene->getPhysicsWorld();
world->setGravity(Vec2(0, -500));
world->setSpeed(1.0f);
〇2Dアニメやエフェクトを行う
//特にSpawnクラス(同時の動き)とSequenceクラス(順次の動き)を上手に使うべきです。
auto scale1 = ScaleTo::create(0.03, 1, 1);
auto fade1 = FadeTo::create(0.03, 200);
auto move1 = MoveBy::create(0.03, Vec2(20, 0));
auto spawn1 = Spawn::create(scale1, fade1, move1, nullptr);
auto scale2 = ScaleTo::create(0.03, 0.8, 0.6);
auto fade2 = FadeTo::create(0.03, 50);
auto move2 = MoveBy::create(0.03, Vec2(-20, 0));
auto spawn2 = Spawn::create(scale2, fade2, move2, nullptr);
auto seq = Sequence::create(spawn1, spawn2, nullptr);
auto scale3 = ScaleTo::create(0.03, 1, 1);
auto fade3 = FadeTo::create(0.03, 255);
auto spawn3 = Spawn::create(scale3, fade3, nullptr);
auto action = Sequence::create(seq, seq, seq, spawn3, nullptr);
runAction(action);
this->runAction(Sequence::create(DelayTime::create(1.0f),
CallFunc::create([this]() {
//ここで処理を書く
}),nullptr));
・BGMを鳴らす #include "SimpleAudioEngine.h"
//音量設定
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.5);
//読込み
SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("bgm.mp3");
//再生する
SimpleAudioEngine::sharedEngine()->playBackgroundMusic("bgm.mp3");
//停止する
SimpleAudioEngine::sharedEngine()->stopBackgroundMusic("bgm.mp3");
//一時停止
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
//再開
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
//音楽を先頭に戻す
SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic();
//音量を変更する
SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(0.4)
//再生中?
SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying
・効果音を鳴らす //効果音再生
int soundId;
soundId = SimpleAudioEngine::sharedEngine()->playEffect("effect.mp3");
SimpleAudioEngine::sharedEngine()->pauseEffect(soundId);
SimpleAudioEngine::sharedEngine()->resumeEffect(soundId);
・動画再生 SimpleVideoEngine::sharedEngine()->playVideo("movie.mp4");
・ローカライズ auto Language = Application::getInstance()->getCurrentLanguage();
if(Language == LanguageType::JAPANESE);
...
・タッチイベント●タッチ開始(指が付いた)時
bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);
bool onTouchesBegan(cocos2d::Touch* touch, cocos2d::Event* event);
●タッチ中に位置が動いた時
onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);
onTouchesMoved(cocos2d::Touch* touch, cocos2d::Event* event);
●タッチ終了(指を離した)時
onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);
onTouchesEnded(cocos2d::Touch* touch, cocos2d::Event* event);
●タッチ操作キャンセル時
onTouchCancelled(cocos2d::Touch* touch, cocos2d::Event* event);
onTouchesCancelled(cocos2d::Touch* touch, cocos2d::Event* event);
参考サイト http://cocos2d-x.org/docs/api-ref/cplusplus/v3x/
http://osconqsc2015.azurewebsites.net/qsccontent/Cocos/Cocos2dx.html
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿