本站文章均为 李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/743.html
☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
Cocos2dx系列博文的上一篇详细介绍了如何在Xcode中利用jni调用Android的Java层代码,还没有看过的童鞋,请移步到如下博文:
【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
本篇继续介绍另外一个在Cocos2dx中必经之路:在Cocos2dx中调用苹果Api以实现后期iOS的GameCenter和iap的相关操作, 那么Himi这里就跟大家简单分享探讨下;如何在Xcode中进行c++与oc混编吧~
参考王哥说的 SimpleAudioEngine 类;
首先Himi建立了两个类,一个object-c ,一个c++,详细如下:
HSpriteOC.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// // HSpriteOC.h // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #import <Foundation/Foundation.h> NSString * str; @interface HSpriteOC +( void ) testLog;
+( void ) testLogWithStr:(NSString*)_str;
+( void ) hMessageBox:(NSString*)pszMsg title:(NSString*)pszTitle;
@end |
HSpriteOC.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// // HSprite.m // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #import "HSpriteOC.h" @implementation HSpriteOC +( void ) testLog{
str = @ "Himi->string is: " ;
NSLog(@ "HSprite: testLog" );
} +( void ) testLogWithStr:(NSString*)_str{
str = [NSString stringWithFormat:@ "%@%@" ,str,_str];
NSLog(@ "%@" ,str);
} +( void ) hMessageBox:(NSString*)pszMsg title:(NSString*)pszTitle{
UIAlertView * messageBox = [[UIAlertView alloc] initWithTitle: pszTitle
message: pszMsg
delegate: nil
cancelButtonTitle: @ "OK"
otherButtonTitles: nil];
[messageBox autorelease];
[messageBox show];
} @end |
这个类比较简单,简单定义了几个静态函数,打印和显示一个提示框,不赘述,大家大概看下就可以了;
下面来看c++的类:
HSpriteCPP.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// // HSpriteCPP.h // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #ifndef Oc_Cpp_HSprite_h #define Oc_Cpp_HSprite_h #include "cocos2d.h" using namespace cocos2d;
class HSpriteCPP: public cocos2d::CCSprite {
public :
static HSpriteCPP* hspriteWithFile( const char *spName);
void myInit();
virtual ~HSpriteCPP();
}; #endif |
HSpriteCPP.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// // HSpriteCPP.mm // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "HSpriteOC.h" #endif #include "HSpriteCPP.h" HSpriteCPP* HSpriteCPP::hspriteWithFile( const char *spName)
{ HSpriteCPP *pobSprite = new HSpriteCPP();
if (pobSprite && pobSprite->initWithFile(spName))
{
pobSprite->myInit();
pobSprite->autorelease();
return pobSprite;
}
CC_SAFE_DELETE(pobSprite);
return NULL;
} void HSpriteCPP::myInit(){
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //iOS代码
[HSpriteOC testLog];
[HSpriteOC testLogWithStr:@ "wahaha" ];
[HSpriteOC hMessageBox:@ "cocos2dx调用oc函数" title:@ "Himi" ];
#else //Android代码
#endif } HSpriteCPP::~HSpriteCPP(){ } |
此类是个自定义精灵类,都是简单的创建等函数,其HSprite.cpp类的导入和在 myInit() 自定义初始化函数中都加入了预编译(#if #else #endif 对预编译不太了解的自定百度下吧),主要为了区别当前手机设备的平台区分做处理;而且在myInit()中我使用了object-c语法进行调用之前OC写的HSprite类函数;
其实通过观察以上两个类童鞋们估计很容易看出在xcode中cpp和oc如何混编;其实就是两点:
1. 混编的类需要将其实现类(.cpp)改成(.mm)类,那么Xcode就会智能知道这个类混编类了,不用复杂的操作;
2. 混编中cpp调用oc,其实就是各自使用各自语法即可,没差异!(最好对OC和c++都比较熟悉更效率)
然后Himi在HelloWorldScene.cpp中加入以下测试代码:
1
2
3
|
HSpriteCPP * sp =HSpriteCPP::hspriteWithFile( "Icon.png" );
sp->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width*0.5,CCDirector::sharedDirector()->getWinSize().height*0.5-100));
this ->addChild(sp);
|
别忘记导入对应使用的类哦~OK,看运行效果:
相关推荐
Cocos2d-x-3.x游戏开发之旅-钟迪龙著 全新pdf版和附书代码(代码为工程文件,可复制) 附带目录标签
5、【cocos2d-x IOS游戏开发-捕鱼达人5】C++中函数代理与信号插槽机制 资源引用页: 6、【cocos2d-x IOS游戏开发-捕鱼达人6】实现开始菜单 资源引用页: 7、【cocos2d-x IOS游戏开发-捕鱼达人7】游戏场景基础实现 ...
【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作 http://blog.csdn.net/tt5267621/article/details/7626450
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Cocos2d-x 3.x游戏开发实战pdf含目录,内容详细,强烈推荐给大家。
资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...
Cocos2d-x 3.x游戏开发之旅教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 使用...
【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作 http://blog.csdn.net/tt5267621/article/details/7624781
本书是《Cocos2d-x 游戏开发之旅》的升级版,修改了2.0版进阶到3.0版后的一些内容...通过2到3个游戏实例介绍Cocos2d-x在实际开发中的应用;手机网络游戏开发入门;介绍在实际的手游开发过程中遇到的问题以及解决方法。
quick-cocos2d-x v3 是在 cocos2dx 3.x 的最新版本基础之上,移植了原来 quick-cocos2d-x 的核心框架、强大的 player 、丰富的示例等,并增加更多新的功能。 GitHub: https://github.com/dualface/v3quick
精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发
9、【cocos2d-x IOS游戏开发-捕鱼达人9】鱼与动画 资源引用页: 10、【cocos2d-x IOS游戏开发-捕鱼达人10】鱼的产生和移动 资源引用页: 11、【cocos2d-x IOS游戏开发-捕鱼达人11】鱼的产生和移动:完善 资源引用页...
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
Cocos2d-x游戏编程——C++篇(电子工业出版社,徐飞 著)书本配套的光盘代码,
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...
cocos2d-x 3.x游戏开发实战光盘
Mac-OS-X-配置-Cocos2d-x-开发环境(iOS-和-Android).doc
书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关知识点。此外,书中的教学资源获得《捕鱼达人》手机游戏的授权,读者可以从一流游戏开发中高起点地...
Cocos2d-x项目实战-射击类游戏-迷失航线,版本是Cocos2d-x-3.2
【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-延时动作 http://blog.csdn.net/tt5267621/article/details/7625309