cocos2d-xのLabelで改行時にレイアウトが崩れる?
cocos2d-x ver3系から、LabelはFreeTypeによるレンダリングとOSによるレンダリングが選べるようになりました。
FreeTypeでレンダリングさせると、OS間の差異はなくなるんですが、現状だと絵文字が出ません。なので、ユーザーの入力があるシーンでは、OSに描画させた方がいいかもしれませんね。
で、OSによるレンダリング@iOSなのですが… setDimensions によって幅を固定にして、「ここから空白→ ←ここまで空白」こんな感じの文字を表示してみます。
幅固定してるので、ほんとは↓こうなってほしいのですが…?
↓こうなったりします。
これ、どうも NSString
の stringWithUTF8String
が、半角スペースをNO-BREAK SPACE(U+00A0
)に置換しやがるのが原因のようです。
似た症状で困ってる方、CCDevice-ios.mm
を見てみると道がひらけるかもしれません。
(近々修正のプルリクエストをcocos2d-x本家に出す、かも…)
DRAGON SKY iOS版&Android版アップデートされております。未プレイの方も、ぜひこの機会にどうぞ!
Android版はこちら DRAGON SKY (ドラゴンスカイ) - Google Play の Android アプリ
cocos2d-x 3.5リリース! ドラゴンシャウトもバージョン1.4リリース!
cocos2d-xの3.5がリリースされたようです。
4.0のalpha1もリリースされており、着々と開発が進んでいることが伺えます。いいですね〜
https://github.com/cocos2d/cocos2d-x/releases
ドラゴンシャウト バージョン1.4がリリースされました!
戦闘開始時にリーダースキルのカットインが入ったり、遂に11連ガチャが導入されたりと、今回も盛りだくさんになっております。
同時に「樹林の遺跡竜」イベントがスタートしております。本バージョンから、敵の攻撃に特殊なフィーチャーが入ってまして…ぜひプレイしてみてください。
cocos2d-x 3.5rc0 & 4.0alpha0 でてます
cocos2d-x 3.5rc0 と 4.0alpha0 がリリースされています。
https://github.com/cocos2d/cocos2d-x/releases
3.5では(前々回記事で書いた)HttpClientのメモリリークなどのバグも修正されています。
ロードマップは↓このへんで管理されているようです。
https://trello.com/b/Np6obnuE/cocos2d-x-road-map
3D系のフィーチャーが多くて、力入ってる感じですね!
デベロッパーカンファレンス http://devcon.cocos.com/ も開催とのことで、新バージョンや今後の展望なんかも徐々に明らかになってくるんじゃないでしょうか。
ドラゴンシャウト ver1.3でました!
本バージョンから戦闘中にメッセージ出るようになったり、敵の行動クールダウンが変化したりとよりバトルに深みが出ておりますのでぜひぜひプレイしてみてください。
cocos2d-x 3.3&3.4 地味なオススメポイント
cocos2d-x 3系のアップデートがどんどん出ております。
ver3.3 : http://www.cocos2d-x.org/news/387
ver3.4 : http://www.cocos2d-x.org/news/416
3D対応が目を引きますが、以下の地味な更新もオススメポイント。
- Application::openURL でURLが開けるようになった
- iOS&Androidで、WebViewを置けるようになった
- iOS&Androidで、curlではなくOSの通信ライブラリが使われるようになった
WebView自体の背景色を指定できなくない?とか、iOSでの通信クラスであるHttpAsynConnectionがARC前提っぽいけどARC有効になってなくない?とか、ちょっとした疑問はあるものの便利です。
(そのうち本家に修正のプルリクエストをだすかも…)
CCLabelTTFのenableStrokeをiOS7に対応させる
ポッピンゲームズジャパンの小林です。
最近秋葉原オフィスができました!
cocos2d-x.jpのイベントや忘年会にて、「ブログ見ました」と声をかけて頂く事がありまして、ありがたいことです。久しぶりの更新です。
今日は CCLabelTTF の enableStroke によるストローク(縁取り)をiOS7対応にしてみよう、という内容です。
cocos2d-x 2.1.4から、CCLabelTTFにenableShadowによるシャドウと、enableStrokeによるストローク(縁取り)の機能が入りました。
しかしこいつ、iOS7では動きません。2.1.5、2.2とバージョン上がっても動きません。残念。
git上の最新コードも、iOS7に対応させようね、と書いてある状態から変わってません。
そこでiOS7に対応させてみました。要は、NSString の drawInRect:withAttributes:を使えば良いのです。
対象は cocos2dx/platform/ios/CCImage.mm 内の_initWithString関数です。
NSString の drawInRect:withFont:lineBreakMode:alignment: が使われているんですが、ここをiOS7の場合のみ以下のような感じに変えてあげます。
NSMutableParagraphStyle *paragraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; paragraphStyle.alignment = ((2 == uHoriFlag) ? NSTextAlignmentRight : (3 == uHoriFlag) ? NSTextAlignmentCenter : NSTextAlignmentLeft); UIColor *strokeColor = [UIColor colorWithRed:pInfo->strokeColorR green:pInfo->strokeColorG blue:pInfo->strokeColorB alpha:1.0]; UIColor *fontColor = [UIColor colorWithRed:pInfo->tintColorR green:pInfo->tintColorG blue:pInfo->tintColorB alpha:1.0]; NSDictionary *attribute = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle, NSForegroundColorAttributeName:fontColor, NSStrokeColorAttributeName:strokeColor, NSStrokeWidthAttributeName:@(-pInfo->strokeSize*2) }; [str drawInRect:CGRectMake(textOriginX, textOrigingY, textWidth, textHeight) withAttributes:attribute];
ストローク幅をマイナスにするのがミソですね〜!正の数だと中身が透けます。
ついでにgitの最新版コードを持ってくるとシャドウ関係もいい感じになります。
あとでまとめてパッチにしておこうかな…小林でした。
★この記事にご興味頂けた方、Facebookの「いいね」Twitterでの拡散、
Bookmarkボタンを押して頂けると光栄です。
★ポッピンでは人材募集中です
ソーシャルゲーム/ネイティブアプリ開発エンジニア歓迎!詳しくはこちら!
cocos2d-x ver 2.1.4 が神アップデートすぎる件について
ポッピンゲームズジャパンの小林です
ひっそりリリースされてた cocos2d-x ver 2.1.4がスゴイ!のでご紹介です。
まずは JavaScript Bindings 関連。リリースノートのハイライトにも入ってますが、
- JavaScript Bindings で XMLHttpRequest と WebSocket 対応
- JavaScript byte code 対応