Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 预期标识符或';(';_Ios_Objective C_Cocos2d Iphone_Identifier - Fatal编程技术网

Ios 预期标识符或';(';

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"

我好像压扁不了这个虫子

我正在做一个小项目,试图将背景音频添加到我的应用程序中。在出现这个错误之前,我一直做得很好

.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
//
//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