我不是白痴,但是头文件有时让我觉得自己像个白痴。我有可能是一个过于复杂的设置,有一个我无法解决的错误。在这里,它是最简单的细节,我可以使它…
-
我有一个包含模型类的控制器类。
-
我有一个场景类来捕捉动作并与控制器通信。
-
我有一个层类,它与模型类进行对话以输出模型的状态。
-
场景类包含仅用于输出的层类。
-
场景必须包含由cocos2d框架确定的层。
-
特定的场景类派生自包含对控制器类的引用的rootscene类。
-
特定的层类派生自包含对模型类的引用的rootlayer类。
-
控制器负责创建场景,场景负责创建层。
当生成一个层并将控制器的模型传递到该层的模型(在
AScene.m
)我得到的是“对成员‘模型’的要求,不是结构或联合体”。演员阵容不起作用,我也不知道如何让这些课程互相交流。我认为部分问题可能是控制器类包含模型类。
控制器H
#import <Foundation/Foundation.h>
@class Model;
@class AScene;
@interface Controller : NSObject {
Model *Model;
}
@property (nonatomic, retain) Model *Model;
-(void)runScene;
控制器M
#import "Controller.h"
#import "Model.h"
#import "AScene.h"
@implementation Controller
@synthesize Model;
- (void)runScene {
AScene *newScene = [[AScene alloc] init];
newScene.controller = self;
}
RooSt.h
#import "cocos2d.h"
@class Controller;
@interface RootScene : Scene {
Controller *controller;
}
@property (nonatomic, retain) Controller *controller;
@end
根目录
#import "RootScene.h"
#import "Controller.h"
@implementation RootScene
@synthesize controller;
- (id) init {
self = [super init];
if (self != nil) {
//
}
return self;
}
- (void) dealloc {
[controller release];
[super dealloc];
}
@end
天冬氨酸
#import "RootScene.h"
@class ALayer;
@class Model;
@interface AScene : RootScene {
}
@end
山羊草
#import "AScene.h"
#import "ALayer.h"
#import "Model.h"
@implementation AScene
- (id) init {
self = [super init];
if (self != nil) {
ALayer *newLayer = [ALayer node];
newLayer.model = controller.Model; // <-- Request for member 'Model' in something not a stucture or union
[self addChild:statusScreenLayer];
}
return self;
}
- (void) dealloc {
[super dealloc];
}
@end
根层
#import "cocos2d.h"
@class Model;
@interface RootLayer : Layer {
Model *model;
}
@property (nonatomic, retain) Model *model;
@end
根层
#import "RootLayer.h"
#import "Model.h"
@implementation RootLayer
@synthesize model;
- (id) init {
self = [super init];
if (self != nil) {
//
}
return self;
}
- (void) dealloc {
[model release];
[super dealloc];
}
@end
一层一层
#import "RootLayer.h"
@interface ALayer : RootLayer {
}
-(void) draw;
@end
阿拉耶.M
#import "ALayer.h"
@implementation ALayer
-(void) draw {
// draw based on state of the model
}
@end