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还是很方便、简单的

效果图:

cocos2dx 3.2之Lua打飞机项目

1          创建lua打飞机项目 cocos new T32Lua -dE:\Installed\cocos2d-x-3.2\cocos2d-x-3.2\projects -l lua ...
  • toto1297488504
  • toto1297488504
  • 2014年11月20日 00:47
  • 2697

Cocos2d-lua学习笔记之场景跳转

Cocos2d-lua学习笔记
  • dl15600383645
  • dl15600383645
  • 2015年06月19日 09:34
  • 1623

cocos2d-x小游戏——飞机大战

上周,我做了一个基于 cocos2d-x 的飞机大战的游戏,因为我刚学cocos2d-x没多久,所以这个飞机大战很多都是看着别人的教程,再加上自己的一些想法,来做的。下面我想说一说我的思路。飞机大战有...
  • u013271921
  • u013271921
  • 2015年06月15日 16:38
  • 1364

Cocos2d-x开发系列 交叉开发模式四 C++和Lua的数据交互

使用hybrid模式,数据交互是一个比较关注的知识点。C++跟Lua的数据交互怎么处理。C++到Lua: 项目中Lua脚本的宿主是C++,lua库有给我们提供一些列的函数来实现。例如项目中希望在脚本...
  • diyal
  • diyal
  • 2016年06月27日 21:40
  • 572

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

再上一篇已经将飞机添加到了游戏,下一步就要让它动起来
  • yifuteli
  • yifuteli
  • 2014年04月21日 19:09
  • 1510

Andriod Studio 之飞机大战-构建游戏开始界面

1.主要思路:在Android Studio 中 新建游戏界面,并构造出主线程,另外在创建一个类作为游戏界面,在界面在新建一个方法,目的是交由游戏界面类调用; 2.具体方法(代码):package ...
  • DarKnight0213
  • DarKnight0213
  • 2017年05月25日 12:29
  • 465

《飞机大战》安卓游戏开发源码(终)

本文章属于原创性文章,珍惜他人劳动成果,转载请注明出处: http://www.pm-road.com/index.php/2014/11/11/180/   前言:最 近闲来无事,而且也是因为刚...
  • pmroad
  • pmroad
  • 2014年12月18日 16:20
  • 1967

【cocos2d-x 3.5】Lua 退出游戏

cc.Director:getInstance():endToLua()
  • slow_liao
  • slow_liao
  • 2015年05月09日 12:31
  • 2761

【cocos2d-x 3D游戏开发】0: 3D时代到来,学cocos3D还是Unity3D?

作为一名cocos2d-x开发者,开发2D游戏已经有两年多了,这两年来目睹了手游市场的浮躁, cocos引擎的出现降低了手游开发的门槛,提高了手游生产效率,这两年着实是火的不行。然而,手游发展速度神速...
  • elloop
  • elloop
  • 2015年12月09日 08:05
  • 5912

二、如何使用Lua开发配合cocos2d-x开发游戏

在第一篇文章中我们编译得到了一个解决方案,
  • iamagoodguy254
  • iamagoodguy254
  • 2014年04月10日 21:26
  • 1968
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x笔记(八)Lua开发飞机大战-2-游戏加载界面
举报原因:
原因补充:

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