効果音の再生方法です。
あちこちで調べてAppleのドキュメントなんかも眺めて難しそうだなぁと思っていたのですが、実際にコードを書いてみると、、、難しいことをやろうとしなければ意外とやることは単純かな。
こちらのサイト様を主に参考にさせていただきました。
iOS で効果音を鳴らしたい | どうも。わたすがダニーです。
効果音を鳴らす « iPhoneアプリ練習帳
それでなんとか効果音を鳴らすことまではできたのですが、、、
問題があって、ボタンを連打して前の音が鳴り終わっていないときに次の音を鳴らそうとすると鳴らない。
再生用のメソッド作ってその中で
// (playerは AVAudioPlayer *ということで)
if([player isPlaying]){
[player stop];
}
[player play];
とかやってみたのですが、どうも効果がない。
音ファイルの再生時間をできるだけ短くしたりしてなんとか我慢していたのですが、今日こちらのサイトを見つけて解決しました。
C開発者によるiPhoneプログラミング: サウンドの連続再生
stopを使わずに、強制的にcurrentTimeを0に巻き戻してあげてからもう一度再生すればいいのか〜。
こんな感じに。
[player setCurrentTime:0];
[player play];
参考になりました。
感謝。
UIImageを横に連結して新しいUIImageを作るメソッドを作りました。
といってもほとんどこちらのサイト様のコピペです。
→ UIImageの合成 – Horigoodの日記 – iPhoneアプリ開発グループ
コピペで動かなかった部分は書き換えています。
+ (UIImage *)concatImages:(UIImage *)imgA :(UIImage *)imgB
{
int widthA = CGImageGetWidth(imgA.CGImage);
int widthB = CGImageGetWidth(imgB.CGImage);
int height = CGImageGetHeight(imgA.CGImage);
int widthC = widthA + widthB;
unsigned char *bitmap = calloc(widthC * height * 4, sizeof(unsigned char));
CGContextRef bitmapContext = CGBitmapContextCreate(bitmap,
widthC,
height,
8,
widthC * 4,
CGColorSpaceCreateDeviceRGB(),
kCGImageAlphaPremultipliedFirst);
//imgAをbitmapContextに描画
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, widthA, height), imgA.CGImage);
//imgBをimgAの隣に描画
CGContextDrawImage(bitmapContext, CGRectMake(widthA, 0, widthB, height), imgB.CGImage);
//CGContextからCGImageを作成
CGImageRef imgRef = CGBitmapContextCreateImage (bitmapContext);
//CGImageからUIImageを作成
UIImage *imgC = [UIImage imageWithCGImage:imgRef];
//bitmapを解放
free(bitmap);
return imgC;
}
大部分がコピペなのできちんと理解できているか不安です。
間違いとかに気づかれた方いらっしゃいましたらコメントお願いします。
問題続きでちっとも進まないアプリ作成
UIImageViewをInterfaceBuilderに作成して、右クリックから[New Referencing Outlet]をヘッダファイルにドラッグしてみるも何も起こらず。
あれ?
自動でコードを書いてくれるんだったような気がするけど、勘違い?
仕方なく手動でヘッダファイルに以下を追加。
IBOutlet UIImageView *canvas;
しかしconnection inspectorのoutletsの部分にこのcanvasが表示されない・・・。
InterfaceBuilder上に作成したviewとcanvasって名前を関連づけしないといけないような気がするんだけど、これじゃできない。
あれこれ調べると、発見。
以前アプリ名とファイル名が不一致でXcodeが固まる(XCode固まる)という状態になったんだけど、その問題がすべては解決できてなかった。
xibファイルのFile’s Ownerを選択し、Identity Inspectorを開いたら一番上にCustom Classという項目があって、ここのクラス名に修正前の名前が残っていました。
ここを正しいクラス名に修正すると無事outletsが表示されるようになりました。
まずは慣れようといろいろいじっているので、いろいろと問題が発生します。
今度はbuildには成功するが、シミュレータを起動するとすぐにエラーで落ちてしまうという状態に。
エラーメッセージは、以下のようなもの
Could not load NIB in bundle: ‘NSBundle ….
なんのことやら・・・。
ずっとブラウザとXcodeの往復をしていますが、またブラウザに戻って検索です。
すぐに以下の情報が見つかりました。
Xcode 実機で動作しなくなる(’NSInternalInconsistencyException’, reason: ‘ Could not load NIB in bundle…)
エラーログにある「ViewController.xib」を開き、右側の「Utilities」>「File Inspector」内にある「Localization」の部分を見ます。
僕の場合はEnglishの1つのみが書かれていたので、「Japanese」を追加します。
この方はシミュレータでは起動するが実機に持っていくと動かないという症状になったそうですが、エラーメッセージ自体は似ています。
さらに解決策の内容に心当たりがあったのでやってみると上手くいきました。
私の場合は、最初LocalizationのところにEnglishとJapaneseがあったが(Japaneseは自分で追加したはず)、Englishはいらないだろうと削除しちゃってました。
Englishは必須なのだろうか・・・?
とりあえず残しておくことにします。
あー本当に分からないことだらけだ。
iPadアプリ作成中なのですが、いろいろといじっていると画面上部の通知エリアのような部分に
Attaching to アプリ名
という表示が出て、ビジーっぽい状態のままになっていることに気づきました。
そしてこの状態でrunを実行すると固まってしまいました。
解決策を探すと、次の情報を得ました。
XCode 4 hangs at “Attaching to (app name)”
(※原文英語)
Q. Xcode3では動いていたアプリがXcode4にすると “Attaching to …”の表示のまま固まった
A. [自己解決]
1.左のペインのプロジェクト名(一番上)をクリック。右にXcode3のproject/target editorsのようなメニューが出る。
2.一番上のBuild Settingsをクリック
3.パッケージの中ですべてのbuildがプロダクト名と同じになるようにする。”Attacing to …”に表示されている名前と同じに。例えば、プロダクト名が”LCBO Finder”なのに”Attacing to myLCBO”と表示して固まっているのならば、buildできないだろう。これが私に起こった問題だった。開発中にアプリ名を変更したんだ。
build名とアプリ名が一致していない(?)とこの問題が起こる?
私の場合、アプリの名前は「paintSample」だったのに、ファイル達は「painSampleViewController」というような”痛い”打ち間違いをしていました。
すべてのファイル名や、ソースの中身まですべてpain→paintに書き換え、Xcodeを再起動すると動くようになりました。
はじめたばかりのiOSアプリ開発。
ほんと分からないことだらけです。
iPadを横向きにした状態の部品配置を確認しようと思ったのですが、横画面にする方法が分かりませんでした。
こんなことすら分からないなんて・・・と思うのですが、仕方なし。
またまた検索です。
本当に有用な情報を公開して下さっている方が多くて助かります。
[Xcode 4.3]横画面のアプリケーションの開発
横画面のアプリケーションを作るためにはどうすればいいのでしょうか。
それは”Attributes Inspector”の”Orientation”をLandscapeに変えればOKです。
参照元のサイトでは画像で詳しく説明されています。
いやー助かった。感謝感謝です。
XcodeでiPadアプリを作っている方々はどのように開発しているんでしょうか。
どうにも画面が小さすぎて作りにくい。
ズームアウトしてラベルの位置とか全体を見たいんだけど、ズームアウトの方法がわからず・・・。
検索するとこんなの見つけました。
Ipad interface builder (xib) problem
(※原文英語)
Q. iPadのInterface Builderでズームアウトするにはどうすればいいですか?
A. Interface Builderではズームアウトはできません。唯一の回避策は、縦の解像度が1024以上の外部ディスプレイを使うことです。
みたいなやり取り。
ズームアウトできないのかー。
全体の雰囲気を見るにはシミュレーターを使うしかないんですかね。
Mac book Airを購入した動機はiOSアプリを開発したい、ということでした。
Mac慣れをしながら徐々にXcodeでのアプリ開発の方法を調べたり、サンプルコードを眺めたり、練習にじゃんけんアプリを作ってみたりしています。
そんな中でチェックボックス風な機能を実現するにはどうすればいいのかなぁと調べていると、こんなブログを見つけました。 続きを読む
初めてのipadアプリ開発です。
まずxcodeを入れました。
apple storeから無料でダウンロード、インストールできました。
次に、まずは超簡単なテストアプリを作ってみようと探してみて、以下のサイトを見つけました。
続きを読む