objective-c中实体组件模式的可用框架?
我试图找到支持实体组件模式的objective-c框架。我看了一下Cocos2d,Kobold2d,KoboldTouch。。但它们似乎都与此无关。如果有objective-c可用的框架,有人可以指导我吗?您可以手动将实体组件模式添加到cocos2d/etc,尽管它没有直接内置到API中objective-c中实体组件模式的可用框架?,objective-c,Objective C,我试图找到支持实体组件模式的objective-c框架。我看了一下Cocos2d,Kobold2d,KoboldTouch。。但它们似乎都与此无关。如果有objective-c可用的框架,有人可以指导我吗?您可以手动将实体组件模式添加到cocos2d/etc,尽管它没有直接内置到API中 在实体中使用-addChild:(等)添加组件 在组件中使用-parent访问其实体 在组件中使用-update:更新其实体 SomeCCNodeEntity.m - (id)init { if (se
-addChild:
(等)添加组件-parent
访问其实体-update:
更新其实体- (id)init {
if (self = [super init])
{
[self addChild:[MoveComponent node]];
}
return self;
}
CGPoint velocity;
- (id)init {
if (self = [super init])
{
velocity = CGPointMake(0, -50);
[self scheduleUpdate];
}
return self;
}
- (void)update:(ccTime)delta {
[[self parent] setPosition:ccpAdd([[self parent] position], ccpMult(velocity, delta))];
}
MoveComponent.m
- (id)init {
if (self = [super init])
{
[self addChild:[MoveComponent node]];
}
return self;
}
CGPoint velocity;
- (id)init {
if (self = [super init])
{
velocity = CGPointMake(0, -50);
[self scheduleUpdate];
}
return self;
}
- (void)update:(ccTime)delta {
[[self parent] setPosition:ccpAdd([[self parent] position], ccpMult(velocity, delta))];
}
只要调用组件的-update:方法,上面的代码就会移动实体。这在Learn-Cocos2d中有一点介绍:
至于不同实体之间的消息传递系统,您还必须自己启动。苹果的API利用委托、通知和观察者的思想告诉其他对象一些事情。只有一个对象可以是委托,以执行另一个对象的可选或必需任务。多个对象可以注册通知或成为观察者
这可能会很快变得复杂,特别是如果有10个对象注册为观察者,并且它们接收观察消息的顺序很重要。他们是否应该根据他们注册的顺序获得信息,如FIFO或LIFO?更复杂的事情?等等