Hatena::ブログ(Diary)

urekatのスカンク日記3 このページをアンテナに追加 RSSフィード

2015-06-27

ts : はいさい

案内人(自動応答) : あぁ、どうもどうも、こんにちは。わしロボットなんで、なんでも気軽に聞いてや。
ほな今からちょっと使い方説明してもええかな?

ts : はいさい

案内人(自動応答) : なんか入力してくれたら次の説明に行くからな。
ま、とりあえず自分で使ってみるっちゅーんやったら、また後で来てや。どのみち一回しか説明せーへんからな。

ts : はいさい

案内人(自動応答) : ほなまずミーティングルーム」についてや。
ミーティングルームっちゅーのは、好きなメンバー同士で作れる部屋のことやねん。

ts : 今この画面のどこにもミーティングルームがみえないのがいけていないとおもう

案内人(自動応答) : このミーティングルームの内容は参加してるメンバー以外に公開されることはあらへんで。
そやから、安心してなんでも書いてええけど、まぁ、節度もって使ってや。

ts : ふぁーーー

案内人(自動応答) : あぁ、それな。送信ボタンいちいち押すの面倒になってきたやろ。そしたらCtrlキー押しながらM押すんや。それでもコメント送信できるからな。
まぁ、わしは Tab + Enter でいつも送ってるけどな。

ts : ふぉおおお

案内人(自動応答) : ほんで、次説明するまえに、ちょっと「個人設定」おして「プロフィールの設定」してみてくれるか。
プロフィール画像ないとな、なんやロボットに話しかけてるみたいで寂しいからな。画像ちゃんと設定してくれたか?

ts : OK

案内人(自動応答) : よし、ほな次は「参加メンバー」や。
左に「参加メンバー」ちゅーのがあるやろ。

ts : してないし

案内人(自動応答) : これがこのミーティングルームを見ることができるメンバーやねん。
参加メンバーは誰でもメンバーを追加することができるんや。

ts : aru

案内人(自動応答) : そやから、途中でメンバー増やすこともできるねん。新しく参加したメンバーには過去のやりとりも共有されるからな。
ほんで、「参加メンバー」の一番上に表示されてる人おるやろ。

ts : しんせつなせつめい

案内人(自動応答) : この人は特別な人で「オーナー」って呼ぶねん。
「オーナー」は、このミーティングルームを作った人で、ちょっとだけ特別な権利があるねん。

ts : ふあんだよねみえるとかみねいとか

案内人(自動応答) : 具体的にいうとな、オーナーは参加メンバーを自由に削除したり、ミーティングルームを終了したり削除したりできるねん。
ん?終了と削除の違いか?

ts : ああ

案内人(自動応答) : 終了っちゅうんは、もう書き込みでけへんようにするっちゅーこっちゃ。だから終了したら誰も書き込みできへんようになんねん。でもログは全部残ってるからあとで検索とかはできるで。
ほんで「削除」っちゅーんは、もう全部きれいさっぱり消すっちゅーことや。

ts : slack

案内人(自動応答) : ミーティングルームを「削除」したらもう復活はでけへんからな。注意してや。
あぁ、ここで大事なこと言い忘れてたわ。

ts : はやく

案内人(自動応答) : 右上に「メンバーリスト」ちゅうーのあるやろ。
これはどこかのミーティングルームでつながってる人のリストっちゅー意味やねん。

ts : おお

案内人(自動応答) : そやから、だれかのミーティングルームに招待されたとするやろ。
ほんでそこの参加メンバーとはどうなると思う?

ts : ともだちだな

案内人(自動応答) : そうそう。そのミーティングルームで「つながってる」から自分のメンバーリストに表示されるようになんねん。
そやからつながってない人でも誰かにミーティングルームでつないでもらったら、いつでもその人に話しかけれるようになんねん。

ts : なにそれこわい

案内人(自動応答) : 逆に、その人と唯一つながってるミーティングルームを削除したらメンバーリストから消えてしまうからな。まぁ、よう考えてつかってや。
そやからわしとの縁切りたかったら、このミーティングルーム削除したらええねん。削除でけへんミーティングルームの場合は、自分がミーティングルームから抜けることもできるからな。

ts : なんていうかひとむかしまえのSNS的な発想

案内人(自動応答) : ほんで、次は上のメニュー説明していこか。
まず「編集」ゆうのあるやろ

ts : ある

案内人(自動応答) : これはタイトルとかメモを編集するときに使うねん。
メモは誰でも編集できるし、編集したら全員の画面にすぐに反映されるから便利やで。URLも勝手にリンクになるしな。

ts : それは画期的機能

案内人(自動応答) : ほんで「招待する」ゆうのは、誰か知り合いをこのミーティングルームに招待するときに使うねん。メールアドレス入れるだけでええからな。
「話題を分ける」ゆうのは、同じメンバーであたらしいミーティングルームを立ちあげるときに使うねん。

ts : fork

案内人(自動応答) : 話題が分かれてきたりしたらコレ使ってたくさんミーティングルーム作るようにしてな。そのほうが話しが見えやすくなるからな。
ブログに貼る」ゆうのは、このコメントを対談形式でブログに貼るときに使うねん。

ts : ほおお

案内人(自動応答) : ブログだけやのうて、Webサイトやったら大抵貼れるからな。対談形式やったら読者も読みやすいし、便利やから一回つこてみてや。
この対談をブログにはってみてもええけどな。

ts : Web2.0

案内人(自動応答) : あとブログに貼るときに最後に「これはフレッシュミーティングで作成されました」みたいなのある思うねんけど、できればこれ消さんといてな。こっちの宣伝になるからな。まぁ、さもしいようやけど(あ、さもしいゆーたらあかんのやった)
ほんで「ログ」ちゅーのは議事録形式で表示させるっちゅーことや。終了したミーティングルームは、この「ログ」しか見られへんからな。

ts : ほおおお

案内人(自動応答) : 「外部連携」っちゅーのは、twitter とか他のシステムに連携させる機能や。発言を全部 twitter に流したりできるねん。
「外部連携」はオーナーだけが設定できるんや。

ts : ツイッターに全部!?

案内人(自動応答) : 「終了」と「削除」はもう説明したからええな。これもオーナーだけができる機能やからな。
ほな、次、「ファイル」にいこか。

ts : その機能は今でも使えるの?

案内人(自動応答) : フレッシュミーティングではファイルの管理がすごい便利になってんねん。
ちょっとファイル添付してみてくれるか。

ts : おう

案内人(自動応答) :
そっちもちゃんと添付できたか?

ts : おおう

案内人(自動応答) : ファイルはみんなで共有できるからな。ほんで画像とか添付するとサムネイルも表示されるから便利やで。
で、左側の「ファイル」の右肩に「ファイル一覧」っちゅうリンクあるやろ。ちょっとそれクリックしてみてくれるか?

ts : できたことにして

案内人(自動応答) : クリックしてみたか?これ「スマートフォルダ」ゆうて、ものすごい検索しやすく作ってあるからな。
なんかファイルがあったらどんどん添付してみてや。あとで「スマートフォルダ」から簡単に探せるからな。

ts : ほほおお

案内人(自動応答) : これで大体ミーティングの仕組みはわかったかいな。
ほな、次、更新通知にいこか。これ、めっちゃ大事やからな。よー聞いといてや。

ts : ながいなあああああ

案内人(自動応答) : 更新通知ちゅーのは、ミーティングルームが更新されたら通知される仕組みのことや。
フレッシュミーティングでは、メールやらメッセンジャーやらいろんな通知方法が用意されてんねん。

ts : おおう
iPhoneアプリ

案内人(自動応答) : 更新通知は右上の「個人設定」から「更新通知の設定」っちゅーの押してや。
はじめはメールアドレスが入ってるやろ。ミーティングルームが更新されたらメールで通知がくるようになってんねん。

ts : おおう

案内人(自動応答) : これ、モバイルのメールとかでもええからな。ログインメールアドレスとは違うから適当に変更してもらってもええで。
ほんでメッセンジャーの更新通知っていうのあるやろ。

ts : モバイルwww

案内人(自動応答) : MSNメッセンジャーWindows Live メッセンジャー)つかってるんやったらコレ設定といたらごっつ便利やで。
まず、メッセンジャー開いて「freshmeeting@live.com」ちゅーユーザーをメンバーに追加しとくねん。

ts : アイホンにおねがいできますか?

案内人(自動応答) : あとは「更新通知をWindows Liveメッセンジャーで受信する」にチェックいれて、アカウントメールアドレス入れて「設定する」を押してや。
運がよかったら「設定しました」っていう通知がくるはずやけどな。ま、こんでもええわ。ちょっと不安定なときもあるからな。

ts : うん

案内人(自動応答) : これでもうブラウザ閉じてもいつでも更新通知くるようになったからな。
あとは「タスクバー/RSSの通知設定」ちゅうのもあるねん。

ts : ほう

案内人(自動応答) : タスクバーはWindowsのスタートメニューがあるバーのところやねんけど、ここをチカチカさせて通知させることもできるねん。なんもインストールする必要はあらへんから、よかったらこれも使うてみてや。
RSSはまぁ、知ってる人だけでええわ。わかる人は使ってみてや。

ts : 雑

案内人(自動応答) : あと、サイボウズ Office への通知っちゅーマニアックなメニューもあるけどな。会社で使うんやったらこれ便利やで。
ほな次、検索いってみよか。

ts : 子会社だっけか

案内人(自動応答) : フレッシュミーティングではな、コメントがリアルタイムに検索できるねん。
ちょっと「リアルタイム」とかで検索してみ?

ts : した

案内人(自動応答) : ちゃんと検索できたやろ。ミーティングルームの名前とかファイル名でも検索できるからな。なかなか便利やで。
あと、何残ってるかな・・・あ、次モバイルやな。

ts : リアルタイムってどこまでなのかなあ

案内人(自動応答) : フレッシュミーティングはモバイルにも対応してるからな。「個人設定」の「モバイルの設定」をクリックしてみてくれるか。
モバイルURLあったやろ。

ts : ガラケイ?

案内人(自動応答) : これ、ケータイにいれといたらいつでもフレッシュミーティングの更新状況見れるからな。端末認証にも対応してるからログインは最初の一回だけやで。
大体こんなところでイメージわかったかいな。

ts : 端末認証!!

案内人(自動応答) : あと、ちょっとルールちゅーかお約束ごとだけ書いとこか。
ミーティングルームから出るときやけど、どっかクリックして勝手にでてもらったらええしな。別に参加者に「ミーティングルームからでまーす」なんて断らんでええで。お互い気楽にやろや。

ts : おお

案内人(自動応答) : それから、名前クリックしたときに表示されるプロフィールあるやろ。そこの「コメントを書く」のリンクをクリックしたら簡単に2人ミーティング開始できるからな。
もうすでに2人ミーティング開始してる場合は、そのミーティングルームに直行できるし便利やで。覚えといてや。

ts : おす

案内人(自動応答) : あとは「招待」な。これ、誰でも自由に他の人招待してええからな。
とりあえずメールアドレスしかわからん人とファイル共有とかしたいときなんか、自由に招待してみてや。

ts : まだつづくの

案内人(自動応答) : ちゅーことで、大体説明おわったんやけど質問とかあるかな?
あ、質問な、ここでされてもわしは答えられへんから、なんかあったら下の「お問い合わせ」から投げてみてな。

ts : いやいや
いままでの
きいてなかったのかよ

案内人(自動応答) : ほな長いことありがとうな。あとは他の人と使ってみてな。これ。ほんまたのむで。
じゃ、わしはここらでおさらばじゃ。

ts : えー

案内人(自動応答) : さようなら。
さようなら。

ts : そういう挨拶いらないっておまえがいったんじゃないか

案内人(自動応答) : さようなら。
いや、ありがとうありがとう。

ts : 普通にウインドウ閉じればいいんだよ。

案内人(自動応答) : さようなら。
さようなら。

ts : ウインド閉じれ

案内人(自動応答) : ・・・ひょっとして暇?
いや、ほんまに終わりやから。

ts : 期待

案内人(自動応答) : ほな、な。
ほんまやで、これ。

ts : からーの

案内人(自動応答) : ほな、な。
ほんまやで、これ。

ts : とみせかけてー

案内人(自動応答) : ほな、な。
ほんまやで、これ。

ts : がんばれ

案内人(自動応答) : ほな、な。
ほんまやで、これ。

(この対談は フレッシュミーティング で作成しました)

2014-02-15

cocos2d-xのrubyバインディング

cocos2d-xのrubyバインディングを作っている先人

http://ktaobo.blogspot.jp/2013/09/cocos2dx-mruby.html

を見つけたのでforkしてmruby最新版に対応させてみました。

C++のクラスとmrubyのクラスの対応をpkgファイルに書けば変換コードがばっちり自動生成されるものですごく良く出来ています。

https://github.com/takeru/cocos2dx-mruby

f:id:urekat:20140215194115p:image

cocos2d-xの本↓

cocos2d-xによるiPhone/Androidアプリプログラミングガイド


のサンプル

http://book.mynavi.jp/support/pc/4697/

を題材に

https://github.com/takeru/NyanGameRuby

足りないAPIをちまちま追加しながらやっていますが、C++のヘッダファイルあたりから、pkgを自動生成→コード自動生成としたいものです。

https://github.com/takeru/cocos2dx-mruby/commit/5451f2c3b1fb2aaeab814229a8c15bfa0e891bd8#diff-3e12c8363e766954e8744637a33fd13eR80

こんな定義を書いてrakeとすればC++〜mrubyバインディングが自動生成されます。



呼べるようになりました、でも元のAPIを全然知らないのでしんどい問題は解決しないので、rubyっぽいラッパーライブラリをでっちあげたいです。

mrubyで鳥が土管にぶつかるゲームが量産されるようになるはず。


わたしはPDFで買いました。

http://d.hatena.ne.jp/tatsu-zine/20130701

http://tatsu-zine.com/books/cocos2d-x

2013-03-09

[rails][heroku] Ruby2+Rails4+HerokuでWebDB Press vol.73のチュートリアルをやる

やった。

https://github.com/takeru/rails4tuto/commits/master


jquery-turbolinksがうまく効きません。

2013-02-17

ヤクの毛刈り

emacsを新しい24.2.1に。

emacs starter kitベースで設定を移植する。

Shift+矢印で移動する奴とか設定されている。便利。

init.elがスッキリした。

256色環境。

TERM=xterm-256color emacs

TERM=screen-256color emacs

とかで256を教えてあげる。

emacs -f list-colors-display

dotfilesをつくって各環境で共有するのをやる。

linuxmac

screenをソースからビルド

絵文字が出ない

screenなしだと絵文字が出ている

http://gyazo.com/a1c77c97e3953134827be0bbbba9699b

screenだめだ

もしかしてtmux

絵文字でるー

TODO iTerm2の全角文字扱いにしてね機能に絵文字を追加する

screen風の設定を.tmux.confに移植

Macの環境設定でCtrl-allowを無効


tmux上でemacsのshift-allowで移動が効かない

Shift-UPはもとから(tmuxなしでも)効かないっぽい。select is undefinedってでる。

set-window-option -g xterm-keys on

でOK.

罫線が全角でアレだ、ずれる

http://d.hatena.ne.jp/silenvx/20121016/1350335269

ここのASCII文字にしちゃうパッチをあててmakeしなおして実行してもなんか反映されない。

homebrew

brew install tmux

でいれてるが、

/usr/local/Library/Formula/tmux.rb を書き換えて、

diff --git a/Library/Formula/tmux.rb b/Library/Formula/tmux.rb
index 45a0c09..beff4be 100644
--- a/Library/Formula/tmux.rb
+++ b/Library/Formula/tmux.rb
@@ -39,5 +39,9 @@ class Tmux < Formula
   def test
     system "#{bin}/tmux", "-V"
   end
+
+  def patches
+    "https://gist.github.com/silenvx/3895468/raw/2ae2beb1a4219899fb430c172d9c51cbe8ca401f/borders.patch"
+  end
 end

tmuxは1.7

brew uninstall tmux

brew install tmux

http://gyazo.com/13fa8f1d5f10728508e16a0a7473203d

brew install --interactive --git tmux

ってのもあるみたい。



clock-modeのbitmapかえても反映されない。exit(1)とかいれても落ちない。

おかしい、3時間ぐらいがんばる、だめ、御飯作って食べて寝る。

4時に起きる。

http://d.hatena.ne.jp/silenvx/20121015/1350233551

http://d.hatena.ne.jp/tkuro/20100817/1282036589

ruby -e 's=(0x60..0x7F).map(&:chr).join; e="\e(0"; r="\e(B"; puts s; puts e+s+r;'

罫線は文字として送っているのではなくてエスケープ+普通のアスキー文字で送っていてターミナルが罫線的文字に置き換えて表示しているということか。

ならiTerm2が罫線文字、日本語環境だと全角扱いにされがちなやつにしてるからずれるってことかしら。

http://code.google.com/p/iterm2/wiki/TmuxIntegration

http://jtimberman.housepub.org/blog/2012/01/28/iterm2-with-tmux/

せっかくおぼえたキーバインドが使えないので早々にコレジャナイ。

tmux反映されない病わかった。

iterm2のドキュメントにserverをちゃんと落とせって書いてあったので気がついた。

tmux lsで出てくるやつを全部exitしてないからだ。

罫線の文字を置き換えてmakeしてtmuxを完全に落として起動すると罫線が変わった。

ということはエスケープシーケンス云々は嘘でUTF8っぽい環境ならこの文字をおくってるのだな。

http://gyazo.com/83adb203820f092a3bb63a4c70a1180a

emacsのshift-allowがまた効かない。

TERM=screen-256color emacs

だと効かないが、

TERM=xterm-256color emacs

だときく。

.tmux.confの設定で

set-option -g default-terminal screen-256color

としているのが原因。

alias="TERM=xterm-256color emacs"

にしよう。



残るはShift-UPでemacs移動しない病

iTermで絵文字の幅おかしい病

2012-12-12

[][][]RubyMotionでCocos2dアプリをつくりはじめるまで

RubyMotion Advent Calendar 2012

http://www.adventar.org/calendars/18

12日目の記事です。

昨日(11日目)の記事は、Toshikazu Horiiさんの「RubyMine で Storyboard を使う」

http://toshikazuhorii.github.com/blog/2012/12/11/storyboard-for-rubymotion/

でした。


Cocos2d

iPhoneでゲームといえば「Cocos2d」ですね。

Cocos2dをRubyMotionで動かすまでをやってみました。

あらかじめごめんなさい、私はCocos2dに特別詳しいわけでもないし、

RubyMotionにもぜんせん詳しくないです。間違っていたり、よりよい方法があれば、

やさしく教えて下さい。

そういうわけですので、試行錯誤の記録です。

完成版コードはここにあります。

https://github.com/takeru/RubyMotionAdventCalendar2012_Cocos2d


まずはプロジェクトを作って、実行してみます。

motion create demo02
rake

黒いアプリ。OK。

次にbundlerの設定。

# Rakefile
require 'rubygems'
require 'bundler'
Bundler.require :default
# Gemfile
source :rubygems
gem 'motion-cocoapods'

ここで再度rakeすると、

cannot load such file -- bundler

とか、

Could not find gem 'motion-cocoapods (>= 0) ruby' in the gems available on this machine.

といわれるので、

gem install bundler
gem install motion-cocoapods

をいれました。

再度rake、黒いアプリOK.

cocos2d本体をプロジェクトに取り込む設定をします。

# Rakefile
  app.pods do
    pod 'cocos2d', :podspec=>'cocos2d.podspec'
  end
# cocos2d.podspec
# https://github.com/takeru/RubyMotionAdventCalendar2012_Cocos2d/blob/master/demo01/cocos2d.podspec
Pod::Spec.new do |s|
  s.name        =  'cocos2d'
  s.license     =  'MIT'
  s.version     =  '2.1.beta3'
  s.summary     =  'cocos2d for iPhone is a framework for building 2D games, demos, and other graphical/interactive applications.'
  s.description =  'cocos2d for iPhone is a framework for building 2D games, demos, and other graphical/interactive applications for iPod Touch, iPhone, iPad and Mac. It is based on the cocos2d design but instead of using python it, uses objective-c.'
  s.homepage    =  'http://www.cocos2d-iphone.org'
  s.author      =  { 'Ricardo Quesada' => 'ricardoquesada@gmail.com', 'Zynga Inc.' => 'https://zynga.com/' }
  s.source      =  {:git => 'git://github.com/cocos2d/cocos2d-iphone.git', :tag => 'release-2.1-beta3'}

  s.source_files = ['cocos2d/**/*.{h,m,c}',
                    'external/kazmath/src/**/*.{c,h}',
                    'external/kazmath/include/**/*.{c,h}'] +
                    FileList['external/libpng/*.{h,c}'].exclude(/pngtest/)
  s.xcconfig   =  { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/cocos2d/external/kazmath/include"' }
  s.frameworks =  ["OpenGLES", "QuartzCore", "GameKit"]
  s.library    =  'z'

  s.subspec 'CocosDenshion' do |p|
    p.source_files =  'CocosDenshion/CocosDenshion/*.{h,m}'
    p.frameworks   =  ["OpenAL", "AVFoundation", "AudioToolbox"]
  end

  s.prefix_header_contents = '''
#define CC_ENABLE_GL_STATE_CACHE 1
'''

  def s.copy_header_mapping(from)
    from.relative_path_from(Pathname.new('cocos2d'))
  end
end

% time rake -t

No such file or directory - /Users/takeru/.cocoapods

cocoapodsでググるとはじめに出てくるページ

http://d.hatena.ne.jp/Watson/20111204/mac_dev_jp_advent_calendar_cocoapods01

に、”pod setup” せよとあるので、します。

~/.cocoapods

ができました。

再度rakeします。

% time rake -t

これ、cocos2d本体をgit cloneしてビルド、とやっているので時間がかかります。

CPUもディスクも動いていないので止めたくなりますが、アクティビティモニタネットワークを見るとデータを受信しているようなので気長に待ちます。

% ps | grep git

76905 ttys003    0:01.76 /usr/bin/git clone --mirror git://github.com/cocos2d/cocos2d-iphone.git /Users/takeru/Library/Caches/CocoaPods/Git/ca1112b96b6c978964e2e99a16757926c4a82e58
76906 ttys003    0:05.29 git index-pack --stdin --fix-thin --keep=fetch-pack 76905 on tkrimac.local

% lsof | grep 76905 | grep TCP
git       76905 takeru    3u    IPv4 0xceb3fcdbfa4fb28f       0t0    TCP 192.168.0.6:53263->github.com:git (ESTABLISHED)
git       76905 takeru    5u    IPv4 0xceb3fcdbfa4fb28f       0t0    TCP 192.168.0.6:53263->github.com:git (ESTABLISHED)
rake -t  41.02s user 10.89s system 3% cpu 28:05.76 total

30分ぐらいかかりました。

/Users/takeru/Library/Caches/CocoaPods/Git あたりにcloneされました。

(CocoaPodsのキャッシュなんだろうが、どう働くのかどう更新するのかとかよくわかっていない。)

プロジェクト内のvendor/Pods/cocos2dにcocos2dのコードが配置されたことが確認できます。

しかし、まだ黒いアプリです。

Cocos2dアプリ

ここから雑になります。

https://github.com/takeru/RubyMotionAdventCalendar2012_Cocos2d/tree/master/demo01/app

https://github.com/takeru/RubyMotionAdventCalendar2012_Cocos2d/tree/master/demo01/resources

cocos2d_app_delegate.rb

app_delegate.rb

この2ファイルとpngファイルをappに配置します。

(png画像はこれでつくりました→ https://itunes.apple.com/jp/app/art-text-2-lite/id425147621?mt=12 )

class Cocos2dAppDelegate
  attr_reader :window, :director, :nav_controller

  def application(application, didFinishLaunchingWithOptions:launchOptions)
    @window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds

    glView = CCGLView.viewWithFrame @window.bounds,
      pixelFormat: KEAGLColorFormatRGB565,
      depthFormat: 0,
      preserveBackbuffer: false,
      sharegroup: nil,
      multiSampling: false,
      numberOfSamples: 0

    @director = CCDirector.sharedDirector
    @director.wantsFullScreenLayout = true
    @director.displayStats = true
    @director.animationInterval = 1.0/60
    @director.view = glView
    @director.projection = KCCDirectorProjection2D
    @director.enableRetinaDisplay false #true
    @director.delegate = self

    @nav_controller = UINavigationController.alloc.initWithRootViewController @director
    @nav_controller.navigationBarHidden = true

    @window.addSubview @nav_controller.view
    @window.makeKeyAndVisible

    CCTexture2D.defaultAlphaPixelFormat = KCCTexture2DPixelFormat_RGBA8888

    file_utils = CCFileUtils.sharedFileUtils
    file_utils.enableFallbackSuffixes = false
    file_utils.setiPhoneRetinaDisplaySuffix "-hd"
    file_utils.setiPadSuffix "-ipad"
    file_utils.setiPadRetinaDisplaySuffix "-ipadhd"

    CCTexture2D.PVRImagesHavePremultipliedAlpha true

    true
  end

  def applicationWillResignActive(app)
    @director.pause if @nav_controller.visibleViewController == @director
  end

  def applicationDidBecomeActive(app)
    @director.resume if @nav_controller.visibleViewController == @director
  end

  def applicationDidEnterBackground(app)
    @director.stopAnimation if @nav_controller.visibleViewController == @director
  end

  def applicationWillEnterForeground(app)
    @director.startAnimation if @nav_controller.visibleViewController == @director
  end

  def applicationWillTerminate(app)
    @director.end
  end

  def applicationDidReceiveMemoryWarning(app)
    @director.purgeCachedData
  end

  def applicationSignificantTimeChange(app)
    @director.setNextDeltaTimeZero true
  end
end
class AppDelegate < Cocos2dAppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    super

    @scene = MainScene.node
    director.pushScene @scene

    true
  end

  #def shouldAutorotateToInterfaceOrientation(orientation)
  #  [UIInterfaceOrientationPortrait,
  #   UIInterfaceOrientationPortraitUpsideDown,
  #   UIInterfaceOrientationLandscapeLeft,
  #   UIInterfaceOrientationLandscapeRight
  #  ].include?(orientation)
  #end
end

class MainScene < CCLayer
  def init
    super
    p "MainScene#init"
    self.scheduleUpdate
    self
  end

  def onEnter
    super
    p "MainScene#onEnter"
    self.initMenu
  end

  def onExit
    super
    p "MainScene#onExit"
  end

  def update(dt)
    super
    # p "MainScene#update(#{dt})"
  end

  def initMenu
    item1 = CCMenuItemImage.itemWithNormalImage "item1a.png", selectedImage:"item1b.png", disabledImage:"item1c.png", target:self, selector: 'menuSelected:'

    sp2a  = CCSprite.spriteWithFile "item2a.png"
    sp2b  = CCSprite.spriteWithFile "item2b.png"
    sp2c  = CCSprite.spriteWithFile "item2c.png"
    item2 = CCMenuItemSprite.itemWithNormalSprite sp2a, selectedSprite:sp2b, disabledSprite:sp2c, target:self, selector: 'menuSelected:'

    lb3   = CCLabelTTF.labelWithString:"Let's Go!", fontName:"Arial", fontSize:50
    lb3.color = [0,127,0]
    item3 = CCMenuItemLabel.itemWithLabel lb3, target:self, selector: 'menuSelected:'

    lb4   = CCLabelTTF.labelWithString:"Jump!", fontName:"Marker Felt", fontSize:32
    lb4.color = [0,0,255]
    item4 = CCMenuItemLabel.itemWithLabel(lb4, block:lambda{|sender| puts "lambda@Item4 #{sender.inspect}" })

    menu = CCMenu.menuWithArray [item1, item2, item3, item4]
    #menu.position = [0,0]
    menu.alignItemsVertically
    self.addChild menu, z:1
  end

  def menuSelected(sender)
    puts "menuSelected #{sender.inspect}"
  end
end

rakeで実行するとメニューが表示されます。

f:id:urekat:20121209155547p:image

メニューを押すとコンソールにログが出ます。

f:id:urekat:20121209155548p:image

ステータスバーを隠して、画面を横向きにする

ゲームなので、ステータスバーを隠して横向きにしたい。

ただ、これだけのことに初心者はつまづきます。

Info.plistの内容はRakefileに書けます。

# Rakefile
  app.info_plist['UIStatusBarHidden'] = true
  app.info_plist['UIInterfaceOrientation'] = "UIInterfaceOrientationLandscapeLeft"
  app.info_plist['UISupportedInterfaceOrientations'] = ['UIInterfaceOrientationLandscapeLeft']

これでうまくいくはずだったのですが、

f:id:urekat:20121209155549p:image

こうなってしまいました。

おかしい。昨日MacbookAirでやったときはうまくいったのに。

調べてみると、シミュレータのバーションが違いました。5.1と6.0。


6.0のSDK(?)の環境で5.1をシミュレートするには、Rakefile

app.deployment_target = "5.1"

と書いた上で、

% rake clean
% rake simulator target=5.1

として実行するとうまくいきました。

5.1のシミュレータだと、

f:id:urekat:20121209155550p:image

ちゃんと横を向きます。


まとめ

RubyMotion+Cocos2dをはじめるまでの試行錯誤を紹介しました。

誰かの足がかりになれば良いなと思います。

iOS Developer Program二年分とRubyMotionを買ったのですが、いまだにひとつもアプリをリリースできていません。なんとかもとをとりたい。



参考URL

https://github.com/anydiem/cocosmotion

https://github.com/CocoaPods/Specs/tree/master/cocos2d

http://www.rubymotion.com/developer-center/guides/project-management/

https://groups.google.com/forum/?fromgroups=#!topic/rubymotion/IWYEKpSya84