cocos2d-x笔记(八)Lua开发飞机大战-2-游戏加载界面

原创 2014年04月16日 08:46:44

游戏启动时有很多资源需要加载和更新,在加载界面可以预先将音乐、音效加载内存,还有很重要的一点,也是我们选择lua的重要原因之一——进行游戏内部的更新。所以加载界面是必不少的。

CCSpriteFrameCache

精灵是游戏中必不少的一部分,精灵的主要创建方式有两种,一种是通过图片文件的文件名,另一种是通过精灵帧SpriteFrame。在开发过程中我们大部分时间使用的都是第二种方式。那为什么不直接纹理资源创建CCSprite对象呢?这是一个十分巧妙的设计方法,将图片加载和创建对象分开进行处理。这样就可以事先将纹理资源加载到内存中,然后在适当的时机创建CCSprite。

CCSpriteFrameCache为我们提供了一个管理纹理资源的简单的方法。这样避免了文件和内存间频繁的操作,运行速度。一些常用的精灵帧可以一直存在于缓存池中。

plist文件的制作,参考这篇博文http://blog.csdn.net/yifuteli_kevin/article/details/22599853

现在开始制作加载界面,第一步肯定是创建图层,然后添加一点动画(以免被人认为程序卡死了)。新建一个文件WelcomeLayer.lua,在create方法中创建加载界面的图层和动画。

module("WelcomeLayer",package.seeall)
require "Lua/GameLayer"
function create()
	local layer = CCLayer:create()
	CCSpriteFrameCache:sharedSpriteFrameCache():addSpriteFramesWithFile("Images/shoot_background.plist")
	local background = CCSprite:createWithSpriteFrameName("background.png")
	background:setAnchorPoint(ccp(0,0))
	background:setPosition(ccp(0,0))
	layer:addChild(background)	
	
	local loading = CCSprite:createWithSpriteFrameName(game_loading1.png")	
	local copyRight = CCSprite:createWithSpriteFrameName("shoot_copyright.png")
	copyRight:setPosition(visibleSize.width/2,visibleSize.height/2 + loading:getContentSize().height/2)
	layer:addChild(copyRight)
	
	loading:setPosition(visibleSize.width/2,visibleSize.height/2 - copyRight:getContentSize().height/2)
	local animation = CCAnimation:create()
	animation:setDelayPerUnit(0.2)
	animation:addSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("game_loading1.png"))
	animation:addSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("game_loading2.png"))
	animation:addSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("game_loading3.png"))
	local animate = CCAnimate:create(animation)
	local actionDone = CCCallFunc:create(finish)
	local repeatAction = CCRepeat:create(animate,1)
	local sequence = CCSequence:createWithTwoActions(repeatAction,actionDone)
	loading:runAction(sequence)
	layer:addChild(loading)
	return layer
end

第二步.当动画完成后,或者是更新完成切换到游戏场景界面

function finish()
	--local sceneGame  = CCScene:create()
	--sceneGame:addChild(GameLayer.create())
	--CCDirector:sharedDirector():replaceScene(sceneGame)
end

这样当然还不能运行,还要将图层加载到一个场景中,第一个场景当然是main.lua中创建,要不然还叫什么main文件。

local sceneGame  = CCScene:create()
sceneGame:addChild(WelcomeLayer.create())
CCDirector:sharedDirector():runWithScene(sceneGame)

并且在main文件获取可视界面的大小,这个参数在很多地方都需要使用,就将他定义成全局变量吧

visibleSize = CCDirector:sharedDirector():getVisibleSize()

第一个界面就出来了,看来使用Lua还是很方便、简单的

效果图:

相关文章推荐

cocos2d-x笔记(十一)Lua开发飞机大战-5-让飞机动起来

再上一篇已经将飞机添加到了游戏,下一步就要让它动起来

cocos2d-x笔记(七)Lua开发飞机大战-1-搭建开发环境

刚见Lua的基本语法学习完,就

cocos2d-x lua 学习笔记(1) -- 环境搭建

Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,...

Cocos2d-x 3.2 lua飞机大战开发实例(三)道具的掉落,碰撞检测,声音,分数,爆炸效果,完善游戏的功能细节

Cocos2d-X 3.2  lua语言飞机大战开发实例(三) 7.添加声音,更新分数,添加爆炸效果,道具的掉落、道具的碰撞检测等完善游戏功能  爆炸的效果添加 ...
  • wy_boke
  • wy_boke
  • 2014年12月20日 17:12
  • 872

Cocos2d-x3.X入门游戏实例(一) 经典飞机大战开发笔记

有一个多月没有写学习笔记了,主要是在学习了一段时间后觉得想整个小游戏,选来选去选择了微信飞机大战作为处女作。飞机大战内容简单,比较适合刚学习Cocos2dx的新手拿来练手,而且网上的教程和源码都很多,...

Cocos2d-X研究之豪华版飞机大战游戏开发系列

 在介绍了前面的几篇后,上一篇我们学习了主角类的实现,对于源码会在下一篇中上传,需要源码的可以在下一篇中看到下载链接,开源才是王道,分享才能成长。 这篇继续介绍下游戏中的子弹层的渲染,也就是B...

小小菜之Cocos2d-x游戏开发旅程——项目实例:飞机大战(3)

3.子弹类和敌机类的封装

使用Quick-Cocos2d-x开发植物大战僵尸03-游戏加载页面

呵呵,之前说好的要用lua写一个植物大战僵尸的Demo,只是写了个开头,然后就没有后面了,现在没什么事,就觉得写了个开头算怎么回事啊喂,所以又无耻的开始写了,还请各位多多原谅。好了,废话不多说,开始吧...

cocos2d-x游戏开发系列教程-坦克大战游戏加载地图的编写

上节课写了关卡选择场景,那么接下来写关卡内容,先写最基本的地图的加载我们新建一个场景类,如下所示:class CityScene : public cocos2d::CCLayer { public:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x笔记(八)Lua开发飞机大战-2-游戏加载界面
举报原因:
原因补充:

(最多只允许输入30个字)