现在的位置: 首页 > 综合 > 正文

工作中遇到的问题(cocos2d-x cocosbuilder 以及周边工具)

2019年08月26日 ⁄ 综合 ⁄ 共 5510字 ⁄ 字号 评论关闭

-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");

 

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 中预加载

抱歉!评论已关闭.