Hatena::ブログ(Diary)

今日もタジン鍋が旨い

2011-05-18

一時方向転換

| 22:08 | 一時方向転換を含むブックマーク 一時方向転換のブックマークコメント

私がiPhoneの開発を始めた理由がありまして。

それは新たなフィールドの開拓によって今現在の職場から脱出するのが目的だった訳なのです。


で、つい最近中々良いオファーを頂きまして。

iPhoneのお仕事ではなく現在の仕事の延長線上であるC#/Form関連なのです。

場所、やる事、まにー共に中々良い環境でありそうなのです。


と言う訳で一時iPhoneに集中するのは中断。

一旦C#/Form/WPFに戻ろうかと思います。


折角始めたこのブログですがどの様に舵を取っていくかは決めていません。

欲張りにiPhoneもプラットフォームプログラミングも両方やるかもしれませんし、

初志貫徹でiPhoneのみの紹介をするかもしれません。

まぁ辞めるには投資したお金が勿体無すぎるのでやる事はやります。


ただ当面は、絶対にこのオファーに失敗しないよう頑張るのみです。

この現在の会社に対する怒りを原動力に変えて。

絶対受かるぞ!

絶対だ!

2011-05-12

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

| 02:46 | AVAudioPlayerを使った短いサウンドの鳴らし方(のポカとその直し方)を含むブックマーク 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とは違うデバッグに悪戦苦闘しながらポインタが示している場所を見たり見直したりして答えが分かりました。

その解答は↓

続きを読む

2011-05-11

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

| 04:08 | 短いサウンドの鳴らし方 (ver XCode4)を含むブックマーク 短いサウンドの鳴らし方 (ver XCode4)のブックマークコメント

無いもの強請りをしても仕方がありませんチャキチャキ進めましょう

まぁそう悲観的に考えても仕方ない訳で。

取り合えずiPhoneアプリを作り倒してこれ以上作れない!とでもなる事をまずは目指そうと思います。


今日は音を鳴らしてみようかと。

まぁ結構色々な場所に鳴らし方は載っているのですが、音を鳴らすためにはまずAudioToolbox.frameworkを載せなくてはならない訳です。

で追加方法でちょっと一瞬突っかかってしまいました。色々な場所に追加せよとは書いて歩けどどうやってと言う基本のステップが載ってない。

右クリックのメニューにも載ってない。Finderでも見つかるのはヘッダ等のみ。さてどうするか。

401 Unauthorized

こちらにも書いてある通り

1. Projectをクリック (Project navigatorの一番上にある奴)

2. 4番目のタブである"Build Phases"をクリック

3. 上から三番目にある"Link Binary With Libraries"のメニューをクリックして開く

4. +サインをクリックして必要なライブラリを追加。

これで良しと。


後は

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

[iPhone SDK]短いサウンドの再生

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


ただ、音を止めたいとなると又別問題。

objective c - Stop a sound using the same button that plays it - Stack Overflow

こんなものを発見しましたが、やってみたらDisposeしちゃってるから再利用出来ない!

また明日新しい方法を探してみようかと思います。

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

01:15 | Google I/O面白いなぁ・・・色々焦る・・・を含むブックマーク Google I/O面白いなぁ・・・色々焦る・・・のブックマークコメント

WebGLのセッションも面白いし何だか色々焦ってしまいます。

iPhoneDev参戦もかなり遅い訳だし、こんな所で燻って無いで次の・・・

あ〜悩ましい。

I feel like I'm from stone age!

2011-05-10

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

| 22:47 | OpenGLES2.0には当然移行すべき。ES1.1も当然サポートすべき・・・?を含むブックマーク 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にもこれからも使い道はありそうです。

2011-05-09

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

01:36 | 気分転換にちょっとブログをいじろうを含むブックマーク 気分転換にちょっとブログをいじろうのブックマークコメント

はてなに自動で入るPタグの幅がちょっとデカイなぁと常々思ってたんですよね。

はてなダイアリーを書くと1行づつ空いた感じになるんですが…ど.. - 人力検索はてな

んでちょっと検索してみたらすぐに答えが見つかるっと。

こっちの方が大分見やすくなった気がする。


続きを読むってやっぱり入れた方が良いのでしょうかね?

まぁそんなに長い記事書いてる訳でもないですけれど・・・

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

| 00:33 | さすがにそれは探したり無いだけ・・・だよね?を含むブックマーク さすがにそれは探したり無いだけ・・・だよね?のブックマークコメント

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

なるほど。新しく入ってるTDXViewController.h/.mの方に入ってる訳ですね。

しかも名前もdrawFrameに変わってる・・・と。


これは大分コール変わってるなぁ。

間違った方法を学んでしまうといけないし、どうしよう?

これも違いますね。

ただこのdrawFrameの中にGLES1と2のコードが入ってる訳なんですね。

(正確には2とそれ以外・・・ES3出たらきっとスケルトンのこの部分も書き換わるんだろうなぁ)


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

ぬう前途多難だ・・・

さすがに2009年のiPhone SDK 3の内容と比べると色々変わってるか・・・

| 00:28 | さすがに2009年のiPhone SDK 3の内容と比べると色々変わってるか・・・を含むブックマーク さすがに2009年のiPhone SDK 3の内容と比べると色々変わってるか・・・のブックマークコメント

今日も今日とてiPhoneDev。

【コラム】実践! iPhoneアプリ開発 (19) タワーディフェンスゲームの作り方 (2) - OpenGL環境のセットアップ | エンタープライズ | マイナビニュース

タワーディフェンスチュートリアルを発見!

垂涎の思いでオープンして、早速取り掛かってみよう!と思いきや、思わぬ罠に引っかかってしまいました。

現行のSDKと当時のSDKスケルトンコードの内容がかなり違う様なのです。

当然2009年ですからiPhone3GSが出てきたばかりで、まだ初代iPhone、iPhone3も現役の頃。

OpenGLES2.0をサポートしていないこの二つのデバイスの為に、それらをサポートするクラスもあるわけです。


所が今やそんなクラスはかけらもありません・・・

EAGLViewクラスの、initWithCoder:メソッドを、以下のように変更しておく。

// 常にES1Rendererを使用する
#if 1
        renderer = [[ES1Renderer alloc] init];
#else
        renderer = [[ES2Renderer alloc] init];
#endif
【コラム】実践! iPhoneアプリ開発 (19) タワーディフェンスゲームの作り方 (2) - OpenGL環境のセットアップ | エンタープライズ | マイナビニュース

と出てきたときにむぅ?っと思ったんだよなぁ・・・

なんか足りないぞと・・・


まぁいいやこんなんで躓いては居られない

会社のれがしーすぱげっちぃこーど(switch一つで4000行とか)を読んでる訳じゃないんだなんとかしてみせる!

・・・それにしても一度作り上げたコードを態々XCode4用に作り直してくださっているもとまかさんには感謝したりないなぁ。