cocos2d-x 调用iOS摄像头 c++ 和 OC混编

本文介绍了如何在cocos2d-x游戏中使用c++和Objective-C混编调用iOS设备的摄像头。由于cocos2d-x本身不支持此功能,需要借助原生代码实现。通过一个详细的步骤和代码示例,展示了从检查设备、初始化到设置代理的关键过程。需要注意的是,混编中cocos2d的类需以cocos2d::前缀,并确保项目设置允许设备旋转为竖屏,以避免运行时错误。
摘要由CSDN通过智能技术生成

这几天在研究cocos2d-x中调用摄像头的功能。


cocos2d-x本身没有这个功能,只能调用原声代码实现。这就涉及到了c++和OC混编码。网上找了好久,都没有什么靠谱的例子。大多数都是下面这种

-(id) init
{
    
    if( (self=[super init] )) {
        
        CCMenuItem *menuItem1 = [CCMenuItemImage itemFromNormalImage:@"phone_nor.png"
                                                       selectedImage:@"phone_pre.png"
                                                              target:self
                                                            selector:@selector(getPhoto:)];
            CCMenu *menu = [CCMenu menuWithItems:menuItem1,nil];
        [menu setPosition(40, 40)];
        [self addChild:menu];
    }
    return self;
    

}

-(void)getPhoto:(UIImagePickerControllerSourceType)sourceType{
    
    UIImagePickerController *picker    = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.wantsFullScreenLayout = YES;
    [picker presentModalViewController:picker animated:YES];
    
    [[[CCDirector sharedDirector] openGLView] addSubview:picker.view];
}

写的不清不楚。最重要的就是这条

picker.delegate = self;
这个self不是坑爹么。按照我的理解,这个代码绝对是要写到cocos2d的scene或者layer类中。self就是node的子类。怎么可能做代理?????

后来好不容易找到http://www.cnblogs.com/hanhongmin/p/3498102.html这个教程,才算是豁然开朗。

下面详细记录下我的代码。争取让大部分新手也可以看懂


首先看文件结构


注意,这个HelloWorldScene必须是.mm后缀的,因为只有.mm后缀的文件,才可以既写cpp的代码,又写oc的代码

我们主要关注HelloW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值