cocos2dの画面回転制御ネタ
前置き
以前リリースしたゲームで使っているcocos2dがずっとv0.9ぐらいで古かったので、
このたび、バージョンをあげることにした。
iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 ChickenGame
最新はv2とか出ているみたいだけど、まずはv1.0.1で。
※本当は管理にCocoaPodsとか使った方がいいんだけど、まいっか。
使用中のcocos2dのバージョン確認
使用中のcocos2dのversionは、
cocos2d.mを見ればわかります。
回転がくるった
でも起動すると全く回転してないような。
iPhone6シュミレータを使ってると上手くいかない。
悩むこと数分。
回転の制御ネタだろうなと思い、こんなことをした。
GameConfig.hのGAME_AUTOROTATIONの値を変更した。
kGameAutorotationUIViewControllerがデフォルトで入ってたので、
kGameAutorotationCCDirectorにしただけ。
- kGameAutorotationNone
回転しない
- kGameAutorotationCCDirector
回転はcocos2dに委ねる、UIKitは使わない
- kGameAutorotationUIViewController
回転はcocos2d、UIKitの両方を使う、但しパフォ落ちる
下記ソース
// // Supported Autorotations: // None, // UIViewController, // CCDirector // #define kGameAutorotationNone 0 #define kGameAutorotationCCDirector 1 #define kGameAutorotationUIViewController 2 // 3rd generation and newer devices: Rotate using UIViewController. Rotation should be supported on iPad apps. // TIP: // To improve the performance, you should set this value to "kGameAutorotationNone" or "kGameAutorotationCCDirector" #if defined(__ARM_NEON__) || TARGET_IPHONE_SIMULATOR #define GAME_AUTOROTATION kGameAutorotationCCDirector
結果、こんな感じに。
小さな島国にずっといると、こーなる事例
普段、日本語しか使わない。
あとはせいぜい、英語を少しかじるていど。
こんな生活、環境にいるとLocale.ROOTを忘れる時がありますよね。
なに言ってんだ。valuesだのvalues-frだのvalues-jaだのvalues-koだの。
values-arだの(笑
今日、アラビックでアプリを操作してたら、
( ´∀`)<ぬるぽ
が発令されました。
原因は、
//これでも、たぶん大概の言語圏は通ってるんじゃ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); //こうしておけばいいんじゃないかと SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ROOT);
ここ見落としていて、長考してもーた。
Androidの端末設定が標準で色んな言語に変更できるようになって、
初めて検証したって人も多いのかもなーと思ったり。
EditTextのhintに画像を使いやがれ
AndroidのEditTextでhintってのがあると思うんだけど、
こいつで画像を使うネタを今日は仕込みたいと思います。
hintで画像(画像はandroid.R.drawable.start_big_on)
入力されると、hintが消えるので当然、画像も消える
ポイントは2つ。
- EditTextでandroid:bufferTypeをeditableにしやがれ
<EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="match_parent" android:bufferType="editable"/>
これでSpannableStringBuilderが使えるです
- SpannableStringBuilderでImageSpanをsetSpanしやがれ
EditText editText = (EditText) findViewById(R.id.edit_text); SpannableStringBuilder ssb = (SpannableStringBuilder) editText.getText(); ssb.append("カメラほしー"); ImageSpan imageSpan = new ImageSpan(this, android.R.drawable.star_big_on); ssb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); editText.setHint(ssb); editText.setText("");
ここで良く分かってないのが、3行目でappendした内容を
全文表示したいんだけど、うまくいかない。空文字つっこむとか無しで。
今のままだと、メラか米良がほしーみたいな話しに。
(ここがうまく行かないからblogネタにしたんだけど)
もう一点、最後の行でsetText("")しないと、hintの前にtextが入っちゃって・・・。
そのうち、きっとどうにかなる。
Androidアプリを駆け込みリリースしたった
6月からOceans-inc ( http://oceans-inc.com/ ) って会社で働いている。
SNSサービスをやってるスタートアップで、Eyeland ( http://eyeland.in/ )というサービスをやってる。
このサービスで使ってる、iOSとAndroidアプリのうち、僕はAndroidの方を担当してる。
ちなみにこのアプリ、以前は出会い系アプリとして2chでスレたってたけど、
最近だと、竹島上陸アプリとして紹介されてた。
それはどうでもいい。
今月から、色々あってAndroidの開発から何やらを1人でやってて、
ついこの間、自分の誕生日に2.1.1をリリースした。
ここでのリリース作業自体が初めてだったので、少し緊張したけど問題なさげ。
というわけで、調子にのってマーケットに出してなかった
自作のAndroidアプリを自分名義で登録したった。
このアプリはスライドショーアプリなんだけど、
以前作成した、幼稚園児レベルなiOSゲームとは違い、大人しすぎて面白みが無い。
機能は色々実装してあるんだけど、面白くないからほとんど外してコア部分だけ公開した。
公開したい気分に負けた。
※この記事を書いている時は、まだマーケットにでてこない
負けたついでにGitHubの月7ドルってやつを契約してしまた。
負荷テストをやりながら自分も負荷った1ヶ月
半月くらいはまるまるやってたとおもう・・・。
最初はabでやってたんだけど、複数URLに対応してないってことで、
curlを使ったスクリプトやらシェルを書いた。
しかし、abや他のツールのように同時接続数を確保するような仕組みを作れず。
実現したいのは、
- 今回はGETとPOSTを中心にテストしたい
- 複数URLに対応したい
- リクエストヘッダも固定ではなく、一部ランダムに変更したい
curl-loaderもいいかなーと思ったけど、
サイトみたらconfigに全部書くぽかったので、パス。
投げたいリクエストのみを丸ごと外だしとかの方がいいな。
と探しててみつけたのが、httperf。
前の会社でインフラな人たちが、hpのパフパフとか言ってたことを思い出しつつチェック。
テイストが近くて、もっと単純なhttp_loadってのを発見。
よし、ここから確認していこう。
以下、参考URL
ab
http://httpd.apache.org/docs/2.2/programs/ab.html
curl-loader
http://curl-loader.sourceforge.net/
httperf
http://www.hpl.hp.com/research/linux/httperf/
http_load
http://www.acme.com/software/http_load/
初めてのMongDBで怒られた
すんごい初歩的な話しなんだけど。
- サーバーがあがってねーよ(苦笑)
Wed Jul 4 18:55:13 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
mongodしろって事ですね。
- どこのサーバーだよ(藁)
Wed Jul 4 18:56:50 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
/data/db/ってディレクトリを用意するか、
使用するディレクトリを自分で指定しろってことですね.
例えば、
mongod --dbpath /Users/blackhseep/hoge
とか。
ふー。
Android意味プ Gallery絡み
今回つまったこと
- Gallery内の画像が重なっちゃう
- Gallery内の画像開始位置が顔面センター
まじくそが。
Androidも、俺も糞すぎる。この糞豚野郎。
今回、勢いあまって逆引き本を買ってしまいました。
改訂2版 Android SDK逆引きハンドブック
無くても大丈夫だけど、あったらあったでど忘れしたキーワードとか拾いやすい。
解決編
- Gallery内の画像が重なっちゃう
ポイントはandroid:spacingなわけで、初期値が意味プだから0を入れてやるらしい。なにそれ。
<Gallery android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/hoot_like_user_gallery" android:spacing="0px" android:layout_gravity="left" />
- Gallery内の画像開始位置が顔面センター
たいした話しではなく、適当にマージンとっちまおうぜってこと。
ViewGroup.MarginLayoutParams mp = (ViewGroup.MarginLayoutParams)galleryView.getLayoutParams(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); mp.setMargins(-(metrics.widthPixels / 2), mp.topMargin, mp.rightMargin, mp.bottomMargin);
ほんとまじ、戸田恵梨香に責められまくりたい。