2.#define CC_UNUSED_PARAM(unusedparam) (void)unusedparam
用CC_UNUSED_PARAM(event) 这样做的意义何在?查了一下有这样的解释don't use this for C++, it should only be used in plain C files or ObjC methods, where leaving off the parameter name is not allowed;不要在C++中这样用,它应该用于纯c或object—c不用(leave off)参数的名字不允许的方法中。我问同事给的答案是“要是不用的话 编译器就会 警告有未用的参数”。做个helloworld 知道,这个没什么就是把传进来的参数强转一下,也不付给任何变量,这样就让编译器知道,这个值参数使用了。
3.CCRenderTexture To render things into it, simpley construct a render target, call begin on it, call visit on any cocos scenes or objects to render them, and call end. For convienience, render texture andds aprite as it's display child with the results, so you can simply add the render texture to your scene and treat it like any other cocosNode. There are also funcitons for saving the render texture to disk in PNG or JPG format.注释掉CCRenderTextrue看看对比效果;不过这个还要牵扯云彩运动时,根据运动到的点来擦出,之前的背景,目前至看一下CCRenderTexture吧!
![](http://image50.360doc.cn/DownloadImg/2012/03/0514/22051286_1.png)
![](http://image50.360doc.cn/DownloadImg/2012/03/0514/22051286_2.png)
发现一个屏过云时是黑色的。但是没有通过CCRenderTexture设置背景,那么可能是它设置了透明度的原因吧!改了改看看效果,不是,那个原因,zorder也不是!(怎么做到的呢?)
1 in_texture->begin();
2 new_game_scene_->visit();
3 in_texture->end();
4 addChild(in_texture,kZOrderMainMenuBackground);
实际上背景的是new_game_scene_->visit();CCObject的virtual vist方法:recursive method that vist its children and draw them.
查了下别人的总结:使用CCRenderTexture的5个步骤:
1.创建一个新的CCRenderTexture。这里,你可以指定将要创建的纹理的宽度和高度。
2.创建一个新的CCRenderTexture, begin方法启动OpenGL, 并且接下来, 任何绘图的命令都会渲染到CCRenderTexture里面去,而不是画到屏幕上。
3.绘制纹理。你可以使用原始的OpenGL调用来绘图,或者你也可以使用Cocos2d对象里面已经定义好的visit方法。(这个visit方法就会调用一些opengl命令来绘制cocos2d对象)
4.调用CCRenderTexture的end。此方法会渲染纹理,并且关闭渲染至CCRenderTexture的通道。
5.从生成的纹理中创建一个sprite。你现在可以使用CCRenderTexture的sprite.texture属性来轻松创建新的精灵了。
OpenGL还没看过不会呢,有空得补一下!现在学习很零碎,不系统。
最近又看代码才知道,原来visit使用opengl重写了一下,才产生的如此过场动画的效果