忍者ブログ
  • 2025.01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 2025.03
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2025/02/22 03:07 】 |
アプリがデバイスで起動できない
アプリをデバイスでビルド&実行しようとしたら、こういうエラーが出た。



The Debugger has exited with status 0.
[Session started at 2011-03-25 01:29:37 +0900.]
GNU gdb 6.3.50-20050815 (Apple version gdb-1510) (Fri Oct 22 04:12:10 UTC 2010)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys006
プログラムをデバッガに読み込み中...
sharedlibrary apply-load-rules all
プログラムは読み込まれました。
target remote-mobile /tmp/.XcodeGDBRemote-7884-75
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
実行中...
[Switching to thread 11523]
[Switching to thread 11523]
Re-enabling shared library breakpoint 1
continue
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/usr/lib/info/dns.so (file not found).
Couldn't register com.yourcompany.pball with the bootstrap server. Error: unknown error code.
This generally means that another instance of this process was already running or is hung in the debugger.プログラムはシグナルを受信しました:“SIGABRT”。
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
kill
quit



そのうち、アプリの転送もできなくなって、
Macとデバイスの一方または両方をリブートしてくださいと言われた。

シミュレータでは起動できるようだ。



iPadを再起動したら、元に戻ったけど。
PR
【2011/03/25 01:35 】 | よくある罠 | 有り難いご意見(0) | トラックバック()
新世界より
「新世界より」
作者は貴志 祐介。




文庫3冊で長いんだけど、あっという間に読めた。
よく練られた世界と、人物像。謎と設定。
現代文明が頽廃した後、わずかに生き残った人類が生きる未来の世界。この辺はナウシカと似てる。


舞台は1000年後の日本。
科学文明は滅び、生き残ったわずかな人類は呪力という超能力を得ていた。
呪力は念動力のことである。周囲のものに力を及ぼし、モノを動かしたり、光を作ったり、飛んでくる矢を止めたり、さらに特に呪力の強い人間は、自分が宙に浮いたりすることができる。

かつては、呪力を覚えた人間と、覚えていない人間の間で大戦争が起こり、呪力を持つ人間が残った。
呪力を持つ人間は、他の人間を殺してはいけない愧死機構が遺伝子に埋め込まれている。人間を殺したことを脳が認識すると、愧死機構が発動し、その人間は心停止して死んでしまう。だから人間は殺人を犯すことができない。

また、突然変異によって業魔と悪鬼という人間が生まれることがある。
業魔は、自身の呪力が周囲に溢れ出し、周りに天変地異を起こす危険な存在。自分でそれを止めることができない。
悪鬼は、愧死機構が働かなくなった人間で、理性が無く周囲の人間を次々と殺していく最も恐ろしい存在。これが現れると必ず大勢の人間が殺されてきた。しかも、普通の人間は愧死機構が働くため、悪鬼を殺すことができない。

人間の住む町の周囲には、バケネズミと呼ばれる種族が生きている。
大きさは人間の子供くらいで、知能は人間と同等程度ある。言語能力も有しており、さらに一部のバケネズミは人語を解する。
バケネズミはコロニーを作って高等な社会生活をしている。戦闘能力もあるが、人間の呪力の前には無力であるため、常に人間の決めたルールの下で生きている。


文庫では上中下3巻構成。
上巻は冒険活劇風。主人公の少女と友人たちが、バケネズミの戦争に巻き込まれる。
中巻下巻は詳しく書かないが、世界の設定を巧みに使ったストーリーが展開される。


この作者のミステリーの中でも最も面白いと評されている。
読んでいると止まらなくなる。


ちなみにタイトルの由来は、ドヴォルザークの「新世界より」から採られている。
ドヴォルザーク:交響曲第8番&第9番「新世界」




前文明の謎や、今の文明の成り立ちに迫っていく感じは、漫画版ナウシカを思い出した。



読んでいて続きが気になる度は「新世界より」のほうが上。
ナウシカはだんだんストーリーやナウシカの考え方についていけなくなるけど、「新世界より」は最後まで読者を引っ張っていってくれる。
【2011/03/20 16:23 】 | 書評 | 有り難いご意見(0) | トラックバック()
テクスチャ描画関数
テクスチャ描画する関数の決定版(?)。

汎用的にするのが目標。
機能は多彩。でも使い方は簡単。そういう風に、私はなりたい。


というわけで、
関数としては1つだけ。

void drawTexture(SpriteData data);

これ以上ないくらい単純明快。


では解説していきます。

drawTextureができること(いずれ他にも出てくるかも)
・テクスチャを指定できる
・描画する座標を指定できる
・描画サイズを指定できる
・アンカーポイントを指定できる
・回転して描画できる
・uv座標の切り取りができる
・減色ができる


これらのことを全部やるには、指定すべき変数がかなり多くなります。
それをぜんぶ関数の引数に持たせるのは冗長。
オーバーロードするにも組み合わせが多いし、デフォルト引数で対応するのも難しい。
という訳で、引数としては構造体を一つ渡すだけにしました。
この構造体にすべての変数が入っています。


struct SpriteData {
public:
TextureHandle_t hTex; //テクスチャハンドル
point_t pos; //描画座標
size_t size; //描画サイズ
point_t anchorPos; //テクスチャ座標のどこを描画座標に置くか(0.0~1.0)
float rad; //回転させる. 回転中心はテクスチャ中心。anchorPosではない
rect_t uvRect; //テクスチャの切り取りUV座標
color_t color; //減色

SpriteData(TextureHandle_t ihTex)
: hTex(ihTex), pos(0.f, 0.f), size(0.f,0.f), anchorPos(0.f, 0.f), rad(0.f)
, uvRect(0.f, 0.f, 1.f, 1.f)
{}
SpriteData& Tex(TextureHandle_t ihTex){this->hTex = ihTex; setOriginalSize(); return *this;}
SpriteData& Pos(aoPoint2 pos){this->pos = pos; return *this;}
SpriteData& Pos(float x, float y){return Pos(aoPoint2(x,y));}
SpriteData& Size(size_t size){this->size = size; return *this;}
SpriteData& Size(float w, float h){return Size(aoSize2(w,h));}
SpriteData& Anchor(point_t pos){this->anchorPos = pos; return *this;}
SpriteData& Anchor(float x, float y){return Anchor(aoPoint2(x,y));}
SpriteData& Rect(rect_t rect){this->pos = rect.LT(); this->anchorPos = point_t(0.f,0.f); this->size = rect.Size(); return *this;}
SpriteData& AngleRad(float rad){this->rad = rad; return *this;}
SpriteData& AngleDeg(float deg){this->rad = deg / 180.f * 3.14159265359f; return *this;}
SpriteData& UVRect(rect_t rect){this->uvRect = rect; return *this;}
SpriteData& Color(color_t col){this->color = col; return *this;}
SpriteData& Color(float r, float g, float b, float a = 1.f){return Color(color_t(r,g,b,a));}
};

【2011/03/20 00:43 】 | 自作エンジン | 有り難いご意見(0) | トラックバック()
Inputクラス・実装第2版
Inputクラスの実装。の第2版。
旧版はこちら

現状対応しているのは、大きさのあるボタンだけ。=つまりタッチスクリーン。

【2011/03/19 23:52 】 | 自作エンジン | 有り難いご意見(0) | トラックバック()
CoreGraphicsでフォント描画
フォント描画の仕方。


//フォント指定。postscript名、サイズ、エンコードタイプ
CGContextSelectFont(context, "Helvetica", 36.0, kCGEncodingMacRoman);

//上下反転させるためのマトリクス
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));

//フォントの枠、塗りつぶしなどのタイプ
CGContextSetTextDrawingMode(context, kCGTextFill);

//描画
CGContextShowTextAtPoint(context, 10.0, 30.0, "hello", strlen("hello"));

enum CGTextDrawingMode {
kCGTextFill, //塗りつぶし
kCGTextStroke, //枠だけ
kCGTextFillStroke, //枠と塗りつぶし
kCGTextInvisible, //非表示
kCGTextFillClip, //クリップ範囲の背景と塗りつぶし
kCGTextStrokeClip, //枠と背景
kCGTextFillStrokeClip, //塗りつぶしと枠と背景
kCGTextClip //クリップ範囲内の背景と文字塗りつぶしだけ
};
クリップ範囲ってどう決めるんだ?

テキストエンコーディングをMacRomanにしたい場合、
CGContextSelectFont()
CGContextShowTextAtPoint()

そうでない場合、
CGContextSetFont()
またはCGFontCreateWithPlatformFont()
CGContextSetFontSize()
CGContextShowGlyphsAtPoint()
注意:こちらの方式でフォントをセットした場合、描画はCGContextShowGlyphsAtPoint()を使うこと。
この指定だと、エンコーディングが指定できない。その場合、デフォルトのエンコーディングであるkCGEncodingFontSpecificが使われるため、CGContextShowTextAtPoint()が正しい動作をする保証がないらしい。

グリフを使った描画

CGFontRef helvetica = CGFontCreateWithFontName((CFStringRef)@"Helvetica");
CGContextSetFont(context, helvetica);
CGContextSetFontSize(context, 12.0);
CGContextSetTextDrawingMode(context, kCGTextFill);
// Next we'll display lots of glyphs from the font.
CGGlyph start = 0;
for(int y = 0; y < 20; ++y)
{
CGGlyph glyphs[32];
for(int i = 0; i < 32; ++i)
{
glyphs[i] = start + i;
}
start += 32;
CGContextShowGlyphsAtPoint(context, 10.0, 150.0 + 12 * y, glyphs, 32);
}
CGFontRelease(helvetica);

グリフって何?


公式サンプル



公式リファレンス

【2011/03/19 02:13 】 | iPhone | 有り難いご意見(0) | トラックバック()
CoreGraphics描画命令いろいろ
描画命令のいろいろを書いていきます。

コンテキストを表すctxはCGContextRef型の変数.
色を表すr,g,b,aはCGFloat. 0.0~1.0で指定。
widthはCGFloat.
その他はenumなど。


///////////////
色指定・線の色
CGContextSetRGBStrokeColor(ctx, r, g, b, a);

///////////////
色指定・塗りつぶし色
CGContextSetRGBFillColor(ctx, r, g, b, a);

///////////////
線の太さ指定
CGContextSetLineWidth(ctx, width);
【2011/03/18 18:23 】 | iPhone | 有り難いご意見(0) | トラックバック()
CoreGraphicsで自前のコンテキストを使う
CoreGraphics描画の詳細。

大まかな流れは前回の記事参照。


////////////////////////////////
コンテキストを自分で作成する

カレントコンテキストはもともとあるので、そこに直接描画すれば画面に表示することはできる。
しかし、自分でコンテキストを作ることももちろんできる。


ファイルSimpleCoreGraphicsView.h

@interface SimpleCoreGraphicsView : UIView {
CGContextRef ctxCanvas_;
void *dataCanvas_;
CGSize sizeCanvas_;
}
@end

【2011/03/18 17:17 】 | iPhone | 有り難いご意見(0) | トラックバック()
5分でCoreGraphicsで描画する
CoreGraphicsで描画するまでの流れ。
5分あればイケます。

【2011/03/18 16:44 】 | iPhone | 有り難いご意見(0) | トラックバック()
矩形構造体と描画
CGRectのような、 x,y,w,h を保持する矩形構造体は、
矩形が座標系に直交していることを前提としている。
だから、ナナメに置いてある長方形や他の矩形を表すことができない。

テクスチャをナナメに描画したい場合もあるので、それは
x,y,w,h,angle と傾け角度も含めて表すか、
(あるいはpos, anchorPoint, angle で座標とアンカー点と傾け角度で渡す)
point1,point2,point3,point4 で4点を直接持つ矩形構造体にするかが必要だ。

テクスチャ描画目的なら、矩形であることはたぶん前提なので、1番目で良さそうだ。
ゲームロジックに使う汎用四角形で3番目を使えば良さそう。

※矩形=長方形

【2011/02/13 13:31 】 | 自作エンジン | 有り難いご意見(0) | トラックバック()
他のアプリからの割り込み
ほかのアプリの通知が割り込んだときのエラー

2011-02-13 12:29:57.121 pball[3465:307] -[__NSCFType fire]: unrecognized selector sent to instance 0x134fd0
2011-02-13 12:29:57.196 pball[3465:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType fire]: unrecognized selector sent to instance 0x134fd0'
*** Call stack at first throw:
(
0 CoreFoundation 0x3587a987 __exceptionPreprocess + 114
1 libobjc.A.dylib 0x34a8249d objc_exception_throw + 24
2 CoreFoundation 0x3587c133 -[NSObject(NSObject) doesNotRecognizeSelector:] + 102
3 CoreFoundation 0x35823aa9 ___forwarding___ + 508
4 CoreFoundation 0x35823860 _CF_forwarding_prep_0 + 48
5 pball 0x00003e93 -[pballViewController startGame] + 38
6 pball 0x00003437 -[pballAppDelegate applicationDidBecomeActive:] + 46
7 UIKit 0x341d993f -[UIApplication _setActivated:] + 74
8 UIKit 0x341d98dd _alertItemStateChanged + 52
9 CoreFoundation 0x358310cd __CFNotificationCenterDarwinCallBack + 24
10 CoreFoundation 0x35817be7 __CFMachPortPerform + 210
11 CoreFoundation 0x3580f6ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26
12 CoreFoundation 0x3580f6c3 __CFRunLoopDoSource1 + 166
13 CoreFoundation 0x35801f7d __CFRunLoopRun + 520
14 CoreFoundation 0x35801c87 CFRunLoopRunSpecific + 230
15 CoreFoundation 0x35801b8f CFRunLoopRunInMode + 58
16 GraphicsServices 0x320c84ab GSEventRunModal + 114
17 GraphicsServices 0x320c8557 GSEventRun + 62
18 UIKit 0x341dc329 -[UIApplication _run] + 412
19 UIKit 0x341d9e93 UIApplicationMain + 670
20 pball 0x0000332b main + 74
21 pball 0x000032dc start + 40
)
terminate called after throwing an instance of 'NSException'
プログラムはシグナルを受信しました:“SIGABRT”。
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
【2011/02/13 13:20 】 | よくある罠 | 有り難いご意見(0) | トラックバック()
<<前ページ | ホーム | 次ページ>>