Ios 预期标识符或';(';
我好像压扁不了这个虫子 我正在做一个小项目,试图将背景音频添加到我的应用程序中。在出现这个错误之前,我一直做得很好 .m文件第52行出错:Ios 预期标识符或';(';,ios,objective-c,cocos2d-iphone,identifier,Ios,Objective C,Cocos2d Iphone,Identifier,我好像压扁不了这个虫子 我正在做一个小项目,试图将背景音频添加到我的应用程序中。在出现这个错误之前,我一直做得很好 .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"
//
// 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
//
//UDMenuScene.m
//伊拉比林
//
//由罗兰达斯·拉兹玛于2010年5月12日创作。
//版权所有2010 UD7。保留所有权利。
//
#导入“UDMenuScene.h”
#导入“UDPickMapScene.h”
#导入“SimpleAudioEngine.h”
#导入“UDHelpScene.h”
#导入“iLabyrinth.h”
#导入“CCDirector.h”
@UDMenuScene的实现
#布拉格标记-
#pragma标记对象
-(id)init
{
if((self=[super init]))
{
[self addChild:[UDMenuLayer节点]];
}
回归自我;
}
@结束
@UDMenuLayer的实现
#布拉格标记-
#pragma标记对象
-(id)init{
if((self=[super init]))
{
[自我设置已启用:是];
CGSize _winSize=[[CCDirector sharedDirector]winSize];
//AVAudioPlayer*播放器;
NSURL*url=[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@“mp3”类型的“菜单”;
n错误*错误;
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url错误:&error];
//添加背景
CCSprite*sprite=[CCSprite spriteWithFile:[NSString stringWithFormat:@“menu%@.png”,(isDevicePad()?@“~ipad:([iLabyrinth hightRes]?@“@2x:@”)];
[sprite setAnchorPoint:CGPointZero];
[self addChild:sprite];
_backgroundLayer=[CCSpriteBatchNode batchNodeWithFile:[iLabyrinth textureName]];
[[u backgroundLayer纹理]设置AliasTextParameters];
[self addChild:_backgroundLayer];
//添加“支付”按钮
CCSprite*playSprite=[CCSprite spritewithpriteframename:@“play.png”];
[播放精灵设置标签:菜单按钮播放];
[playSprite setAnchorPoint:CGPointMake(0.5f,0.0f)];
[播放精灵设置位置:CGPointMake(_winSize.width/2,_winSize.height/2)];
[_backgroundlayeraddchild:playSprite];
//添加“帮助”按钮
CCSprite*helpSprite=[CCSprite spritewithpriteframename:@“help.png]”;
[helpSprite setAnchorPoint:CGPointMake(0.5f,1.0f)];
[helpSprite设置标签:菜单按钮帮助];
[helpSprite设置位置:CGPointMake(_winSize.width/2,_winSize.height/2-[helpSprite boundingBox].size.height/2)];
[[u backgroundLayer addChild:helpSprite];
}
回归自我;
}
#布拉格标记-
#pragma标记
-(无效)ccTouchesEnded:(NSSet*)接触事件:(UIEvent*)事件{
CGPoint接触点=[[U backgroundLayer convertTouchToNodeSpace:[接触任何对象]];
用于(CCSprite*sprite在[\u背景层子对象]){
如果([sprite tag]您正在声明一个名为player
的类
@class播放器;
(转发声明说player
是类类型)
但是您也使用player
作为标识符
@property(非原子,保留)AVAudioPlayer*player;
(表示player
的属性声明是AVAudioPlayer
的一个实例)
为了防止类似错误,永远不要声明名称以小写字母开头的类(改用Player
),也不要使用自定义前缀来避免名称冲突(例如MYPlayer
)。您正在声明一个名为Player
的类
@class播放器;
(转发声明说player
是类类型)
但是您也使用player
作为标识符
@property(非原子,保留)AVAudioPlayer*player;
(表示player
的属性声明是AVAudioPlayer
的一个实例)
为防止类似错误,永远不要声明名称以小写字母开头的类(改用Player
),也不要使用自定义前缀以避免名称冲突(例如MYPlayer
).哪一行是第52行?哪一行是第52行?-这有助于提供一个失败的小测试用例。删除代码行,直到你有了问题并且没有多余的代码@class player;
应该是@class player;
。这不是你的问题,你没有帮助…哪一行是第52行?哪一行是第52行?-这有助于提供失败的小测试用例。删除代码行,直到您遇到问题,并且没有多余的代码@class player;
应该是@class player;
。这不是您的问题,您认为这没有帮助……您是对的,这与头文件中的@class声明有关,尽管我认为问题与pro无关perty声明;看起来您可以声明标识符为类名的属性。但是,由于播放器尚未在-[UDMenuLayer init]中声明
它被解释为向前声明的玩家
类。@AlexRozanski是的,问题不在于声明。但是,一旦您尝试使用属性并分配给它,就会出现问题。从我所看到的,他没有从任何地方分配给它。如果他使用属性自动合成,生成的ivar将\u player
,而不是player
@AlexRozanski这是真的。忽略了这一点。他试图分配到类:)你们太聪明了:)我声明类是因为如果我不这样做,我会得到“未知类型名称‘player’”。为了正确的编码格式,我已经将其全部重命名为myPlayer并删除了该类,但现在我仍然有我提到的原始错误和新错误。有什么想法吗?非常感谢。你说得对,这与头文件中的@class声明有关,尽管我认为问题与属性声明无关;看起来你可以声明一个属性,其标识符是类名。但是,由于player
尚未在-[UDMenuLayer init]
中声明,因此它被解释为forward-d
//
// 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