工作中遇到的问题(cocos2d-x cocosbuilder 以及周边工具)
2014-04-02 18:51
453 查看
-1. 本文原创于http://blog.csdn.net/MingZznet
0. http://www.cocos2d-x.org/reference/html5-js/V2.2.2/index.html 有事没事多查文档
1.图片如果需要拉伸 用 9sprite
2.9sprite的图片在用TP打包的时候不能够旋转,如何设置不旋转请看下一条
3.图片用于9sprite的时候,TP打包不能旋转,将Allow rotation勾掉即可
4.图片有透明的部分时,TP打包的时候不要用Trim mode,选择为None
5.当cocosbuilder中设计的labelTTF与 模拟器中显示的比例不一样的时候,设置document-》edit resolutions-》scale-》改一下,然后labelTTF的font size设置为miltiply by resolution scale
6.cocosbuilder中设置好的 模拟器中位置变了怎么办,在cocosbuilder中将所有的节点的position设为 百分比显示(percentage of container)
7.CClayer中放了一个CCNode,CCNode下又有几个sprite,可是这些sprite不能够移动位置怎么办,将CCNode的content size设置足够大
8.设计屏幕的时候要预留一些素材,用于适配不同屏幕尺寸,比如960*640的scene,可在scene左右两边分别加一条88*640的图片,并且纹理和scene的背景相连接,(X)
实验证明,这样做有点问题,应该将地图的尺寸做成(960+88*2 )* 640 然后遇见比例不同的屏幕尺寸,会匹配高度,然后将宽度减少显示或增多显示。
不好理解??首先背景图片不会拉伸宽高比例,(会拉伸整体大小),然后把宽度做的足够宽,以适配宽度比例最大的屏幕,然后如果屏幕小于这个宽度尺寸,则有左右有一部分图片会不显示,,
9.ignore anchor point 忽略锚点
10. var origin = cc.Director.getInstance().getVisibleOrigin(); //可视区域的起点坐标(可视区域的左下角,用于分辨率适配)
11.找出设计时的坐标乘以分辨率变化的比例分辨率变化比例为 getWinSize
/当前分辨率
12.几个control button绑定同一个事件函数,只会有一个button被响应,就是这样的,所以要用不同的事件函数
13.Math.random() 取0.0 - 1 的随机数
14.button中三张图片必须都换掉,否则会出错
15.从spriteframecatch 中获取图片时,如果有子路径,需要写完整
16.sprite切换图片 s.setDisplayFrame(frame);
17.cocosbuilder中新建ccb时,选择Resolution时,要新建一个自己的尺寸,然后别忘了勾选掉默认的,将自己新建的勾选上
18.cocosbuilder 快捷键: commond + 上下左右 缓慢移动 command + shift + 上下左右 快速移动
19.对于 CCLayer -> CCNode -> CCSprite 可先求CCNode左下角坐标,再根据其 去求CCSprite的位置
20.模态对话框:在CCB中摆layer,最好用layercolor , 然后在代码里获取layer,设置touchPriority,触摸优先级
21.时刻注意cocosbuilder和代码的配合使用,比如可以在代码中获取到CCB中得sprite,然后加到cc.ProcessTimer.Create(sprite)中,会有意想不到的效果
22.围绕着图片周围一圈进度条,可用一张圆圈的图片和cc.ProgressTimer实现
23.CCB Bug:图片名称相同,目录不同,总会相互搞混。。。怎么办?起不同的名称??
本身就忌讳内存中存在两个同名的纹理。,所以改不同的名称
24. ProgressTimer中需要放置一个sprite,
我给progressTimer 做 cc.ProgressFromTo.create(4, 100, 0)动作,
同时给ProgressTimer做 cc.Sequence.create(
cc.TintTo.create(0.8, 46, 233, 21),
cc.TintTo.create(1, 244, 255, 18),
cc.TintTo.create(0.4, 244, 153, 18),
cc.TintTo.create(1.8, 233, 21, 21)
) 动作,
发现颜色变换每次都是从sprite的初始状态变换到这四种颜色,这不是我想要的,我想的是在这四个颜色之间循环渐变,,,
后来发现给ProgressTimer做TintTo动作时,sprite默认颜色不会改变,而给sprite做TintTo变换时,颜色会改变,,
所以我的解决方法是:给ProgressTimer做ProgressFromTo动作,同时给其对应的sprite做颜色变换动作,问题解决。。
25.alt + 鼠标左键 在指定的位置加关键帧,v, p, s, r, 在时间轴当前帧加关键帧,分别对应visible,position, scale, Rotation, (Skew没有快捷键)
26.在时间轴最上方Callbacks上加关键帧,双击,添加函数名,可在运行到此帧的时候出发此函数
27.scale9sprite 不要改 scale值,而是改 preferred size,最后也要改成 % 形式
28.一般将node设置成其子对象中最大尺寸对象的尺寸,
29.如果需要将多张图片组成的node做成button,并有缩放效果,可将controlbutton添加进这个node,将此controlbutton 设置成透明图片,大小和node一样大,点击controlbutton的回调函数中用node.setScale()模拟button点击的缩放效果
30. cocosbuilder 中 commond + +- 放大缩小 视图区域
31. 项目结构:
res(cocos2d-x的资源目录)->cocosbuilderProjectDir->res_art->美工上传素材
->ccbi->导出的ccbi文件
->font->字体
->img->TP打包的图片
->res_bak->未打包的图片
->Resources->ccb文件
->script->JS代码
->cocosbuilderProject.ccbproj(cocosbuilder工程文件)
32.当项目中有两套纹理文件名一样,又不想将一套改名,可以将这两套纹理放到不同的目录,然后作为子目录打包到同一个plist中,
plist->BigImg->1.png
->2.png
->SmallImg->1.png
->2.png
33.CCbi文件调用失败?CCB有没有绑定controller?
34.this.SPRITE_FRAME_CACHE = cc.SpriteFrameCache.getInstance();
this.SPRITE_FRAME_CACHE.addSpriteFrames(this.IMG_PATH + "TP.plist", this.IMG_PATH + "TP.png");// 将TP打包的图一次加载到内存,以后可以直接从此缓存中用纹理名读取此plist目录下得图片,而不用加目录名
this.sprite.setDisplayFrame(
tm.gameWorld.SPRITE_FRAME_CACHE.getSpriteFrame("img.png")//直接从内存中找这张图,不用加目录
);
35.所有纹理名用小写字母或数字,用scene或layer名做前缀,不要有同名的纹理,否则android系统运行会报错
36.cocosbuilder commond + 鼠标左键拖动设计视图显示 commond+ +/- 控制视图放大缩小
37.cocosbuilder同时运行多个动画而不相互影响,分割成不同的CCB
38.可以给sprite货label货其他什么东西定义名称 lbltest1, lbltest2等,然后 这样索引 this["lbltest" + i].setString("test");
40.cocosbuilder 的坑 :明明给controlbutton写了回调函数,检查了很久,没有其它错误,可就是不响应,。。。将cocosbuilder重新打开,发现回调函数没有填上。。有时候改好多次,重新打开这个CCB,又消失了,则么办呢?修改这个地方的时候改动一下其他地方再保存,试试。。
41.8scalesprite.setPreferredSize(size)设置的是实际的大小,需要 实际尺寸 * scale(屏幕适配scale) * resolutionScale(resolution中设置的scale)
42.我在CCB中嵌套CCB,并给CCBFile 添加 引用变量 用Doc root var 会找不到 用Owner var 就可以了。。。大家怎么看??
43.
// childcontroller
onclicked:function(){
this.parentcontroller.doSomthing();
}
// parentcontroller
doSomething:function(){
this.do();// 这里的函数由 childcontroller调用,所以,这里的this是指的childcontroller
不是 parentcontroller,,很坑。。。
}
44.有些时候,需要用代码往CCB中添加sprite,这时候可以先用 node站好位置,然后将sprite添加进node中
45.cocosbuilder 动画timeline,下面可选择连续的 timeline,以实现动画的顺序执行,如果调用自己,则是一个重复动画
46.cocosbuilder controllbutton变形??还是改为固定大小吧。。不要百分比了。。。
47.glyphdesigner 位图字体工具
48 CCB 中 document-》stage border->{// 场景边界
device// 设备
transparent// 半透明
opaque// 不透明
None//
}
要想sprite在场景外面也能看到,选这里
49.如果node是根据里面的图片设置的大小,那么node的大小就不要设置百分比了,设成固定大小会更好些
50.字体不清楚??可以将字号放大一倍,然后再scale 0.5 会好一点
51.http://blog.csdn.net/mingzznet/article/details/38685137
52.背景图 为了省资源,只留了一条,用来拼成一整张图,这时可以新建一个 1136*640固定大小的node,然后用这条背景图平铺满,然后这个node就能够当做一张大图用了
53.用在cocosbuilder中的plist文件和大图不用加到framecatch中,但要放到g_resoure 中预加载
0. http://www.cocos2d-x.org/reference/html5-js/V2.2.2/index.html 有事没事多查文档
1.图片如果需要拉伸 用 9sprite
2.9sprite的图片在用TP打包的时候不能够旋转,如何设置不旋转请看下一条
3.图片用于9sprite的时候,TP打包不能旋转,将Allow rotation勾掉即可
4.图片有透明的部分时,TP打包的时候不要用Trim mode,选择为None
5.当cocosbuilder中设计的labelTTF与 模拟器中显示的比例不一样的时候,设置document-》edit resolutions-》scale-》改一下,然后labelTTF的font size设置为miltiply by resolution scale
6.cocosbuilder中设置好的 模拟器中位置变了怎么办,在cocosbuilder中将所有的节点的position设为 百分比显示(percentage of container)
7.CClayer中放了一个CCNode,CCNode下又有几个sprite,可是这些sprite不能够移动位置怎么办,将CCNode的content size设置足够大
8.设计屏幕的时候要预留一些素材,用于适配不同屏幕尺寸,比如960*640的scene,可在scene左右两边分别加一条88*640的图片,并且纹理和scene的背景相连接,(X)
实验证明,这样做有点问题,应该将地图的尺寸做成(960+88*2 )* 640 然后遇见比例不同的屏幕尺寸,会匹配高度,然后将宽度减少显示或增多显示。
不好理解??首先背景图片不会拉伸宽高比例,(会拉伸整体大小),然后把宽度做的足够宽,以适配宽度比例最大的屏幕,然后如果屏幕小于这个宽度尺寸,则有左右有一部分图片会不显示,,
9.ignore anchor point 忽略锚点
10. var origin = cc.Director.getInstance().getVisibleOrigin(); //可视区域的起点坐标(可视区域的左下角,用于分辨率适配)
11.找出设计时的坐标乘以分辨率变化的比例分辨率变化比例为 getWinSize
/当前分辨率
12.几个control button绑定同一个事件函数,只会有一个button被响应,就是这样的,所以要用不同的事件函数
13.Math.random() 取0.0 - 1 的随机数
14.button中三张图片必须都换掉,否则会出错
15.从spriteframecatch 中获取图片时,如果有子路径,需要写完整
16.sprite切换图片 s.setDisplayFrame(frame);
17.cocosbuilder中新建ccb时,选择Resolution时,要新建一个自己的尺寸,然后别忘了勾选掉默认的,将自己新建的勾选上
18.cocosbuilder 快捷键: commond + 上下左右 缓慢移动 command + shift + 上下左右 快速移动
19.对于 CCLayer -> CCNode -> CCSprite 可先求CCNode左下角坐标,再根据其 去求CCSprite的位置
20.模态对话框:在CCB中摆layer,最好用layercolor , 然后在代码里获取layer,设置touchPriority,触摸优先级
21.时刻注意cocosbuilder和代码的配合使用,比如可以在代码中获取到CCB中得sprite,然后加到cc.ProcessTimer.Create(sprite)中,会有意想不到的效果
22.围绕着图片周围一圈进度条,可用一张圆圈的图片和cc.ProgressTimer实现
23.CCB Bug:图片名称相同,目录不同,总会相互搞混。。。怎么办?起不同的名称??
本身就忌讳内存中存在两个同名的纹理。,所以改不同的名称
24. ProgressTimer中需要放置一个sprite,
我给progressTimer 做 cc.ProgressFromTo.create(4, 100, 0)动作,
同时给ProgressTimer做 cc.Sequence.create(
cc.TintTo.create(0.8, 46, 233, 21),
cc.TintTo.create(1, 244, 255, 18),
cc.TintTo.create(0.4, 244, 153, 18),
cc.TintTo.create(1.8, 233, 21, 21)
) 动作,
发现颜色变换每次都是从sprite的初始状态变换到这四种颜色,这不是我想要的,我想的是在这四个颜色之间循环渐变,,,
后来发现给ProgressTimer做TintTo动作时,sprite默认颜色不会改变,而给sprite做TintTo变换时,颜色会改变,,
所以我的解决方法是:给ProgressTimer做ProgressFromTo动作,同时给其对应的sprite做颜色变换动作,问题解决。。
25.alt + 鼠标左键 在指定的位置加关键帧,v, p, s, r, 在时间轴当前帧加关键帧,分别对应visible,position, scale, Rotation, (Skew没有快捷键)
26.在时间轴最上方Callbacks上加关键帧,双击,添加函数名,可在运行到此帧的时候出发此函数
27.scale9sprite 不要改 scale值,而是改 preferred size,最后也要改成 % 形式
28.一般将node设置成其子对象中最大尺寸对象的尺寸,
29.如果需要将多张图片组成的node做成button,并有缩放效果,可将controlbutton添加进这个node,将此controlbutton 设置成透明图片,大小和node一样大,点击controlbutton的回调函数中用node.setScale()模拟button点击的缩放效果
30. cocosbuilder 中 commond + +- 放大缩小 视图区域
31. 项目结构:
res(cocos2d-x的资源目录)->cocosbuilderProjectDir->res_art->美工上传素材
->ccbi->导出的ccbi文件
->font->字体
->img->TP打包的图片
->res_bak->未打包的图片
->Resources->ccb文件
->script->JS代码
->cocosbuilderProject.ccbproj(cocosbuilder工程文件)
32.当项目中有两套纹理文件名一样,又不想将一套改名,可以将这两套纹理放到不同的目录,然后作为子目录打包到同一个plist中,
plist->BigImg->1.png
->2.png
->SmallImg->1.png
->2.png
33.CCbi文件调用失败?CCB有没有绑定controller?
34.this.SPRITE_FRAME_CACHE = cc.SpriteFrameCache.getInstance();
this.SPRITE_FRAME_CACHE.addSpriteFrames(this.IMG_PATH + "TP.plist", this.IMG_PATH + "TP.png");// 将TP打包的图一次加载到内存,以后可以直接从此缓存中用纹理名读取此plist目录下得图片,而不用加目录名
this.sprite.setDisplayFrame(
tm.gameWorld.SPRITE_FRAME_CACHE.getSpriteFrame("img.png")//直接从内存中找这张图,不用加目录
);
35.所有纹理名用小写字母或数字,用scene或layer名做前缀,不要有同名的纹理,否则android系统运行会报错
36.cocosbuilder commond + 鼠标左键拖动设计视图显示 commond+ +/- 控制视图放大缩小
37.cocosbuilder同时运行多个动画而不相互影响,分割成不同的CCB
38.可以给sprite货label货其他什么东西定义名称 lbltest1, lbltest2等,然后 这样索引 this["lbltest" + i].setString("test");
39.更改调用CCB的启动界面?? (1)cocosbuilder中File->project setting->Start ccb-file name:->更改为要启动的CCB名字 如 MainScene (2) 代码中 tm.openScene(tm.MainScene, tm.gameWorld.CCBI_PATH + 'MainScene.ccbi') // controller , ccbi tm.openScene = function (ctor, ccbiFileName, parameter) { var director = cc.Director.getInstance(); var scene = cc.Scene.create(); var controller = new ctor(); controller.init(ccbiFileName, parameter); var getNode = controller.view.ccbRootNode; if (getNode) scene.addChild(getNode); var runningScene = director.getRunningScene(); if (runningScene === null) director.runWithScene(scene); else director.replaceScene(scene); };
40.cocosbuilder 的坑 :明明给controlbutton写了回调函数,检查了很久,没有其它错误,可就是不响应,。。。将cocosbuilder重新打开,发现回调函数没有填上。。有时候改好多次,重新打开这个CCB,又消失了,则么办呢?修改这个地方的时候改动一下其他地方再保存,试试。。
41.8scalesprite.setPreferredSize(size)设置的是实际的大小,需要 实际尺寸 * scale(屏幕适配scale) * resolutionScale(resolution中设置的scale)
42.我在CCB中嵌套CCB,并给CCBFile 添加 引用变量 用Doc root var 会找不到 用Owner var 就可以了。。。大家怎么看??
43.
// childcontroller
onclicked:function(){
this.parentcontroller.doSomthing();
}
// parentcontroller
doSomething:function(){
this.do();// 这里的函数由 childcontroller调用,所以,这里的this是指的childcontroller
不是 parentcontroller,,很坑。。。
}
44.有些时候,需要用代码往CCB中添加sprite,这时候可以先用 node站好位置,然后将sprite添加进node中
45.cocosbuilder 动画timeline,下面可选择连续的 timeline,以实现动画的顺序执行,如果调用自己,则是一个重复动画
46.cocosbuilder controllbutton变形??还是改为固定大小吧。。不要百分比了。。。
47.glyphdesigner 位图字体工具
48 CCB 中 document-》stage border->{// 场景边界
device// 设备
transparent// 半透明
opaque// 不透明
None//
}
要想sprite在场景外面也能看到,选这里
49.如果node是根据里面的图片设置的大小,那么node的大小就不要设置百分比了,设成固定大小会更好些
50.字体不清楚??可以将字号放大一倍,然后再scale 0.5 会好一点
51.http://blog.csdn.net/mingzznet/article/details/38685137
52.背景图 为了省资源,只留了一条,用来拼成一整张图,这时可以新建一个 1136*640固定大小的node,然后用这条背景图平铺满,然后这个node就能够当做一张大图用了
53.用在cocosbuilder中的plist文件和大图不用加到framecatch中,但要放到g_resoure 中预加载
相关文章推荐
- cocos2d 坐标转换
- quick-cocos2dx display
- Cocos2d-x-2.2.2开发环境配置
- Cocos2dx tolua ++ 创建项目
- cocos2d-x 3.0环境配置和打包整合教程
- cocos2d-x的plist文件
- Cocos2d-x 简陋而且垃圾的XML解析读取
- 【COCOS2DX-BOX2D游戏开发之五】 ApplyForce、ApplyImpulse、SetLinearVelocity
- cocos2dx 解决CCMenu和CCScrollViewDelegate 触摸问题
- Cocos2d-x手动绑定C++类到Lua
- 【COCOS2DX-BOX2D游戏开发之四】 Box2D匀速运动
- cocos2d-x与Android混编实现换“头像图片”
- mac下搭建cocos2d-x的android运行环境
- Lua Studio 如何支持cocos2dx-api智能提示
- cocos2d-x精灵动画帧
- 关于cocos2d在Mac上用Jni引入<jni.h>头文件找不到的问题
- 关于cocos2d移植到Android上Android.mk需要手动增加cpp文件的问题
- CCParticleSystem粒子系统
- Cocos2dx坐标系研究,博主写得很不错还配图说明
- Cocos2d-x笔记(4)