ドット絵


小学2年生の長男が、私の作ったiOSアプリBeadsDesignを使ってくれて、弟のドット絵(ピクセルアート)を描いた。

使用したのは、
iPad2、方眼ノート、色鉛筆だけ。
iPad2で写真を撮ったら、BeadsDesignに取り込んで、色数を40色くらいに減色してから描いていた。
ながら作業で2時間くらいで完成していたようだ。

遠目に見るとかなり似ている。
pixelart1

近くで見るとこんなに適当な感じなのに。
pixelart2

本人も満足の出来らしくて、いずれ家族全員分描いてくれるそうなので楽しみだ。

google maps api for iOS と cocos2d の併用はNG?


地図情報を使ったアプリを作ろうとしていて、google maps api for iOSやらiOSのMapKitやらyahooのiOSマップSDKやらテストしてみて、結局google mapsに落ち着いてコーディングしていた矢先に再び問題に直面。

少しパーティクル的なものを使ってみたいと思い、ちょこっと勉強したcocos2dを使ってやろうと思いしばらくコーディングしていたのだが、cocos2dの枠組みでgoogle mapを表示させるとどうも挙動がおかしい。

次のようなエラーが出て、地図が正常に表示されないことがある。
初回はほぼ正常に表示されるがsceneを移動して戻ってくると地図の縦横比がおかしくなったり、まったく地図が表示されなかったりする。
使い方が間違っている可能性も多々あるが、google map単体だと出なかったエラーなので、cocos2dと併用するときに何か問題が起こっているんだと思う。


Failed to make complete framebuffer object 0x8CDD
OpenGL error 0x0501 in -[CCSprite draw] 530

cocos2d iphone – Somethings wrong with GoogleMap SDK iOS – Stack Overflow
ここにある記事には、

「Google mapsはmapを表示するのにopenGL ESを使っている。それぞれ独自のGL contextを使うので、2つのOpenGLレンダラーは一緒には使えない。特にiOSの場合、2つのGLビューを並べて使うのをほとんどサポートしていないように思える(お互いのビュー上に置くなんてとんでもない)
どう見ても、cocos2dとgoogle mapsをiOS上で一緒に使うことはできません。」

というようなことが書いてある(と思う・・・)。

やっぱりcocos2dとgoogle maps api for iOSの併用は諦めなければいけないみたい。
結構がんばってコーディングしてたんだけど、cocos2dを使わないとなるとかなり作り直さないといけないなぁ。

MKMapViewのzoomの上限下限を設定したいが上手くいかず諦めた話


MKMapViewのzoomには上限、下限の設定項目がありません。

そこで上限(や下限)を超えると、上限(下限)までアニメーションで戻してやる手法でみなさん上限、下限を付けているみたいです。

具体的には、 続きを読む

RetinaのスクリーンショットをRetinaディスプレイに表示


タイトルだけを見ても何を言っているのか分からないでしょうが。。。

[Xcode TIPS] UIViewのスクリーンショットを高画質でカメラロールに保存する方法 | ALOG | THE AGE
こちらのブログの記事にUIViewをそのまま画像として保存する方法が書かれています。
Retinaディスプレイの場合も高解像度で保存できます。
この記事では、スクリーンショットをライブラリに保存する方法が書かれています。

私はスクリーンショットをライブラリに保存するのではなく、UIImageになったスクリーンショットをUIImageViewに貼り付けそれを画面に貼付けたかったのです。
が、倍の解像度で記録された画像をそのまま画面に貼付けると画面からはみ出てしまい、画面には左上の1/4しか見えません。

そんなときは、以下のコードのようにscaleを変換してやればいいそうです。

img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];

こちらを参考にしました。
iphone – Retina display and [UIImage initWithData] – Stack Overflow

UIPickerViewのselectRowで最終行を選択できない


UIPickerViewを使っていて、viewDidLoadの中で

[picker selectRow:lastRow inComponent:0 animated:NO];

のように最終行を選択させた状態を表示しようとすると、なぜか最終行の1個手前が選択された状態が表示されてしまう、という状況になりました。
環境はXcode4.6.3 で iOS6.0 iPhoneシミュレータです。
最終行以外の場合は正常に動いています。

で、調べてみたところ同じ状況に悩まされている方がいました。 続きを読む

MKMapViewのzoomの挙動


Cocoaの日々: CoreLocation – [3] MKMapView の初期表示設定
MKMapViewのzoomについてこちらを参考にさせて頂いている中で、下の投稿を知ったのでメモのつもりで日本語訳しました。
(なんか英語が分からないところがあって訳がハチャメチャなので原文を読んだ方がマシかもしれませんが。。。)

iphone – MKMapView Zoom and Region – Stack Overflow
続きを読む

google mapをiPhoneアプリで使う


Google Maps SDK for iOSを使えるようにするまでの記録。

Maps SDK for iOSに使用制限はあるのか

まずgoogle mapは自由に使っていいのかライセンス的にはどうなっているのかが気になったので調べてみた。
気になったところだけピックアップする。
(間違っているかもしれないので、利用するときには必ず公式のドキュメントで確認してください)
続きを読む

cocos2d ローカル変数のアンダースコアの位置


cocos2d-xを使ってゲームのアプリを作ろうとしていたのですが、ネットで検索した情報やサンプルコードがcocos2d-iPhoneのものばかりで心が折れてしまい、cocos2d-iPhoneに乗り換えてしまいました。

さて、cocos2dのサンプルコードをそのままコンパイルすると大量のエラーが出ました。
調べてみると cocos2d V2.1からローカル変数の アンダースコア’_’の位置が前に変更になっているのですね。

Objects uses the ‘_’ prefix for ivars. It is no longer used as a suffix.

cocos2d v2.1 release notes · cocos2d/cocos2d-iphone Wiki · GitHub

手作業で全て変更すると無事コンパイル成功。

renaming ivars_ to _ivars | cocos2d for iPhone
この辺を読むと、「Appleが ‘_’prefixを許可しただけでなく推奨しているから、sufixからprefixに変更しよう」みたいな話し合いがされたのかな。
英語が理解できなくてどういう方向に話が進んだのかイマイチ分からないのですが、変更するという結論になったということか。

楽天の行動ターゲッティング広告を消す方法


最近いつも見ているサイトのサイドメニューにある google adsenseの広告欄に楽天の広告が表示されるようになりました。
楽天ブックスの広告のようで縦長の枠で3つの商品を紹介しているのですが、1つ目は確かに私が検索した本が表示されていたのですが、残り2つの商品はまったく身に覚えのないもので、エロ系の雑誌っぽいものとマッチョな男性がビキニパンツでポーズをとっているものの広告が出ていました。
エロ系の雑誌の方はもしかしたら何かのリンクを踏んじゃって履歴に残ってしまったのかとも思ったのですが、ビキニパンツ野郎の方はどんなやり方で私にマッチングさせたのか想像もつきません。。。

家族もいますしなるべくそんな広告は表示されないようにしたくないので、消す方法を調べました。
続きを読む

iphone 5.1 SimulatorのUIImagePickerControllerでエラー


iPhone 5.1 Simulator(not retina)でテストしていたアプリがiPhone 5.1 Simulator(retina 3.5 inch)ではエラーが出て止まってしまいました。

UIImagePickerControllerを呼び出す辺りで止まっていて、出たエラーはこのようなもの。

Named service 'com.apple.PersistentURLTranslator.Gatekeeper' not found. assetsd is down or misconfigured. Things will not work the way you expect them to

グーグルで調べたりしていたのですが、これって昔も遭遇したことがあるような。。。
iPad 5.1 simulator で UIImagePickerController が正常に動かない
これと同じ現象でした。

今回は、シミュレータを再起動してもダメで、一旦 iPhone 6.0 Simulatorを動かしてから、再び iPhone 5.1 Simulatorを動かすとエラーも出ず動いてくれました。