`

Cocos2d-x Lua中Sprite精灵类

阅读更多

精灵类是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函数代码如下:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. function GameScene:createLayer()  
  2.     local layer = cc.Layer:create()  
  3.     local bg = cc.Sprite:create("background.png")                               ①  
  4.     bg:setPosition(cc.p(size.width/2, size.height/2))                               ②  
  5.     layer:addChild(bg)  
  6.     local tree1 = cc.Sprite:create("tree1.png",cc.rect(604, 38, 302, 295))              ③  
  7.     tree1:setPosition(cc.p(200,230))  
  8.     layer:addChild(tree1,0)  
  9.     local cache = cc.Director:getInstance():getTextureCache():addImage("tree1.png")     ④  
  10.     local tree2 = cc.Sprite:create()                                            ⑤  
  11.     tree2:setTexture(cache)                                                 ⑥  
  12.     tree2:setTextureRect(cc.rect(73, 72,182,270))                               ⑦  
  13.     tree2:setPosition(cc.p(500,200))  
  14.     layer:addChild(tree2,0)  
  15.     return layer  
  16. 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))是设置纹理的裁剪区域。

 

 

更多内容请关注最新Cocos图书《Cocos2d-x实战:Lua卷——Cocos2d-lua开发

本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

《Cocos2d-x实战 Lua卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659697.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息

分享到:
评论

相关推荐

    cocos2D-lua 核心编程内置代码

    在“Cocos2d-x之Lua核心编程(第二版)_配套代码”中,我们可以找到一系列的示例和代码,这些代码涵盖了Cocos2d-lua的核心功能和编程技巧。 一、Cocos2d-lua简介 Cocos2d-lua是Cocos2d-x的一个扩展,它允许开发者使用...

    Cocos2d-x实战_Lua卷 _第2版

    在Cocos2d-x中,Lua与C++的交互是通过tolua++或tolua+1等绑定工具完成的,这使得游戏逻辑可以独立于底层系统,提高开发效率。 书中可能详细讲解了如何设置Cocos2d-x开发环境,包括安装、配置以及Lua的集成。此外,...

    《Cocos2d-x实战 Lua卷》源码.7z

    8. **网络通信**:如果源码包含联网功能,可以了解如何在Cocos2d-x中实现网络请求,实现多人在线游戏或同步游戏状态。 9. **性能优化**:查看源码中关于性能优化的技巧,如减少不必要的计算、利用缓存、优化渲染等...

    Cocos2d-x实战:Lua卷

    而Lua则是一种轻量级的脚本语言,因其简洁的语法和易于集成的特点,常被用作Cocos2d-x中的主要编程语言。 本教程将深入讲解如何利用Cocos2d-x和Lua构建游戏,涵盖以下几个核心知识点: 1. **Cocos2d-x框架基础**:...

    cocos2d-x+lua游戏demo源码

    在cocos2d-x中结合lua,开发者可以利用lua的易读性和灵活性来编写游戏逻辑,同时利用cocos2d-x的图形渲染和物理引擎等特性。这种组合使得游戏开发变得更加高效,因为lua代码可以快速迭代,而cocos2d-x则负责处理底层...

    Cocos2d-x实战lua卷

    在Cocos2d-x中,Lua通过tolua++或者spidermonkey等工具进行绑定,使lua脚本能够调用C++接口,实现与引擎的无缝对接。 书中可能涵盖了以下几个核心知识点: 1. **Lua基础知识**:包括变量、数据类型、表(table)的...

    cocos2d-x-cocos2d-x-2.2.2.zip

    cocos2d-x不仅适用于游戏开发,还可以用于创建教育软件、互动媒体和其他2D图形应用,其强大的场景管理、精灵(Sprite)系统和粒子效果等功能,使得开发者能够快速构建各种复杂的2D场景。 总的来说,cocos2d-x 2.2.2...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    开发者可以利用Flash强大的动画编辑功能,创建出丰富的动态效果,然后在cocos2d-x中无缝使用。 其次,该工具提供了详细的资源映射,确保Flash中的图层、帧和时间轴等元素能够准确地对应到cocos2d-x的节点结构中。这...

    Cocos2d-x实战C++卷关东升著完整版pdf

    读者需要理解C++的基本语法、类与对象、模板等核心概念,以便更好地运用到Cocos2d-x中。 在Cocos2d-x框架内,主要包括场景(Scene)、层(Layer)、节点(Node)等概念。场景是游戏的顶层容器,可以包含多个层,层...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    6. **音频和音乐**:介绍如何在Cocos2d-x中播放背景音乐和音效,以及音乐的控制和管理。 7. **网络与存储**:讨论如何进行网络通信,如下载更新、保存和读取游戏数据。 8. **性能优化**:提供关于代码优化、内存...

    Cocos2d-x之Lua核心编程 ,刘克男,杨雍著 ,P227

    在Cocos2d-x中,Lua被用作游戏逻辑和控制层的语言,可以快速实现游戏逻辑和交互。 2. Cocos2d-x与Lua的集成:Cocos2d-x提供了一个名为Cocos2dx-Lua的模块,使得开发者可以直接使用Lua编写游戏代码。这个模块包含了...

    cocos2d-x游戏源码 三国策略游戏源码

    1. **场景与层管理**:cocos2d-x中的Scene和Layer类是游戏的基本构建块。Scene代表一个完整的屏幕视图,而Layer则用于组织游戏的不同部分,如背景、角色和用户交互元素。学习源码时,要理解如何创建和管理这些对象。...

    Cocos2d-x 使用Lua开发基础

    5. **节点和场景管理**:在Cocos2d-x中,游戏由一系列节点(如Sprite、Label、Layer等)组成,这些节点构成了场景。你可以使用Lua创建和管理这些节点,例如创建一个新的精灵,添加到场景中,或者改变其位置、大小、...

    迷失航线-Cocos2d-x项目实战-射击类游戏-关东升

    《迷失航线》是一款基于Cocos2d-x框架开发的射击类游戏,专为移动设备设计。Cocos2d-x是一个开源的游戏开发框架,它使用C++作为主要编程语言,同时支持Lua和JavaScript,广泛应用于2D游戏开发。在这个项目实战中,...

    Cocos2d-x之Lua核心编程 配套代码

    3. **Cocos2d-x API在Lua中的使用**:Cocos2d-x的所有功能在Lua中都有对应的接口,例如创建精灵(Sprite)、层(Layer)、场景(Scene)、动作(Action)等。学习这些API,你可以创建游戏对象、设置动画效果,并处理用户输入...

    Cocos2d-x学习笔记

    - 学习渲染流程:Cocos2d-x使用OpenGL作为渲染接口,初学者需要学习OpenGL基础以及Cocos2d-x中的渲染流程和优化技巧。 - 掌握事件处理:游戏中的事件处理是交互的核心,需要学习如何响应用户输入和处理游戏中各种...

    Cocos2d-x之Lua核心编程_配套代码

    在Cocos2d-x中,Lua与C++的交互主要依赖于tolua++这个工具,它能够将Lua脚本编译为C++可调用的函数,使得开发者可以在Lua中编写游戏逻辑,而在C++中处理底层性能敏感的部分。这样,开发者可以享受到Lua的快速开发...

    cocos2d-x 案例开发大全 第二章(源码)

    4. **精灵(Sprite)和动画(Animation)**:cocos2d-x中的精灵是可移动的2D图像,可以组合成复杂的动画效果。通过SpriteBatchNode优化大批量精灵的渲染效率,同时,使用Animate类实现帧动画。 5. **物理引擎(Physics ...

    cocos2d-x 《保卫萝卜》源代码

    Cocos2d-x提供了一系列的类,如Scene(场景)、Layer(层)、Sprite(精灵)和Node(节点),它们构成了游戏世界的基本元素。在《保卫萝卜》中,每个萝卜、怪物、炮塔都可能被表示为Sprite,而游戏地图和各种交互...

    cocos2d-x-3.13.1.zip

    《cocos2d-x 3.13.1:深入解析与应用》 cocos2d-x 是一个开源的游戏开发框架,广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等操作系统。它的3.13.1版本是一个重要的里程碑,提供了诸多改进和优化,...

Global site tag (gtag.js) - Google Analytics