cocos2d-x学习笔记07:在cocos2d-x中使用RTTI

简介:
有时,我们在开发中需要使用RTTI。什么?写的好的代码可以避免使用RTTI。不一定。什么情况下使用RTTI,一种很常见的例子,就是,我使用了一个父类指针容器,但是持有的是子类指针。并且,我需要调用子类指针的接口。这种情况下,就必须用RTTI了(或其他替代方案)。


使用RTTI的步骤。

#1.打开 项目目录\android\jni\Application.mk 


#2.

注释APP_STL := stlport_static
添加两行:
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti


解释:NDK中默认关闭RTTI,所以使用-frtti开启。NDK中附带的stlport库不支持RTTI(也不支持异常)。所以,我们要将其替换为GNU的STL库。(NDK一共有四个STL库,system,stlport静态,stilport动态,gnu静态)

#3.

然后,使用cygwin控制台进入项目目录,clean一下。(最好直接删项目里的lib和obj文件夹,因为你改了编译选项,clean也是删不干净的。)
重新执行编译sh脚本即可



题外话:
     1.我测试了自己的手机,黑屏原因不明,连cocos2dx自带例子用RTTI编译都不行。另外,也不是所有平台都支持RTTI,android也是后续才增加支持的。所以你用了RTTI兼容性需考虑。
     2.RTTI会造成代码体积膨胀。效率可能会下降一点,不过我认为这不算什么问题。
     3.替代方案,最简单的使用cocos2dx的setTag和getTag。不过这要你自己定义一套符号系统,而且看起来傻一些。








 本文转自 老G 51CTO博客,原文链接: http://blog.51cto.com/goldlion/762112 ,如需转载请自行联系原作者
相关文章
cocos2dx GLProgram
cocos2dx GLProgram
36 0
|
缓存 知识图谱 异构计算
Cocos2dx实现多重纹理
Cocos2dx实现多重纹理
260 0
|
缓存 JavaScript 前端开发
《Cocos2D权威指南》——3.7 Cocos2D中的单例
本节书摘来自华章计算机《Cocos2D权威指南》一书中的第3章,第3.7节,作者:王寒,屈光辉,周雪彬著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1368 0