在 cocos2d 中可以使用 UIPickerView 吗?可以使用、cocos2d、UIPickerView

2023-09-06 09:48:02 作者:时光乱了年华

我正在使用 cocos2d 开发 iPhone 2d 游戏.我需要一个选择器.是否可以在 cocos2d 中使用 Picker !如果可能,请告诉我,如何在 cocos2d 中使用 Picker?

I am developing iPhone 2d game by using cocos2d. I need a Picker. Is it possible to use Picker in cocos2d ! If possible then tell me, How can I use a Picker in cocos2d ?

推荐答案

是的,您可以将基于标准 UIView 的类与 Cocos2D 类混合搭配.

Yes, you can mix and match standard UIView based classes with Cocos2D classes.

在您的应用程序委托中,当您启动 Director 时,您创建了一个 UIWindow 并将 Director 附加到它.您还可以在 appdelegate 中保存对窗口的引用.现在您可以创建 UIViews 并将其添加到 Window,以及像往常一样通过 director 操作 cocos2d 节点.

In your application delegate, when you started up the Director, you created a UIWindow and attached the Director to it. You can also save a reference to the window in your appdelegate. Now you can create and add UIViews to the Window, as well as manipulate cocos2d nodes as usual through the director.

从这里开始,只需创建一个 UIPickerView 并将其添加到窗口中即可.配置 UIPickerView 本身就是一项完整的任务...... Nitrex88 有一个 关于该主题的精彩视频 .另外,请查看 UICatalog 以获得可靠的示例不仅是 UIPickerView,还有更多 UIView 子类.

From here, it's just a matter of creating a UIPickerView, and adding it to the window. Configuring the UIPickerView is a whole task unto itself... Nitrex88 has a good video on the subject . Also, check out UICatalog for a solid example not just of UIPickerView, but many many more UIView subclasses.

下面是一个向 cocos2d 应用添加一个简单的 UIPicker 的示例:

Here's an example of adding a trivial UIPicker to a cocos2d app:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#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
 
精彩推荐
图片推荐