Cocos2d-x3.0betaきたのでさっそく対応しました
3.0betaキタ━━━━(゚∀゚)━━━━!!
はい、テンション高くてすみません。
毎回バージョンアップするごとにテンションもあがってます。
もうすぐ正式版きますね!!わくてか。
さて、今回の3.0alpha1から3.0betaへの対応は結構あっさりいけたのであまり書くことないですが一応。
Cocos2d-x 3.0betaをpullする
最新のソース取得。(githubのソースcloneしてtagをcheckoutしてつかってましたので)
kyokomi@kyokomi-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0alpha1) *+) $ git pull remote: Counting objects: 20073, done. remote: Compressing objects: 100% (8576/8576), done. remote: Total 20073 (delta 12885), reused 17644 (delta 11110) Receiving objects: 100% (20073/20073), 9.95 MiB | 518 KiB/s, done. Resolving deltas: 100% (12885/12885), done. From https://github.com/cocos2d/cocos2d-x * [new branch] 3d-extension -> origin/3d-extension f533c9c..559d85d develop -> origin/develop 525a0a2..961eff4 master -> origin/master From https://github.com/cocos2d/cocos2d-x * [new tag] cocos2d-x-2.2.2 -> cocos2d-x-2.2.2 * [new tag] cocos2d-x-3.0beta -> cocos2d-x-3.0beta You are not currently on a branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch>
わーい。3.0betaきたー
checkoutする前にAndroid用でgradleつかってbuildするためにちょいちょいbuild.gradleとかplatform下に勝手置いてたので退避してからcheckoutしました。
kyokomi@kyokomi-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0alpha1) *+) $ git stash kyokomi@kyokomi-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0alpha1)) $ git checkout cocos2d-x-3.0beta Previous HEAD position was ddac309... Merge pull request #4348 from boyu0/iss2771_physical HEAD is now at deae348... Merge pull request #4988 from dumganhar/develop kyokomi@kyokomi-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0beta)) $
私がいじったファイルは特に競合しなさそうなので、git stash applyします。
kyokomi@kyokomi-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0beta)) $ git stash apply Auto-merging build/cocos2d_libs.xcodeproj/project.pbxproj Auto-merging build/android-build.py # Not currently on any branch. # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: build/android-build.py # modified: build/cocos2d_libs.xcodeproj/project.pbxproj # modified: cocos/2d/platform/android/java/.classpath # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # cocos/2d/platform/android/java/build.gradle # cocos/2d/platform/android/java/build/ no changes added to commit (use "git add" and/or "git commit -a")
Xcodeでcleanしてbuildしたらエラーと警告がガンガンでてきました。 (いつもどおり)
ビルド結果のエラーと警告の対応
cocos2d::Vectorの対応その1
CCArray乙!!
getChildrenでVectorが返ってくるのでCCARRAY_FOREACHマクロさんの役目が終わりました。
before
CCARRAY_FOREACH(pBatchNode->getChildren(), object)
after
for (auto pObject : pBatchNode->getChildren())
普通にforeachできるようになった!いいね!
String(元 CCString)の非推奨対応
これは正直焦った。
最初は「どういうことだってばよ。。。」状態でした。
冷静に考えるとできるだけstd::string使うようにしてたので、正直createWithFormatのやつが便利だったくらい。
それ以外でcocos2d::Stringには用が無かったことに気がついた。
そしてStringUtilsってのがあるのでそっち使うのが良いみたい。
before
String* pSpriteFileName = String::createWithFormat("item_%d.png", m_dropItemDto.imageResId); if (!Sprite::initWithFile(pSpriteFileName->getCString()))
after
auto spriteFileName = StringUtils::format("item_%d.png", m_dropItemDto.imageResId); if (!Sprite::initWithFile(spriteFileName))
かなりスッキリソース。getCString()書かなくていいのは地味に嬉しい。
Sequenceがcocos2d::Arrayを拒否る対応(Vector対応その2)
SequenceさんがArrayじゃcreateしねーよ?とエラーを吐いてました。
つまりVectorですね。
before
auto moveArray = Array::create(); for (MapIndex mapIndex : list) { auto pMoveTo = MoveTo::create(1.0 / movePointSize, indexToPoint(mapIndex)); moveArray->addObject(pMoveTo); } auto pMoveSeq = Sequence::create(moveArray);
after
auto moveArray = Vector<FiniteTimeAction*>(); for (MapIndex mapIndex : list) { auto pMoveTo = MoveTo::create(1.0 / movePointSize, indexToPoint(mapIndex)); moveArray.pushBack(pMoveTo); } auto pMoveSeq = Sequence::create(moveArray);
型指定大好きです!!
あと今まであまり触れてなかったDictionary(元 CCDictionary)も非推奨でcocos2d::Mapを使うようになったみたいですね。
Cocos独特な感じがドンドン改善されて、標準化されていく感じがいいですね!!
(型指定とかバリバリで言語的にはカチッとした感じのJavaが結構スキーなので)