カテゴリー : iOS開発

ボタン連打時の音

久しぶりの書き込み。

久しぶりの開発ネタ^^;

 

自分はいつも音声はAVAudioPlayerを利用してます。

———————————

AVAudioPlayer*    sounds;

[play sounds];

———————————

と言った感じですね。

 

ボタン連打時に毎回音を出そうとすると、

いくら再生音が短くても回らなくなります。

さらに再生チェックして

———————————

if ([sounds isPlaying]) {

[sounds stop];

[sounds setCurrentTime:0.0];

}

[sounds play];

———————————

とかやると、激遅くなります。

 

ってことで自分がやってる対策は超原始的。

まず同じ音を多数設定

——————————–

NSString* a_file_path = [[NSBundle mainBundle] pathForResource:@”oto” ofType:@”caf”];

NSURL*a_file_url = [NSURL fileURLWithPath:a_file_path];

if( a_file_url ){

sounds[0] = [[AVAudioPlayer alloc] initWithContentsOfURL:a_file_url error:nil];

sounds[1] = [[AVAudioPlayer alloc] initWithContentsOfURL:a_file_url error:nil];

sounds[2] = [[AVAudioPlayer alloc] initWithContentsOfURL:a_file_url error:nil];

}

——————————–

 

ボタン連打時の処理

——————————–

count++

if (count > 2) {

[sounds[(count-2)%3] stop];

[sounds[(count-2)%3] setCurrentTime:0];

}

[sounds[count%3] play];

——————————–

こんな感じで、2個前の音を処理しながら今の音を再生します。

 

ホントにこんな感じでしょぼーく開発やってますが、

どうにかなってます^^;

もっといい方法があればどなたかご教示ください!

 

 

 

 

久しぶりに開発中

最近は過去アプリのテコ入れがメインで、

全然新作作ってなかったのですが、

今久しぶりに新作作成中!

今回は激戦区のiPhoneゲームに挑戦!!

のつもり。

リリースするかわからないしね^^;

もう既にタイマーだらけでorz

 

しかしiPhoneアプリ開発はホントに楽しい。

簡単な物ならすぐにイメージを具現化できて、

自分のiPhoneやiPadで動いてくれる。

技術や知識がある人はその幅が広いのでもっと楽しいのだろうな〜。

頑張らないと!!

Command /usr/bin/codesign failed with exit code 1

昨日一昨日の2日間このエラーと格闘してました!

しかもググって出て来るキーチェーン系ではないこともわかってたので、

どうしたもんかと悩んだあげく、

とっても原始的な方法で対処。

 

動作するプロジェクトとエラーの出るプロジェクトを立ち上げて、

ビルドセッティングを表示。

左右に並べて一つずつチェック!

で、なんとか動きました。

原因個所は特定できませんでしたが、こういう方法もあるってことで^^;

 

あとアフィンが動かなかったのは、

CoreGraphicsのライブラリの入れ忘れでしたorz

 

XCode4.2でキリキリマイ

iPadとiPhoneのiOSをβ版に変えてしまったため、

勉強ついでにXCode4.2で開発してるのですが、

やたらとひっかかってますorz

新しい事をせずに今まで通りの事をやろうとすると出来ないのです。

 

1 メモリのreleaseができない。

ネットの情報ではJAVAのガーベッジコレクションのように自動で解放されるようになってるとか?

そのおかげで解放したい時に開放で来ない状態。

どうにかこうにかやりくりしているが、なかなか馴染めません。

ちゅうか旧バージョンのXCodeで動くのか心配・・・

 

2 CGAffineTransformが使えない。

手軽に拡大縮小、回転等を行う際によく使ってるのですが、

今回何故かエラーに。

ライブラリが見つからないとかなんとか?(調べる気なしですみません^^;)

今まで特に特別な儀式はしてなかったと思うのだけどな〜

 

3 ProfileのLeaksとかが使えない

これもまだ調査中で手順があるのかもしれませんが、

今まで通りのやりかたでは使えず。

「Drag recording instruments here …」というメッセージが。

 

上記のような状態ですでにだいぶやる気がなくなってます。

調べればどうにかなりそうなのですが、

そんな時間も取れないし、英語苦手だし^^;

対応が出来たとしても下位互換のないプロジェクトになりそうで・・・

はぁ〜〜〜

MacBookAir所感

3泊4日の出張に同行させて利用したので所感。

 

片道3時間の電車の中では、少し開発もしてみました。

軽くて快適です。

画面が小さいので見辛さはありますが、

快適でした。

 

帰りの電車では約1時間XCodeで開発。

輝度30%ぐらいにして、メモリは75%程使用してたかな?

約1時間でバッテリーは半分になりました。

2時間は使えそうな雰囲気です。

ただし後半は放熱が結構凄かった。

冬は良いけど・・

 

ホテルで使う分には普通のパソコンですな。

特になんの問題もないです。

 

とにかく荷物にならない!

軽い!

でもって普通に使える!

やはり買っていい物だと思います。

あと、人に見せると薄さに感動してくれます^^v

 

NSDictionary使ってみた(今更)

今更ながらNSDictionary使ってみました。

Javaで言うHashMapと同じですな。

キーに対するオブジェクトを保持しておくもの。

配列はインデックスで管理しますが、

これはキーで中身を管理します。

まずは色の名前と色(UIColor)を作成。

NSDictionary *dictColors;

// 色のマップ作成

dictColors = [NSDictionary dictionaryWithObjectsAndKeys:

[UIColor redColor], @"あか",

[UIColor blueColor], @"あお",

[UIColor whiteColor], @"しろ",

[UIColor yellowColor], @"きいろ",

[UIColor colorWithRed:0.0 green:0.8 blue:0.0 alpha:1.0], @"みどり",

[UIColor blackColor], @"くろ",

[UIColor purpleColor], @"むらさき",

[UIColor brownColor], @"ちゃいろ",

[UIColor orangeColor], @"オレンジ",

[UIColor colorWithRed:0.55 green:0.7 blue:1.0 alpha:1.0], @"みずいろ",

[UIColor colorWithRed:1.0 green:0.4 blue:0.6 alpha:1.0], @"ピンク",

[UIColor colorWithRed:0.5 green:1.0 blue:0.5 alpha:1.0], @"きみどり", nil];

次にキー一覧を取得して並び替えると言う処理を行う事に。

NSArrayに取得するのだが、こいつは完全に固定されて弄れないので、

NSMutableArrayへ一旦入れてからの処理になります。

// 色情報のキー取得

NSArray *arry = (NSMutableArray *)[dictColors allKeys];

NSMutableArray *arrayMut = [NSMutableArray arrayWithArray:arry];

// キーの並び替え

for (int i=0; i<100; i++) {

int src = random()%12;

int dst = src;

while (dst == src) {

dst = random()%12;

}

[arrayMut exchangeObjectAtIndex:src withObjectAtIndex:dst];

}

これでなんとかうまく色をランダムに利用できるようになりました。

並び替え処理はへたれ処理なので気にしないでください^^;

キーからデータの取り出しは

UIColor colorTemp = [dictColors objectForKey:[arrayMut objectAtIndex:0]];

誰でもわかるような内容ですね^^;

UIWebViewの日本語URLアクセス

UIWebViewにサイトを表示させる時にURLに日本語があると上手く行かない!
結構悩んだあげく、これで検索して一発解決!
「NSURL 日本語」でググってください!
いろいろ出てきました。

*******************************************************
// stURLに日本語含んだURL設定



[view_web loadRequest:[NSURLRequest requestWithURL: [NSURL URLWithString:[stURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]];

*******************************************************

それを見て上記のように変更する事で上手く行きました!
stringByAddingPercentEscapesUsingEncoding
が決めてみたいですね。

あとはサルできテンプレートに大変お世話になりました!
さすがです!便利すぎます!
開発者は絶対見るべきです!

iPhoneアプリ開発・アプリ内への写真の保存

iPadでの話ですが、たぶんiPhoneでも変わらないと思う。 

アプリ起動

フォトアルバムから写真選択して利用

アプリ終了時に写真保存

起動時に以前の写真設定をそのまま利用

という使い方をしたかったので調べました。
結構ハマります^^

簡単に言うと、
写真をデータ化してから保存すると言う事。

ーセーブ処理ーーーーーーーーーーーーーーーーーーーーーーーー
NSData *data;

NSUserDefaults* defaults = [ NSUserDefaults standardUserDefaults ];

NSString* temp_st;

data = UIImageJPEGRepresentation(imagePic, 0.5); 

temp_st = [[NSString alloc] initWithFormat:@”IMG_PICS”];

[ defaults setObject:data forKey: temp_st ];

[temp_st release];
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
UIImageJPEGRepresentationの引数の0.5は圧縮率。
iPadででかい画像使ってたのですが、0.7とかでもよくエラーが発生。
0.5ぐらいが良いのかも?
data変数はヘッダで宣言して終了時にreleaseしてます。

ーロード処理ーーーーーーーーーーーーーーーーーーーーーーーー

NSData *data;

NSUserDefaults* defaults = [ NSUserDefaults standardUserDefaults ];

NSString* temp_st;

temp_st = [[NSString alloc] initWithFormat:@”IMG_PICS”];

data = [[NSUserDefaults standardUserDefaults] objectForKey:temp_st];

imagePic = [UIImage imageWithData:data];

[temp_st release];

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
実コードに手を加えてるので、このままコピぺで動くかは微妙です^^;
あ、imagePicはUIImage*でございます。

検索では
UIImageJPEGRepresentation
UIImagePNGRepresentation
などで調べると良いと思います。