zoukankan      html  css  js  c++  java
  • 将cocos2dx+lua创建的游戏port到windows phone

    在整个Port的过程中遇到的问题总结例如以下

    1、一定要使用最新版本号的cocos2dx,原因大家看一下changelog就知道了,近期的cocos2dx版本号都是在修windows phone上的bug,所以为了避免少出问题,还是直接升级到最新版本号吧

    2、假设你使用的是cocos2dx + lua方式,眼下的project-creator并不支持lua版本号的windows phone平台,可是cpp版本号是支持的,因此我们能够在cpp版本号的基础上把libcocoslua以及liblua两个工程加到项目中来就可以

    3、请一定使用proj.wp8-xaml版本号,而不要使用proj.wp8版本号来作为你的windows phoneproject,原因proj.wp8版本号眼下对于CCEditBox的支持有问题,而且没有把libcurl.dll以及相关的dll加到xap打包中,假设你一旦使用curl就会出问题。

    4、假设使用lua的话,请在libExtensions项目里将LuaCocos2d.cpp文件换成cocos2d_support/LuaCocos2d.cpp,默认是cocos2d_support/platform/winrt/LuaCocos2d.cpp,那个版本号没有把CCEditBox以及其它的一些类暴露给lua

    5、CocosDenshion在windows phone下仅仅能播放wav类型的文件,假设你是mp3的话,会直接崩溃掉

    6、假设你想要将横屏换成竖屏,那么仅仅改动主项目的MainPage.xaml里的SupportedOrientation以及Orientation是不会生效的,原因是这个改动仅仅是将MainPage给改动了,而cocos2dx是用d3d来渲染的,你还得告诉d3d眼下已经换成竖屏了,详细做法是直接调用Cocos2dRenderer的OnOrientationChanged方法,可是调用这种方法前一定要确保CCEGLView已经初始化,我的是在Cocos2dRenderer::CreateGLResources里初始化那里完毕的。另外请注意一定要设置DesiginResolution否则你看到的可能就是一小块,这个大家遇到了就知道怎么做了。

    7、假设你想看到Lua里打印出来的日志,那须要在libcocosluaproject里将debug模式下增加COCOSDEBUG=1

    8、假设使用了自己定义的shader,须要变成precompiled,否则会报错,显示错乱

    9、wp8上一直cpu使用率非常高,使用profile看到是由于CCHttpClient占用了非常大的cpu,于是细致检查了一下发现原来pthread_cond_wait在wp8下没有实现,于是你懂的

    10、补充一个,CCFreeFont的实现有非常大的问题,每次都load字体,分配内存,这种实现方式极不科学,会导致整个UI非常卡,我自己做了个优化,将字体文件载入一次后缓存,这种话会多用几十M的内存,可是UI打开速度能够优化到可接受范围内


    眼下遇到并已经解决的问题主要就是上面这些,还没解决的一些问题包含

    1、莫名崩溃

    2、有一些TableView的显示错位

    这两个问题都已经进入业务层了,眼下还不确认是cocos2dx的问题还是我们的问题,可是其它平台包含win32确实没发现有这个问题。

  • 相关阅读:
    什么是 FutureTask?使用 ExecutorService 启动任务?
    WeakHashMap 是怎么工作的?
    什么是 Executors 框架?
    什么是原子操作?在 Java Concurrency API 中有哪些原 子类(atomic classes)?
    Java 中是如何支持正则表达式操作的?
    JDBC 能否处理 Blob 和 Clob?
    Java 中你怎样唤醒一个阻塞的线程?
    Java Concurrency API 中的 Lock 接口(Lock interface) 是什么?对比同步它有什么优势?
    为什么我们调用 start()方法时会执行 run()方法,为什么 我们不能直接调用 run()方法?
    什么是线程组,为什么在 Java 中不推荐使用?
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4351006.html
Copyright © 2011-2022 走看看