观XX项目感1
今天本来想多写一些关于弹出窗口Touch捕获事件并屏蔽原来(弹出窗口下面的layer)layer的touch事件,但是不知如何写,掌握的知识感觉总是不够。
1.游戏中CCDirector的setAnimationInterval(1.0 / 30);但是在main_game_layer中schedule( scheduel_selector(MainGameLayer::Update), 1/60.0f); 为什么后面定义的时间可以比帧的时间更短,如上就是每一帧后都会Update两次,没显示出来私下里Update两次有用吗,这点我相当困惑;我没弄清FPS和各个逻辑的关系。
Frame Per Second,是测量用于保存、显示动态视频的信息数量。通俗的来讲就是指动画或视频的画面数,要避免动作不流畅的最低FPS是30,过高的FPS对显卡处理能力要求很高;这个问题留到以后来回答!
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吧!
发现一个屏过云时是黑色的。但是没有通过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重写了一下,才产生的如此过场动画的效果。2011/12/30