一時方向転換

私がiPhoneの開発を始めた理由がありまして。
それは新たなフィールドの開拓によって今現在の職場から脱出するのが目的だった訳なのです。


で、つい最近中々良いオファーを頂きまして。
iPhoneのお仕事ではなく現在の仕事の延長線上であるC#/Form関連なのです。
場所、やる事、まにー共に中々良い環境でありそうなのです。


と言う訳で一時iPhoneに集中するのは中断。
一旦C#/Form/WPFに戻ろうかと思います。


折角始めたこのブログですがどの様に舵を取っていくかは決めていません。
欲張りにiPhoneもプラットフォームプログラミングも両方やるかもしれませんし、
初志貫徹でiPhoneのみの紹介をするかもしれません。
まぁ辞めるには投資したお金が勿体無すぎるのでやる事はやります。


ただ当面は、絶対にこのオファーに失敗しないよう頑張るのみです。
この現在の会社に対する怒りを原動力に変えて。
絶対受かるぞ!
絶対だ!

AVAudioPlayerを使った短いサウンドの鳴らし方(のポカとその直し方)

昨日の続きです。
ボタンを押したら音が出ると言う仕様はクリアされました。
しかし、最初のボタンの音が鳴っている間に次のボタンを押すと、音が重なってしまうと言う問題が浮上。
さてどうやったら解けるのかとウェブ上を彷徨う事約一分。
[iPhone 開発メモ] AVAudioPlayer を使用して音楽を再生する | Sun Limited Mt.
昨日と同じサイト上にて解を発見。
早速実装です。


取り合えず、

    AVAudioPlayer   **curSound;
    AVAudioPlayer   *sound1;
    AVAudioPlayer   *sound2;

    NSString    *path;
    NSURL       *url;
    
    path = [[NSBundle mainBundle] pathForResource:@"Sound_1" ofType:@"wav"];
    url = [NSURL fileURLWithPath:path];
    sound1 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    
    path = [[NSBundle mainBundle] pathForResource:@"Sound_2" ofType:@"wav"];
    url = [NSURL fileURLWithPath:path];
    sound2 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 

    curSound = &sound1;

と初期化&ロード(別関数にあるのを色々纏めてあります)
そして音を止めて新しい音を始める関数として

- (void) playSoundStoppingCur:(AVAudioPlayer *)newSound
{
    [*curSound stop];
    curSound = &newSound;
    [*curSound play];
}

を作成。
わくわくしながら実行を押してみたのですが・・・
コレが見事にクラッシュ・・・
何故だ・・・


追記
VSとは違うデバッグに悪戦苦闘しながらポインタが示している場所を見たり見直したりして答えが分かりました。
その解答は↓

続きを読む

短いサウンドの鳴らし方 (ver XCode4)

無いもの強請りをしても仕方がありませんチャキチャキ進めましょう
まぁそう悲観的に考えても仕方ない訳で。
取り合えずiPhoneのアプリを作り倒してこれ以上作れない!とでもなる事をまずは目指そうと思います。


今日は音を鳴らしてみようかと。
まぁ結構色々な場所に鳴らし方は載っているのですが、音を鳴らすためにはまずAudioToolbox.frameworkを載せなくてはならない訳です。
で追加方法でちょっと一瞬突っかかってしまいました。色々な場所に追加せよとは書いて歩けどどうやってと言う基本のステップが載ってない。
右クリックのメニューにも載ってない。Finderでも見つかるのはヘッダ等のみ。さてどうするか。
http://www.iphonedevbook.com/forum/chapter-7-tab-bars-pickers/4589-where-audiotoolbox-framework.html
こちらにも書いてある通り
1. Projectをクリック (Project navigatorの一番上にある奴)
2. 4番目のタブである"Build Phases"をクリック
3. 上から三番目にある"Link Binary With Libraries"のメニューをクリックして開く
4. +サインをクリックして必要なライブラリを追加。
これで良しと。


後は
[iPhone 開発メモ] 短い音を再生する方法 | Sun Limited Mt.


で語られている通りにすれば問題無く音が出せます。


ただ、音を止めたいとなると又別問題。
objective c - Stop a sound using the same button that plays it - Stack Overflow
こんなものを発見しましたが、やってみたらDisposeしちゃってるから再利用出来ない!
また明日新しい方法を探してみようかと思います。

Google I/O面白いなぁ・・・色々焦る・・・

WebGLのセッションも面白いし何だか色々焦ってしまいます。
iPhoneDev参戦もかなり遅い訳だし、こんな所で燻って無いで次の・・・
あ〜悩ましい。
I feel like I'm from stone age!

OpenGLES2.0には当然移行すべき。ES1.1も当然サポートすべき・・・?

昨日のOpenGLESの問題を調べていたのですがちょっと面白いデータを発見したのでついでに。
iphone - Xcode 4 OpenGL ES 1.1 template - Stack Overflow
上のページでは要するに「ES1のコードで描写したいんだけどなんか行きません。どうして?」と言う事が書いてあります。
後で私の作ってるコードにも組み入れてみようかと思います。


それはともかく、このページの一番最後

From our free games in the market about 11% of the downloads are from ios 3.x, 89% of the downloads are ios 4.x. From this 11% of total downloads 80% are 3.1.3, 17% are 3.1.2. Only 0.22% of all downloaders still have 3.0.. – Bastian Apr 29 at 21:20

iphone - Xcode 4 OpenGL ES 1.1 template - Stack Overflow

とあります。
彼のアプリのデータがどんな物であるか分からない以上、
このデータがどこまで信憑性があるのかは分かりませんが、
仮にもSOFのTop6%Repに入る人の作るアプリではあります。全く根拠無しの大法螺と言う程でも無いと思われます。
(まぁネットですから可能性は無視できません)
かく言う私は未だにキャリア付きのメインのiPhoneではiOS3.0.1を使用している訳なのです。
(逆に最初期iPhoneEDGEが3.1.3だったり)
むしろなるほどと思えるデータかと思われます。


これはある意味チャンスとも言えますよね。
大抵の場合一つのアプリを持っている場合同じ種類のアプリをダウンロードする事は無いと言えましょう。
しかし、「あの素晴らしいアプリ」が使えなくて悔しい思いをしている人達が居る。
と言う事を知って居ると言うのは要するにまだ需要がある。と言う事。
私の初代iPhoneにもこれからも使い道はありそうです。

気分転換にちょっとブログをいじろう

はてなに自動で入るPタグの幅がちょっとデカイなぁと常々思ってたんですよね。
はてなダイアリーを書くと1行づつ空いた感じになるんですが…ど… - 人力検索はてな
んでちょっと検索してみたらすぐに答えが見つかるっと。
こっちの方が大分見やすくなった気がする。


続きを読むってやっぱり入れた方が良いのでしょうかね?
まぁそんなに長い記事書いてる訳でもないですけれど・・・

さすがにそれは探したり無いだけ・・・だよね?

あれ・・・?renderも無いよ・・・?

なるほど。新しく入ってるTDXViewController.h/.mの方に入ってる訳ですね。
しかも名前もdrawFrameに変わってる・・・と。


これは大分コール変わってるなぁ。
間違った方法を学んでしまうといけないし、どうしよう?

これも違いますね。
ただこのdrawFrameの中にGLES1と2のコードが入ってる訳なんですね。
(正確には2とそれ以外・・・ES3出たらきっとスケルトンのこの部分も書き換わるんだろうなぁ)


強制的にGLES1のコードをiPhone4.0Simで起動させたらクラッシュするし。なんでだ・・・
ぬう前途多難だ・・・