Cocos2d上使用自定义字体的例外

时间:2012-07-27 01:48:13

标签: objective-c ios cocos2d-iphone

我正在尝试使用自定义字体制作菜单,但它似乎不起作用。 这是代码:

- (id) init
{
    if (self = [super init])
    {
        CGSize size = [[CCDirector sharedDirector] winSize];
        [CCMenuItemFont setFontName:@"PC Senior Regular"];
        [CCMenuItemFont setFontSize:18];
        CCMenuItemFont *menu1 = [CCMenuItemFont itemFromString:@"Music ON" target:self selector:@selector(musicToggle)];
        CCMenuItemFont *menu2 = [CCMenuItemFont itemFromString:@"Back" target:self selector:@selector(back)];
        CCMenu *menu = [CCMenu menuWithItems:menu1, menu2, nil];
        [menu setPosition:ccp(size.width / 2 , size.height / 2)];
        [menu alignItemsVertically];
        [self addChild:menu];
    }

以下是我的info.plist中的代码:

<key>UIAppFonts</key>
    <array>
        <string>PC Senior Regular.ttf</string>
        <string>senior.ttf</string>
    </array>

例外:

2012-07-27 05:42:35.369 Busterball[16089:10a03] In options
2012-07-27 05:42:35.371 Busterball[16089:10a03] -[__NSCFConstantString sizeWithZFont:]: unrecognized selector sent to instance 0xb0670
2012-07-27 05:42:35.372 Busterball[16089:10a03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString sizeWithZFont:]: unrecognized selector sent to instance 0xb0670'

我尝试过使用senior.ttf,只是高级等。 这两种字体都被添加为项目的目标。我仔细检查了正确的类型情况。 出了什么问题?

2 个答案:

答案 0 :(得分:0)

你尝试过这样的事吗?

CCLabelTTF *label = [CCLabelTTF labelWithString:"Some Text" fontName:@"MyFont.TTF" fontSize:24.0];
CCMenuItem *item = [CCMenuItemLabel itemWithLabel:label target:self selector:@selector(myFunction)];
CCMenu *menu = [CCMenu menuWithItems:item];
[self addChild:menu];

您的info.plist看起来正确,此代码对我有用。也就是说,我建议设置断点并尝试找出错误的来源。

答案 1 :(得分:0)

无效的参数异常意味着您尝试使用无法识别的方法。问题是你的sizeWithZFont方法。我试图在cocos2d文档中搜索,这不是一个方法。