现在的声音播放完全依赖系统的解码器, 综合下来, 跨平台的话只有mp3一种格式可用, 但mp3做音效并不非常合适。 而且完全不支持3d音效(虽然目前用不上, 但好歹画面渲染都支持各种3d了, 这块不弄上?)。
基于以上原因, 所以我们替换了声音引擎。 可有一点很不爽。 因为声音引擎是通过模块的方式嵌入进去的, 访问文件还是调用cocos2dx的接口。 大家都知道, 声音分音乐和音效2种。 音效一般是
全部载入内存, 而音乐是部分载入内存。 而cocos2dx的文件管理机制是把整个文件读入内存然后返回给上层调用方的。 这导致我们的音乐也是所有数据都常驻内存了。
以前cocos2dx是直接返回一个unsigend char* , 我发帖吐槽过一次。。。。 后来用3.x版本, 终于看到cocos2dx返回了一个包装类了, 当时热泪盈眶啊, 后来一看, 那个Data和unsigend char* 有什么区别。
求返回一个 接口指针(取名CCFileInterface?),求最起码实现2个类
class CCMemFile : public CCFileInterface
class CCStdFile : pubic CCFileInterface
求实现outFileHandle 接口, 因为 有些第三方库只认FILE* (例如freetype, 还有某xml解析库,虽然这个库我现在并不使用了, 还有些库是纯c写的), 我并不想去改动库本身的代码。
做游戏避免不了的是优化代码, 而纹理优化是一个大头。 不过令人头疼的是, 只要涉及到纹理优化, 就不得不修改Image和Texture2D 以及相关的类, 因为这几个类提供的接口实在太不灵活了。 做矢量动画的时候会设计生成各种纹理, 但目前(3.5版本)的Image虽然提供了initWithRawData接口, 却蛋疼的只支持RGBA8888。 不过值得庆幸的时, 毕竟以前的版本连这个接口都是自己实现的。
每次下定决心在尽量不修改cocos2dx的基础上进行开发, 每次都不得不进行底层改动。。。。 我也想通过继承的方式进行扩展, 可继承在很多时候很无力。
话说luac挺好的, lua5.3挺好的, 我并不想要luajit。
以上