cocos2dx-lua v3 -sprit 精灵详解
来源:互联网 发布:社交网络 种子 编辑:程序博客网 时间:2024/04/30 20:17
尊重版权:文章转载自,http://www.2cto.com/kf/201505/398833.html 仅为个人使用。
精灵类是Sprite,它的类图如下图所示。
Sprite类图Sprite类直接继承了Node类,具有Node基本特征。此外,我们还可以看到Sprite类的子类有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精灵类,Skin是皮肤精灵类用于骨骼动画。
创建Sprite精灵对象
创建精灵对象有多种方式,其中常用的函数如下:
cc.Sprite:create ()。创建一个精灵对象,纹理[ 纹理(texture),表示物体表面细节的一幅或几幅二维图形,也称纹理贴图,当把纹理按照特定的方式映射到物体表面上的时候能使精灵看上去更加真实。 ]等属性需要在创建后设置。
cc.Sprite:create (filename)。指定图片创建精灵。
cc.Sprite:create (filename, rect)。指定图片和裁剪的矩形区域来创建精灵。
cc.Sprite:createWithTexture (texture)。指定纹理创建精灵。
cc.Sprite:createWithTexture(texture, rect, rotated=false)。指定纹理和裁剪的矩形区域来创建精灵,第三个参数是否旋转纹理,默认不旋转。
cc.Sprite:createWithSpriteFrame(pSpriteFrame)。通过一个精灵帧对象创建另一个精灵对象。
cc.Sprite:createWithSpriteFrameName (spriteFrameName)。通过指定帧缓存中精灵帧名创建精灵对象。
上述create函数我们在前面章节中介绍过,而且create函数比较简单,我们就不再介绍了。
实例:使用纹理对象创建Sprite对象
使用纹理Texture2D对象创建Sprite对象是使用createWithTexture函数实现的。本节我们会通过一个实例介绍纹理对象创建Sprite对象使用,这个实例如下图所示,其中地面上的草是放在背景(如图所示)中的,场景中的两棵树是从图所示的“树”纹理图片中截取出来的,如图所示是树的纹理坐标,注意它的坐标原点在左上角。
创建Sprite对象实例
场景背景图片
“树”纹理图片
“树”纹理坐标
HelloWorldScene.cpp实现的createLayer函数代码如下:
local layer = cc.Layer:create()
local bg = cc.Sprite:create(background.png) ①
bg:setPosition(cc.p(size.width/2, size.height/2)) ②
layer:addChild(bg)
local tree1 = cc.Sprite:create(tree1.png,cc.rect(604, 38, 302, 295)) ③
tree1:setPosition(cc.p(200,230))
layer:addChild(tree1,0)
local cache = cc.Director:getInstance():getTextureCache():addImage(tree1.png) ④
local tree2 = cc.Sprite:create() ⑤
tree2:setTexture(cache) ⑥
tree2:setTextureRect(cc.rect(73, 72,182,270)) ⑦
tree2:setPosition(cc.p(500,200))
layer:addChild(tree2,0)
return layer
end
在上面代码第①行cc.Sprite:create(background.png)通过background.png图片创建精灵,background.png图片如前图所示,第②行代码是设置背景的位置。
第③行代码cc.Sprite:create(tree1.png,cc.rect(604, 38, 302, 295))通过tree1.png图片和矩形裁剪区域创建精灵,矩形裁剪区域为(604, 38, 302, 295),如图所示。
rect类可以创建矩形裁剪区,rect构造函数如下:cc.rect(x, y, width, height)
其中x,y是UI坐标,坐标原点在左上角,width是裁剪矩形的宽度,height是裁剪矩形的高度。
第④行代码通过纹理缓存TextureCache创建纹理Texture2D对象,通过Director的getTextureCache()函数可以获得TextureCache实例,TextureCache 的addImage(tree1.png)函数可以创建纹理Texture2D对象,其中的tree1.png是纹理图片名。
第⑤行代码创建一个空的Sprite对象,所以还要通过的后面的很多函数设置它的属性,其中第⑥行代码tree2:setTexture(cache)是设置纹理。第⑦行代码tree2:setTextureRect(cc.rect(73, 72,182,270))是设置纹理的裁剪区域。
改变sprite精灵图片用到的方法:
首先,创建一个精灵 ,方法上面已经有了,这里随便选取一个简单的方法
local tree1 = cc.Sprite:create("res/tree1.png")
self:addChild(tree1)
local sprite_frame_cache = cc.SpriteFrameCache:getInstance()
local texture_cache = cc.Director:getInstance():getTextureCache()
方法一:
local frame = sprite_frame_cache:getSpriteFrame("tree2.png") --tree2.png为大图缓存中的精灵帧名
if frame then
tree1:setSpriteFrame(frame)
end
方法二:
local frame = cc.SpriteFrame:create("res/tree2.png",cc.rect(0,0,100,100)) --直接创建一个精灵帧
tree1:setSpriteFrame(frame)
方法三:
tree1:setTexture("res/tree2.png") --直接改变纹理
方法四:
local cache =texture_cache:addImage("res/tree2.png")
tree1:setTexture(cache) --用cc.texture2d类型改变纹理
最后释放纹理缓存
sprite_frame_cache:removeUnusedSpriteFrames()
texture_cache:removeUnusedTextures()
- cocos2dx-lua v3 -sprit 精灵详解
- 【COCOS2DX-LUA 学习】精灵创建
- Quick cocos2dx-Lua(V3.3R1)学习笔记(5)----让精灵动起来吧,使用序列帧动画
- Quick cocos2dx-Lua(V3.3R1)学习笔记(6)---- 让精灵执行不同的动作
- Quick cocos2dx-Lua(V3.3R1)学习笔记(4)------创建精灵 菜单,让我们做个最简单的点击菜单显示精灵吧
- 精灵帧缓存SpriteFrameCache-Cocos2dx-lua
- cocos2dx v3.x C++绑定lua
- Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
- [cocos2dx-lua]Cocos2dx-Lua中Sprite精灵的3种创建方法
- cocos2dx中lua实现继承详解
- cocos2dx中lua实现继承详解
- cocos2dx中lua实现继承详解
- cocos2dx+lua注册事件函数详解
- cocos2dx+lua注册事件函数详解
- cocos2dx+lua注册事件函数详解
- cocos2dx+lua注册事件函数详解
- cocos2dx中lua注册事件函数详解
- cocos2dx+lua注册事件函数详解
- Java学习9.29
- linux常用工具系列------git
- unity与android交互
- 数据库UNSIGNED属性
- iOS ARC内存泄露的几种情况总结
- cocos2dx-lua v3 -sprit 精灵详解
- 不懂装懂,害人害自。
- 无法通过json传递字符串在sqlite3中进行汉字字符插入和查询
- kmp算法
- 截取字符串使用省略号替代
- CocoaPods的SSL报错解决办法
- 设置按钮保持高亮状态
- find命令处理指定时间之前的文件命令
- 技术主管必须做的事情