0

iPhoneアプリケーションにパーティクルエフェクトを追加しようとしています。私のプロジェクトは、従来のUIKitを使用して作成されています。AppScaffoldテンプレートを使用していないため、スズメを手動で追加して設定する必要があります。私はやった#import "Sparrow.h"、そしてそれはうまく構築された。

問題は、SPViewを追加しようとしたときです。空白のピンクのビューが表示されます。何を間違えたのかわかりません。これが私のコードスニペットです:

Game.h

@implementation Game
- (id)initWithWidth:(float)width height:(float)height
{
    if (self = [super initWithWidth:width height:height])
    {
        SPQuad *quad = [SPQuad quadWithWidth:100 height:100];
        quad.color = 0xff0000;
        quad.x = 50;
        quad.y = 50;
        [self addChild:quad];
    }
    return self;
}
@end

viewControllerのviewDidload..で

- (void)viewDidLoad {
    [super viewDidLoad];
    // sparrow
    SP_CREATE_POOL(pool);    

    [SPStage setSupportHighResolutions:YES];

    SPView *spv = [[SPView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:spv];
    [spv release];

    spv.frameRate = 30;

    Game *game = [[Game alloc] init];
    spv.stage = game;
    [game release];
    [spv start];

    SP_RELEASE_POOL(pool);
}

その他の奇妙な症状は、.xibファイルにUIViewを作成し、そのクラスをSPViewに変更したことです。しかし、そのビューを使用すると、コンパイラーはそれをUIViewとして認識します。xCodeはヘッダーファイルを見ることができますが、コンパイラはどういうわけか見えないようです。もう1つの問題は、メソッド'SPImage * background = [SPImage imageWithContentsOfFile:@ "camera_test.png"];'を使用しようとしたのですが、実行するとこのエラーが発生します。reason: '+[NSBundle appBundle]: unrecognized selector sent to class 0x7a6890'.これは、スズメのカテゴリメソッド'appBundleが見つからないことを意味します。 '。しかし、このメソッドはソースコードに存在します!そしてそれは問題なくコンパイルされます。実行時にクラッシュするだけです。

ビルド設定を再確認しましたが、「その他のリンカーフラグ」など、すべてが正しく設定されていると思います-ObjC -load_all。何が問題なのかわかりません。

4

1 に答える 1

1

私は解決策を見つけました。ターゲットの「ビルド設定」で、「-ObjC -all_loadターゲット」列と「プロジェクト」列の両方の「その他のリンカーフラグ」を設定する必要があります。ターゲット列の設定が白く塗りつぶされているので、何もないと思いますが、実際には値があります!。Sparrowの「AppScaffold」プロジェクトの各ビルド設定オプションを1日かけて調べたところ、意図せずにこれが見つかりました。これは非常に注意が必要です。Projectで設定されていても-ObjC -all_load、Targetで設定されていなくても、プロジェクトは正常にビルドされますが、実行時に機能しないか、クラッシュすることさえあります。

強調表示されていない場合の「その他のリンカーフラグ」。 強調表示されていない場合の「その他のリンカーフラグ」設定。

強調表示された場合の「その他のリンカーフラグ」。うーん!ターゲット(AggScaffold)列に何かがあります! 強調表示されたときの「その他のリンカーフラグ」設定。 うーん! ターゲット(AggScaffold)列に何かがあります!

Sparrowフレームワークのスタッフには、この情報をチュートリアルに含めることをお勧めします。このような小さなディテールさえ欠けていると、誰かが一日中それを修正する可能性があります。

お役に立てれば。

PS。スズメフォーラムの私のこの質問へのリンク:http://forum.sparrow-framework.org/topic/adding-spview-to-a-uiview

于 2012-02-27T11:27:13.677 に答える