我正在使用cocos2d开发iPhone 2d游戏.我需要一个选择器.是否可以在cocos2d中使用Picker!如果可能的话告诉我,我怎样才能在cocos2d中使用Picker?
是的,您可以将基于标准UIView的类与Cocos2D类混合搭配.
在您的应用程序委托中,当您启动Director时,您创建了一个UIWindow并将Director附加到它.您还可以在appdelegate中保存对窗口的引用.现在,您可以创建UIViews并将其添加到Window,以及像往常一样通过导向器操作cocos2d节点.
从这里开始,只需创建UIPickerView并将其添加到窗口即可.配置UIPickerView本身就是一项完整的任务...... Nitrex88有一个关于这个主题的好视频 .另外,请查看UICatalog,不仅可以获得UIPickerView的实例,还可以查看更多UIView子类.
这是一个将简单的UIPicker添加到cocos2d应用程序的示例:
#import#import #import "cocos2d.h" @interface AppDelegate { UIWindow *window; NSArray *pickerValues; } @property (nonatomic, retain) UIWindow window; @property (nonatomic, retain) NSArray *pickerValues; @end @implementation AppDelegate @synthesize window, pickerValues; -(void)applicationDidFinishLaunching:(UIApplication *)application { // Create Window window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [window setUserInteractionEnabled:YES]; [window setMultipleTouchEnabled:YES]; // Set up Director and attach to window [[Director sharedDirector] attachInWindow:window]; [[Director sharedDirector] setLandscape:YES]; [[Director sharedDirector] runWithScene:[MyScene node]]; // Create one large view and rotate the coordinates to landscape UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0.0f,0.0f,480.0f, 320.0f)]; parentView.transform = CGAffineTransformIdentity; parentView.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); parentView.bounds = CGRectMake(0.0f, 0.0f, 480.0f, 320.0f); // Initialize picker and its data source pickerValues = [[NSArray alloc] initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",nil]; UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0f, 195.0f, 320.0f, 125.0f)]; [pickerView setDelegate:self]; // Attach picker to parent view and parent view to window [parentView addSubview:pickerView]; [window addSubview:parentView]; [window makeKeyAndVisible]; } - (void) dealloc { [window release]; [pickerValues release]; [super dealloc]; } // ==================== // UIPicker Callbacks // ==================== // Fire when new picker values are selected - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { NSString *numberSequence = [NSString stringWithFormat:@"Sequence: %@%@%@", [pickerValues objectAtIndex:[thePickerView selectedRowInComponent:0]], [pickerValues objectAtIndex:[thePickerView selectedRowInComponent:1]], [pickerValues objectAtIndex:[thePickerView selectedRowInComponent:2]]]; NSLog(numberSequence); } // Number of picker wheels in the picker - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 3; } // Number of items in each picker wheel - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return [pickerValues count]; } // Title for Row # - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [pickerValues objectAtIndex:row]; } // Row height in pixels - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { return 40.0; } // Column width in pixels - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { return 90.0f; } // ==================== @end