Я скопировал этот пост из здесь , что может помочь ответить на ваш вопрос. Я считаю, что было бы лучше использовать функции cocos2d с оболочками cocos2d, но вы можете реализовать с другими, которые просто не интегрируются.
Если есть какие-то новички (например, я), которым нужна дополнительная помощь по интеграции элемента UIKit с cocos2d, это может помочь. Как вы прочли в первом посте этой темы, Blue Ether написал оболочку для манипулирования UIViews. Что такое UIView? Посмотрите на http://developer.apple.com/iphone/library/documentation/uikit/reference/uikit_framework/Introduction/Introduction.html,, прокрутите немного вниз, и вы увидите диаграмму различных элементов UIView; такие вещи, как UIButton, UISlider, UITextView, UILabel, UIAlertView, UITableView, UIWindow и так далее. Их более 20. Вы можете использовать код Blue Ethas, чтобы обернуть любой из них внутри cocos2d. Здесь я заверну UIButton, но поэкспериментирую с вашим любимым выбором элемента UIView.
Создайте новый проект Cocos 2d Application.
Создайте новый файл NSObject и назовите его CCUIViewWrapper. Это даст вам файлы CCUIViewWrapper.h и CCUIViewWrapper.m. Отредактируйте (скопируйте и вставьте) их так, чтобы они выглядели так, как их определил Blue Ether (см. Первый пост в этой теме.
Сделайте свой HelloWorld.h похожим на это
// HelloWorldLayer.h
#import "cocos2d.h"
#import <UIKit/UIKit.h>
#import "CCUIViewWrapper.h"
@interface HelloWorld : CCLayer
{
UIButton *button;
CCUIViewWrapper *wrapper;
}
+(id) scene;
@end
и ваш HelloWorld.m вот так
// HelloWorldLayer.m
#import "HelloWorldScene.h"
// HelloWorld implementation
@implementation HelloWorld
+(id) scene
{
CCScene *scene = [CCScene node];
HelloWorld *layer = [HelloWorld node];
[scene addChild: layer];
return scene;
}
-(void)buttonTapped:(id)sender
{
NSLog(@"buttonTapped");
}
// create and initialize a UIView item with the wrapper
-(void)addUIViewItem
{
// create item programatically
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Touch Me" forState:UIControlStateNormal];
button.frame = CGRectMake(0.0, 0.0, 120.0, 40.0);
// put a wrappar around it
wrapper = [CCUIViewWrapper wrapperForUIView:button];
[self addChild:wrapper];
}
-(id) init
{
if( (self=[super init] )) {
[self addUIViewItem];
// x=160=100+120/2, y=240=260-40/2
wrapper.position = ccp(100,260);
[wrapper runAction:[CCRotateTo actionWithDuration:4.5 angle:180]];
}
return self;
}
- (void) dealloc
{
[self removeChild:wrapper cleanup:true];
wrapper = nil;
[button release];
button=nil;
[super dealloc];
}
@end
Построй и беги. Это должно произвести вращающуюся кнопку в середине сцены. Вы можете коснуться кнопки, пока она вращается. Он будет писать текстовое сообщение в консоли.