2012-07-06 93 views
0

我在http://www.cocos2dbook.com上关注着这本书,此刻,我正在制作一个游戏杆。虽然当我运行我的游戏,我得到的编译此错误:在我的游戏中使用SneakyInput发生奇怪的错误

Undefined symbols for architecture armv7: 
"_OBJC_CLASS_$_SneakyJoystick", referenced from: 
    objc-class-ref in GameplayLayer.o 
"_OBJC_CLASS_$_SneakyJoystickSkinnedBase", referenced from: 
    objc-class-ref in GameplayLayer.o 
ld: symbol(s) not found for architecture armv7 
collect2: ld returned 1 exit status 

这是我的头文件:

// foundation 
#import <Foundation/Foundation.h> 

// cocos2D and GameCenter 
#import "cocos2d.h" 
#import <GameKit/GameKit.h> 

// Joystick and buttons 
#import "SneakyJoystick.h" 
#import "SneakyButton.h" 

#import "SneakyJoystickSkinnedBase.h" 
#import "SneakyButtonSkinnedBase.h" 


// sound fx 
#import "SimpleAudioEngine.h" 

#import "Helpers.h" 
#import "GameScene.h" 

@interface GameplayLayer : CCLayer { 

    // initial player sprite 
    CCSprite *player; 

    // player health 
    int playerStartHealth; 

    // joystick 
    SneakyJoystick *leftJoystick; 

} 

@end 

而且我.m文件(仅操纵杆方法):

- (void) initJoystickAndButtons { 
    CGSize screen = [CCDirector sharedDirector].winSize;  
    CGRect joystickBaseDimensions = 
    CGRectMake(0, 0, 128.0f, 128.0f);      
    CGPoint joystickBasePosition;         

    joystickBasePosition = ccp(screen.width*0.0625f, 
          screen.height*0.052f); 

    SneakyJoystickSkinnedBase *joystickBase = 
    [[[SneakyJoystickSkinnedBase alloc] init] autorelease];   
    joystickBase.position = joystickBasePosition;     
    joystickBase.backgroundSprite = 
     [CCSprite spriteWithFile:@"dpadDown.png"]; 
    joystickBase.thumbSprite = 
     [CCSprite spriteWithFile:@"joystickDown.png"];     // 8 
    joystickBase.joystick = [[SneakyJoystick alloc] 
        initWithRect:joystickBaseDimensions]; // 9 
    leftJoystick = [joystickBase.joystick retain];    // 10 
    [self addChild:joystickBase]; 
} 

- (void) applyJoystick:(SneakyJoystick *)aJoystick toNode:(CCNode *)tempNode forTimeDelta (float)deltaTime { 
    CGPoint scaledVelocity = ccpMult(aJoystick.velocity, 1024.0f); // 1 

    CGPoint newPosition = 
    ccp(tempNode.position.x + scaledVelocity.x * deltaTime, 
     tempNode.position.y + scaledVelocity.y * deltaTime);  // 2 

    [tempNode setPosition:newPosition];       // 3 
} 

#pragma mark - 
#pragma mark Update Method 
- (void) update:(ccTime)deltaTime { 
    [self applyJoystick:leftJoystick toNode:player forTimeDelta:deltaTime]; 
} 
+0

显示自项目 – Dustin 2012-07-06 17:06:29

+0

相关的代码@DustinRowland完成。 – beakr 2012-07-06 17:14:25

+0

看起来你正在为错误的目标而建造。你在为什么操作系统和设备? – Dustin 2012-07-06 17:35:56

回答

1

这些是链接错误而不是代码错误。您需要包含定义缺失符号的文件(代码或库):SneakyJoystick和SneakyJoystickSkinnedBase。

(我不熟悉,特别是那些功能,所以我不知道他们是否以代码的形式或作为某文件正在提供。)