[英]expected identifier or '('
I can't seem to squash this bug! 我似乎无法解决这个错误!
I am working on a small project, trying to add background audio to my app. 我正在做一个小项目,试图将背景音频添加到我的应用中。 I was doing pretty well until this error showed up.
在出现此错误之前,我一直表现不错。
Error on line 52 on .m file: .m文件的第52行错误:
//
// UDMenuScene.m
// iLabyrinth
//
// Created by Rolandas Razma on 5/12/10.
// Copyright 2010 UD7. All rights reserved.
//
#import "UDMenuScene.h"
#import "UDPickMapScene.h"
#import "SimpleAudioEngine.h"
#import "UDHelpScene.h"
#import "iLabyrinth.h"
#import "CCDirector.h"
@implementation UDMenuScene
#pragma mark -
#pragma mark NSObject
- (id)init
{
if( (self = [super init]) )
{
[self addChild:[UDMenuLayer node]];
}
return self;
}
@end
@implementation UDMenuLayer
#pragma mark -
#pragma mark NSObject
- (id)init {
if( (self = [super init]) )
{
[self setIsTouchEnabled: YES];
CGSize _winSize = [[CCDirector sharedDirector] winSize];
//AVAudioPlayer *player;
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"menu" ofType:@"mp3"]];
NSError *error;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
// Add background
CCSprite *sprite = [CCSprite spriteWithFile:[NSString stringWithFormat:@"menu%@.png", (isDeviceIPad()?@"~ipad":([iLabyrinth hightRes]?@"@2x":@""))]];
[sprite setAnchorPoint:CGPointZero];
[self addChild:sprite];
_backgroundLayer = [CCSpriteBatchNode batchNodeWithFile:[iLabyrinth textureName]];
[[_backgroundLayer texture] setAliasTexParameters];
[self addChild:_backgroundLayer];
// Add "Pay" button
CCSprite *playSprite = [CCSprite spriteWithSpriteFrameName:@"play.png"];
[playSprite setTag:MenuButtonPlay];
[playSprite setAnchorPoint:CGPointMake(0.5f, 0.0f)];
[playSprite setPosition:CGPointMake(_winSize.width /2, _winSize.height /2)];
[_backgroundLayer addChild:playSprite];
// Add "Help" button
CCSprite *helpSprite = [CCSprite spriteWithSpriteFrameName:@"help.png"];
[helpSprite setAnchorPoint:CGPointMake(0.5f, 1.0f)];
[helpSprite setTag:MenuButtonHelp];
[helpSprite setPosition:CGPointMake(_winSize.width /2, _winSize.height /2 -[helpSprite boundingBox].size.height /2)];
[_backgroundLayer addChild:helpSprite];
}
return self;
}
#pragma mark -
#pragma mark CCStandardTouchDelegate
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint touchPoint = [_backgroundLayer convertTouchToNodeSpace:[touches anyObject]];
for( CCSprite *sprite in [_backgroundLayer children] ){
if( [sprite tag] <= 0 ) continue;
if( CGRectContainsPoint([sprite boundingBox], touchPoint) ){
[sprite setColor:ccGREEN];
[[SimpleAudioEngine sharedEngine] playEffect:@"click.caf"];
switch ( [sprite tag] ) {
case MenuButtonPlay: {
[[CCDirector sharedDirector] replaceScene:[CCTransitionSplitRows transitionWithDuration:1.0f scene:[UDPickMapScene node]]];
break;
}
case MenuButtonHelp: {
[[CCDirector sharedDirector] replaceScene:[CCTransitionSplitRows transitionWithDuration:1.0f scene:[UDHelpScene node]]];
break;
}
}
return;
}
}
}
@end
and here is my .h file: 这是我的.h文件:
//
// UDMenuScene.h
// iLabyrinth
//
// Created by Rolandas Razma on 5/12/10.
// Copyright 2010 UD7. All rights reserved.
//
#import "cocos2d.h"
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
typedef enum {
MenuButtonPlay =1,
MenuButtonHelp,
MenuButtonPlayHeaven,
} MenuButton;
@class player;
@interface UDMenuScene : CCScene {
}
@property (nonatomic, retain) AVAudioPlayer *player;
@end
@interface UDMenuLayer : CCLayer {
CCSpriteBatchNode *_backgroundLayer;
}
@end
You are declaring a class called player
. 您要声明一个名为
player
的类。
@class player;
(forward declaration saying player
is a class type) (说
player
是班级类型的向前声明)
but you are also using player
as an identifier 但您也使用
player
作为标识符
@property (nonatomic, retain) AVAudioPlayer *player;
(property declaration saying player
is an instance of AVAudioPlayer
). (属性声明说
player
是AVAudioPlayer
一个实例)。
To prevent similar errors, never ever declare classes with names starting with lowercase letter (use Player
instead) and also use a custom prefix to avoid name collisions (eg MYPlayer
). 为了避免类似的错误,永远不要声明名称以小写字母开头的类(改用
Player
),也不要使用自定义前缀来避免名称冲突(例如MYPlayer
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.