本文仅供个人记录和复习,不用于其他用途
开头补充
在开始之前,首先要说一下关于窗口设置的问题。
|
|
第一个方法设定窗口的大小,第二个窗口设置显示内容的大小。如果我们加入一张图片,它无法填满960*640,也就意味着有一大块区域是黑色的。那么我们是否能够改变窗口的大小,让图片刚好占据整个窗口呢?但是要注意,上下两个数值都要更改。假如只改窗口大小,那么会出现下图这样的状况:
注意,这个窗口是480*320的,但是由于显示的内容大小还是原来的,所以图片会依据比例缩小,看起来和没改变窗口是一个效果。第二个主要是用于当窗口尺寸不一样时,可以根据比例来缩放窗口。因此改变窗口大小时,一定要记得改掉显示内容的大小。
总而言之,第一个调整窗口大小,第二个调整分辨率。
了解纹理
首先,我们先来看看精灵的创建方法:
|
|
第一种方法我们不陌生,至于第二种方法呢,便是规定图片的显示内容。Rect是矩形的意思,使用了UI坐标系,原点从左上角开始,显示长为400宽为320的内容,如下图所示:
那么回归正题,什么是纹理?纹理是OpenGL的词汇,我们去查看底层代码就会发现,Sprite::create()
其实就是创建了一个纹理。简单来说,纹理就是图片。
|
|
CCTexture2D
没有create()
方法,事实上,很多OpenGL的概念都没有create()
方法。因此呢,我们需要自己创建对象,并送入自动回收池。至于纹理的初始化则需要图片,这里用到的CCImage
同样没有create()
方法。
回顾学习笔记(2),sprite
除了可以直接用文件初始化以外,还可以用纹理初始化。
|
|
从本质上来说,Sprite
的create()
方法本质上是创建了一个纹理。
纹理缓存
在游戏进行过程中,我们不能够加一张图片就渲染一张,那样重复的动作会占据很多资源。事实上,内存区开辟了一块缓存区域,我们可以把常用的图片加载入缓存,需要用的时候可以直接取用。
|
|
sharedTextureCache()
是一个单例,用于将图片加入缓存。addImage()
直接返回一个CCTexture2D
的指针,因此直接创建指针接收。接下用纹理创建精灵,并加入到层中。
从缓存拿去图片好比是从书架拿书,方便快捷。而如果我们直接加载图片,那么就好比是到图书馆拿书,繁琐耗时。但是呢,由于书架比较小,所以我们不可能把所有的书全部放入,这也就意味着,程序员需要根据图片用到的时间和频率,合理的利用缓存,而不是一股脑地全部塞进去。