3.3rc1/ final 遇到的几个问题【持续更新】

问题会持续更新

  1. cc.bPlugin_是啥,看样子是只要用quick-lua,这值就为true,从而用display.newLayer会变成new node(), 为啥这么改呢?
  2. setCascadeBoundingBox被废弃
  3. writeable_path路径不是project_path,而是quickv3的path
  4. mac下userDefault.xml不能创建, win下可以
  5. PrebuildRuntimeLua.app 不能重新编译,没找到编译源工程。这点详细说一下:

以下情况适用于:创建工程时, 勾选了CopySourceFiles(默认)
现在的quick是这样的,没有framework_precompiled.zip了,直接将framwork lua源码放在了src下。
那么问题来了:
a. 如果修改了framework lua源码,需要修改两份:一份quickv3下,一份你的工程src下。(当然重编player,将framework路径改死也可,但是不适合团队协作)
b. 我发现用mac下用PrebuiltRuntimeLua.app这个可以直接run player,而且只修改src下的framwork lua代码就即时生效,问题是:win下的同学怎么办。
c. 修改c++代码(比如我把setCascadeBoundingBox加回来),同样要修改两个位置,并且要重新编译一个player出来。

以上a,b,c 三个问题可以简单解决的方案是:找到PrebuildRuntimeLua.app 的源工程,只修改一次src下framework lua代码,修改两个地方的c++源码,再编译一次PrebuildRuntimeLua.app, 可以解决所有问题, win同学就不管了。

  1. quick3.3、3.3rc1、 3.2安装时,不能共存…这样查源码就不方便了啊,连个change_log都没有,源码也不能查,掀桌 (╯‵□′)╯︵┻━┻

  2. 用player新建的工程,用CocosIDE import(v1.1.0),根本Import进不去啊!!!no cocos project found !!!(╯‵□′)╯︵┻━┻

  3. 转tolua的时候,在quick-3.3/tools/tolua/README.mdown看到,要用到android-ndk-r9b, 不知道r9d行不行?

========update 1=============

  1. PrebuiltRuntimeLua.app执行时,log没办法输出到文件,也就是没有debug.log

  2. 3.3rc1版本, win下的同学,同样log没办法输出到文件,也就是没有debug.log,不知道final有没有修复。

  1. cc.bPlugin_是为了让framework兼容3.2版本;
    3.3版本之后quick的Layer和cocos2dx的Layer是不一样的,如果你需要用cocos的Layer,请用cc.Layer:create()创建

  2. 是的,废弃了

3.这个是rc1的bug吧,应该已经改了

  1. 这个问题不太明确,你是用UserDefault类出的问题?

  2. PrebuildRuntimeLua.app 不能重新编译?这就是一个普通的hello world工程啊,你自己新建一个工程,编译后把应用程序改名成PrebuildRuntimeLua.app就是了。
    是否使用CopySourceFiles这个选项,是根据不同的需求来的,有很多人喜欢修改工程不影响到原来平台的源码的。而从你的需求来看,是希望一次修改全部通过,所以建工程时还是不要勾选这个了吧。

6.谁说不能共存的?只是安装程序检测到有上一个版本就用原来的目录了而已,改个目录名,或者备份一下原来的目录就可以了

7.你说的仍然是rc1的bug,而且只有windows版本存在;
不过,ide导入quick工程现在确实还不完善,如果要使用cocos ide,建议还是通过它来创建quick工程。如果你看了3.3final的文档,一定能看到这一条建议。

补充6:CHANGLOG你真的没看到?你确定?

  1. 一定要用r9d

— Begin quote from ____

引用第1楼阳光七月于2014-12-25 17:55发表的 Re:3.3final 遇到的几个问题 :

  1. cc.bPlugin_是为了让framework兼容3.2版本;
    3.3版本之后quick的Layer和cocos2dx的Layer是不一样的,如果你需要用cocos的Layer,请用cc.Layer:create()创建

  2. 是的,废弃了

http://www.cocoachina.com/bbs/job.php?action=topost&tid=278552&pid=1207001

— End quote

  1. 是UserDefault.xml文件,我现在找不到这个文件了,win下的同学能找到,3.3RC1的时候是在quick root目录下找到的.

  2. PrebuildRuntimeLua.app这个原来是自己的工程编出来的啊,好吧,这个我理解错了。

  3. 不是,我先安装3.2,后安装quick.3.3,两个目录确实都在,但是3.2里面的东西已经被删除了绝大部分。 另外,告诉我change_log在哪,从3.3rc1到final的。

  4. final文档我看到那条建议,所以这个算吐槽而已= =#

  5. 你文档里可写的r9b, 七月大哥 :slight_smile:

  1. 如果接口使用正常的话,一定写在什么地方了。这里我没研究过,不过苹果系统升级后有可能不写到xml文件里了。

  2. 我还真不知道MAC下的安装工具是怎么处理上一个版本的,不过把原来的安装目录移走肯定就不会被删除了
    安装后的根目录有一个CHANGLOG文件

  3. 原因是tools/目录下的文件是和cocos保持同步的,那边没有修改,这边也没有记得去修改

  1. 这个好象确实是没有,可以照着player的代码加几个小函数就可以了

10.final已经修复

— Begin quote from ____

引用第7楼阳光七月于2014-12-25 18:24发表的 :
9. 这个好象确实是没有,可以照着player的代码加几个小函数就可以了

10.final已经修复 http://www.cocoachina.com/bbs/job.php?action=topost&tid=278552&pid=1207028

— End quote

  1. win下,final版,用player运行project, userDefault.xml文件是可以生成的,但是mac下确实不能生成UserDefault.xml文件,请再仔细跟mac的同事对一下

  2. 刚check了下,mac下确实没有change_log, mac下安装3.2和3.3安装时确实不能共存,win下的同学两项都没问题 : )

  1. UserDefault是cocos原有的类,不是我们团队维护的。刚才简单看了一下代码,应该是存到苹果应用自身的UserDefault数据里去了,我记得这是一个plist文件,而且文件名也不是UserDefault。不知道你为什么要找这个文件,如果非要找的话,存贮以后查一下文件的更新时间,应该能找到的。

  2. 查了一下,mac打包工具制作安装包时确实漏了CANGELOG,也算一个BUG吧,谢谢指出。
    mac下安装时不能共存,还是安装工具的问题了。安装前备份一下目录吧。其实安装后可以把目录移到其他的地方,重新运行一下setup_mac.sh就可以了。多个quick版本存在时,通过setup可以很方便的进行切换。

7月 我是3.3RC1升级Final的。
之前我使用的CCS的UI,CCS的版本是1.6的。里面的图片路径是直接丢到根目录的。然后放在项目里json文件和图片在同一个目录res/ui/下。
之前3.3RC1运行是OK的。但是升级至Final之后,发现必须要在每次load之前将res/ui/这个目录加入搜索路径。注意,这里是每次。只加一次是不行的。
这是怎么回事???

从3.3rc1到3.3 uiloader的路径搜索并没有改什么啊,这很奇怪

可以这样,
你在load之前与之后,把搜索路径全取出来,看下,确定load把res/ui这个目录删掉了,然后再往下查UILoaderUtilitys.clearPath,是不是它影响到了
或者
你做一个简单的测试样例,上传附件,我们来查

4 : 我说的是mac版本player, 加载运行了一个project后,没有在mac上生成UserDefault.xml文件, 查了下代码,如下:

CCUserDefault-apple.mm line:540

// create new xml file
bool UserDefault::createXMLFile()
{
return false;
}

帮忙问问你们的同事吧 :slight_smile:

========update =========

查了下221版本,本身UserDefault.cpp文件,是可以在mac下加载的:

#if (CC_TARGET_PLATFORM != CC_PLATFORM_IOS && CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)

33版本如下:
#if (CC_TARGET_PLATFORM != CC_PLATFORM_IOS && CC_TARGET_PLATFORM != CC_PLATFORM_MAC && CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)

而只有UserDefault.cpp(或CCUserDefault.cpp)这个文件,才有createXMLFile的实现。

然后我把33版本改成这样:
#if (CC_TARGET_PLATFORM != CC_PLATFORM_IOS && CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)

重新编译个player,运行project后,出现UserDefault.xml了,给后人点指导吧=。=

======== update 2========
再查了下,其实33代码也是没有问题的,只不过用player加载project后,生成的存储文件是~/Library/Preferences/com.cocos.quick.apps.player.plist
而我本身习惯了在project下生成UserDefault.xml,方便查阅,所以按照上述这么改的^_^

因为我们项目是内网开发,代码拿不出来的。所以我只能描述下。
我在MyApp.lua 构造函数里将"res/ui/" 加入搜索路径。
然后在加载第一个场景之前打印搜索路径,此时是有"项目名/runtime/win32/…/…/res/ui/"这个目录的。
等到加载第二个场景之前再打印搜索路径,“项目名/runtime/win32/…/…/res/ui/” 这个搜索路径就没有了。。。

我查了下quick代码,发现是因为uiloader:load 这个方法里面用了 UILoaderUtilitys.clearPath()导致的

感觉是cocos2d-x的问题,我用新的quick代码,用3.3RC1的runtime就是没有问题的。

是啊,我前面应该说得很清楚了,是现在mac不写到xml文件里了

我用ccsloader这个例子试了下,
在CCSSample1Scene.lua中

local paths --新加
cc.FileUtils:getInstance():addSearchPath(“res/DemoHead_UI/”)
paths = cc.FileUtils:getInstance():getSearchPaths() --新加
dump(paths, “paths befor:”) --新加
app:loadCCSJsonFile(self, “DemoHead_UI.ExportJson”)
paths = cc.FileUtils:getInstance():getSearchPaths() --新加
dump(paths, “paths after:”) --新加

在loader后,添加的demoHead_ui路径并没有删除掉,
你那边是不是其它地方删除的

你目录结构与例子一样吗?

我在CocosStudio1.6的工程里,Resources目录下,所有资源是在Resources根目录的。然后用CocosStudio导出之后,json文件和图片在一起。在项目中,我把json文件和所有图片都放在了"res/ui/"这个目录下,可能是因为这个引起的。
只是很奇怪 3.3RC1是正常的,但是升级了Final之后就不行了。
JSON文件中图片路径都是没有"ui/"的,直接是图片名称。

如果是json与图片资源的相对位置没有变化的话,那应该没有问题啊,
在ccsloader这个样例中,也是这样的用法啊