Cocos Creator 1.9.3 升级 2.1.2项目填坑总结

1.9.3 升级 2.1.2项目填坑总结

    • 首先在升级之前可能需要安装两个不同的Cocos Creator版本的编辑器
    • 使用最新版编辑器,按提示打开项目后运行,报错如下
    • api调整总结

以下记录是我在cocos项目升级过程中遇到的问题,依照遇到的错误顺序记录,1.x.x升级2.x.x版本仅供参考。

首先在升级之前可能需要安装两个不同的Cocos Creator版本的编辑器

操作如下:
1. 修改旧版本的根目录名称(如:我的旧版本是1.9.3修改成CocosCreator1_9_3)
2. 到系统的应用管理里面卸载旧版本(因为文件夹名称已经改变,实际不会卸载)
3. 安装新版本

使用最新版编辑器,按提示打开项目后运行,报错如下

  • Failed to load scene: Error: [AssetLibrary] loading JSON or dependencies undefined
    定位原因是大部分资源引用丢失导致,需要重新拖动资源。
    如sprite-frame引用丢失或动画帧资源引用丢失,都会报此错误

  • 语法错误,根据报错提示,定位是cc.loader.getRes(url)造成。
    如果请求的是json文件,返回的不再是文件内容对象,外面又封装了一层,需要通过cc.loader.getRes(url).json或取。

  • Uncaught TypeError: cc.director.getVisibleSize is not a function
    2.0之后此api更改为cc.view.getVisibleSize(),全局替换后就可。
    但是,在实际项目中使用发现,总是会返回设计分辨率,造成项目适配失效,后来改为 cc.view.getFrameSize()解决。

  • 输入框样式错位
    因为cocos在2.1.1版本对EdiBox组件做了一些升级,所有的项目中的EdiBox组件都需要重新整理一下样式。

  • Sorry, cc.Node.setPositionY is removed, please use y instead.
    api调整,全局替换 cc.Node.setPositionY 为 cc.Node.y;
    全局替换 cc.Node.setPositionX 为 cc.Node.x;

  • 其他样式问题
    部分mask组件的SpriteFrame挂载会丢失,需要重新拖动
    部分ParticleSystem组件的positionType值会变为FREE,需要重新选择

  • Uncaught TypeError: Cannot read property ‘__ONCE_FLAG:load’ of null
    还是资源引用造成,在上一个版本中,预制件里面有引用resources的资源,删除后不再报错

=========== 以上是开发环境遇到的问题,还算顺利,总耗时一天=================

  • Web Mobile 平台打包后运行报语法错误
    是因为项目使用的自定义打包模板,需要把cc.DebugMode 改为 cc.debug.DebugMode

  • 同场景下使用的位图资源名称一样,会导致样式问题,比如样式重叠,需要更改位图资源名称在一个场景内唯一,不确定是编辑器原因还是cocos问题。

api调整总结

必须替换的api

	cc.DebugMode 改为 cc.debug.DebugMode
	cc.Node.setPositionX 改为 cc.Node.x
	cc.Node.setPositionY 改为 cc.Node.y
	cc.director.getVisibleSize() 改为 cc.view.getVisibleSize() 或使用cc.view.getFrameSize()替代
	node.rotation => node.angle
	audio: cc.AudioClip => audio: {
        default: null,
        type: cc.AudioClip // 不在支持url
	}

支持暂时平稳过渡的api

	cc.pDistance(p1, p2) => p1.sub(p2).mag()
	node.convertToNodeSpace => node.convertToNodeSpaceAR
	node.convertToWorldSpace => node.convertToWorldSpaceAR

你可能感兴趣的:(Cocos,Creator)