0

我正在尝试向我的 iPhone 应用程序添加一些粒子效果。我的项目是使用传统的 UIKit 创建的。我没有使用 AppScaffold 模板,所以我必须手动添加和设置 sparrow。我做到了#import "Sparrow.h",它构建得很好。

问题是当我尝试添加 SPView 时。它只是显示一个空白的粉红色视图。我不知道我做错了什么。这是我的代码片段:

游戏.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 可以看到头文件,但编译器不知何故看不到。另一个问题是我尝试使用方法'SPImage *background = [SPImage imageWithContentsOfFile:@"camera_test.png"];',但是当我运行它时,它给出了这个错误,reason: '+[NSBundle appBundle]: unrecognized selector sent to class 0x7a6890'.这意味着它找不到麻雀类别方法'appBundle '。但是这个方法在源代码中确实存在!它编译没有问题。它只是在运行时崩溃。

我仔细检查了构建设置,我认为我的所有设置都正确,例如 'Other linker flags' as -ObjC -load_all. 我不知道有什么问题。

4

1 回答 1

1

我找到了解决方案。在目标的“构建设置”中,我必须-ObjC -all_load在“目标”和“项目”列的“其他链接器标志”中设置。目标列的设置被涂白了,所以我认为什么都没有,但实际上它实际上有一个值!。我花了一天时间浏览 Sparrow 'AppScaffold' 项目中的每个构建设置选项,无意中发现了这一点。这是非常棘手的。即使-ObjC -all_load在 Project 中设置但未在 Target 中设置,该项目仍然可以正常构建,但它不会在运行时工作甚至崩溃。

未突出显示时的“其他链接器标志”。 未突出显示时的“其他链接器标志”设置。

突出显示时的“其他链接器标志”。啊! 目标(AggScaffold)列中有东西! 突出显示时的“其他链接器标志”设置。 啊! 目标(AggScaffold)列中有东西!

我建议 Sparrow 框架的工作人员在他们的教程中包含这些信息。即使是这样的一个小细节也可能会导致某人花一整天的时间来修复它。

希望这可以帮助。

PS。在麻雀论坛中链接到我的这个问题:http: //forum.sparrow-framework.org/topic/adding-spview-to-a-uiview

于 2012-02-27T11:27:13.677 回答