我正在尝试向我的 iPhone 应用程序添加一些粒子效果。我的项目是使用传统的 UIKit 创建的。我没有使用 AppScaffold 模板,因此我必须手动添加和设置 sparrow。我做了#import "Sparrow.h"
,并且构建得很好。
问题是当我尝试添加 SPView 时。它只显示一个空白的粉红色 View 。我不知道我做错了什么。这是我的代码片段:
游戏.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。但是当我使用该 View 时,编译器仍然将其识别为 UIView。就像 xCode 可以看到头文件,但编译器却看不到一样。另一个问题是我尝试使用方法 'SPImage *background = [SPImage imageWithContentsOfFile:@"camera_test.png"];',但是当我运行它时,它给出了此错误 reason: '+[NSBundle appBundle]:无法识别的选择器发送到类 0x7a6890'。
这意味着它找不到麻雀类别方法'appBundle'。但这个方法在源代码中确实存在!并且编译没有问题。它只是在运行时崩溃。
我仔细检查了build设置,我认为所有设置都正确,例如“其他链接器标志”为 -ObjC -load_all
。我不知道出了什么问题。
最佳答案
我找到了解决方案。在目标的“build设置”中,我必须在“其他链接器标志”中为目标和项目列设置 -ObjC -all_load
。目标列的设置是白色的,所以我认为什么都没有,但实际上它确实有一个值!我花了一天时间检查 Sparrow 'AppScaffold' 项目中的每个build设置选项,无意中发现了这一点。这非常棘手。即使 -ObjC -all_load
在 Project 中设置,但不在 Target 中设置,项目仍然可以正常构建,但在运行时将无法工作甚至崩溃。
未突出显示时的“其他链接器标志”。
“其他链接器标志”突出显示。啊!目标(AggScaffold)列中有东西!
我建议 Sparrow 框架工作人员将此信息包含在他们的教程中。即使错过这样一个小细节,也可能会导致有人花一整天的时间来修复它。
希望这对您有所帮助。
PS。链接到我在麻雀论坛中的这个问题:http://forum.sparrow-framework.org/topic/adding-spview-to-a-uiview关于ios - 将 SPView 添加到现有 iOS 项目显示粉红色屏幕(Sparrow Framework),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462259/