cocos2d-x用Lua实现场景跳转

首先,我们打开在cocos code IDE 里面新建的项目 在Src下我们新建3个场景分别为 GameScene MenuScene HelpScne。

我们先在MenuScene里面先把我们定义的菜单界面搞出来

require "Cocos2d"

--创建菜单界面

local MenuScene=class("MenuScen",function()

return cc.Scene:create()

end)

--添加一个Create函数

function MenuScene:create()

local scene=MenuScene.new()

scene:addChild(scene:init())

return scene

end

--添加一个构造函数

function MenuScene:ctor() --记住这里必须写ctor()

self.winsize=cc.Director:getInstance():getWinSize()

end

--添加一个初始化函数

function MenuScene:init()

local layer=cc.layer:create()

local label=cc.labelTTF:create("菜单界面","宋体",23)

label:setScale(2)

label:setPosition(self.winsize.width/2,self.winsize.height-100)

layer:addChild(label)

--添加选择菜单

local label1=cc.labelTTF:create("开始游戏",“宋体”,23)

local itemStart=cc.MenuItemLabelL:create(label1)

local label2=cc.labelTTF:create("游戏帮助",“宋体”,23)

local itemHelp=cc.MenuItemLabelL:create(label2)

local menu=cc.Menu:create()

menu:addChild(itemStart)

menu:addChile(itemHelp)

itemHelp:setPositionY(itemHelp:getPositionY()-50)

layer:addChild(menu)

--添加触摸

local function menuCallBack(obj)

print("按下"..obj)

if   tonumber (obj)==10 then

--场景跳转

local scene=require("GameScene")

local gs=scene:create()

cc.Director:getInstance():replaceScene(gs)

elseif tonumber(obj)==12 then

local scene=require("HelpScene")

local gs=scene:create()

cc.Director:getInstance():replaceScene(gs)

end

end

itemStart:setTag(10)
itemHelp:setTag(12)

itemStart:registerSceiptTapHandler(menuCallBack)

itemStart:registerSceiptTapHandler(menuCallBack)

return layer

end

return MenuScene

这样我们就把菜单界面写出来了

然后我们把GameScene界面写一下

require "Cocos2d"

--定义游戏场景

local GameScene=class("GameScene",function()

return cc.Scene:create()

end)

--create函数

function GameScene:create()

local scene=GameScene.new()

scene:addChild(scene:init())

return scene

end

--构造函数

function GameScene:ctor()

self.winsize=cc.Director:getInstance():getWinSize()

end

--初始化函数

function GameScene:init()

local layer=cc.Layer:create()

local label=cc.LabelTTF:create("游戏界面","",30)

label:setPosition(self.winsize.width/2,self.winsize.height-100)

layer:addChild(label)

local  function touchBegan(touch,event)

local scene=require("MenuScene")

local ms=scene:create()

local tms=cc.TransitionFlipX:create(0.5,ms)

cc.Director:getInstance():replaceScene(tms)

end

--添加触摸键听

local listener=cc.EventListenerTouchOneByOne:create()

listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)

cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(listener,layer)

return layer

end

return GameScene

然后我们再把HelpScene写一下

require "Cocos2d"

--定义游戏帮助场景

local HelpScene=class("HelpScene",function()

return cc.Scene:create()

end)

--create函数

function HelpScene:create()

local scene=HelpScene.new()

scene:addChild(scene:init())

return scene

end

--构造函数

function HelpScene:ctor()

self.winsize=cc.Director:getInstance():getWinSize()

end

--初始化函数

function HelpScene:init()

local layer=cc.Layer:create()

local label=cc.LabelTTF:create("帮助界面","",30)

label:setPosition(self.winsize.width/2,self.winsize.height-100)

layer:addChild(label)

local  function touchBegan(touch,event)

local scene=require("MenuScene")

local ms=scene:create()

local tms=cc.TransitionFlipX:create(0.5,ms)

cc.Director:getInstance():replaceScene(tms)

end

--添加触摸键听

local listener=cc.EventListenerTouchOneByOne:create()

listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)

cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(listener,layer)

return layer

end

return HelpScene

然后我们运行一下,这样就实现了用Lua实现场景跳转了

时间: 2024-07-30 13:45:53

cocos2d-x用Lua实现场景跳转的相关文章

【转】说下lua使用场景

[今日话题]说下lua使用场景 – flea 1. 我们有用,一些逻辑相对简单,没有复杂的数据交互,访问频次超高的接口实现,可以用lua,省得用phpfpm,太重,浪费资源. – 付坤 2. 也可以拿来扩展一下nginx的配置 – 花生 3. lua可以把软件的控制逻辑做成服务器动态配置 – 朝沐金风 4. lua写逻辑,c执行,这样假如服务端的逻辑一变,只需要更新lua脚本即可!我最近的一个项目是这么写的 – 马犇 5. lua还能直接导出字节码执行. 还能导成.o文件编译到nginx – 花

Cocos2d-x 3.0final 终结者系列教程06-Director和场景跳转

这些天互联网大事不少呀 1.逻辑思维分家(所谓合久必分,分久必合,实属正常,切行切珍惜吧) 2.锤子手机开卖  (不管你买没买,反正我没买,作为多年Android开发的我深知说的亮点其实在我看来都是没用的) 3.京东上市        (一直亏损的企业,在国内上市真的不可能,不过公司亏损不表示公司没有价值,这就是潜力股,奉劝各位找对象的多关注些潜力股) 4.聚美优品上市  (话说欧哥虽是官二代,但互联网电商公司上市跟这确实没啥关系,有本事你是官二代也做个上市公司试试呀, 徐小平老师这次算牛了,投

使用cocos2d脚本生成lua绑定

这几天要老大要求把DragonBones移到cocos2dx 3.0 里边,并且绑定lua使用接口.因为刚学lua,使用的引擎也刚从2.2改为3.0,各种不熟悉,折腾了好几天才弄完,有空了总结一下 这篇先说一下cocos2d生成lua绑定的修改,有空的话再写一篇lua中注册回调到c++中方法 我的目录结构 假设我的目录名称是DragonBones -Cocosdx目录 -DragonBones  -c代码 -c代码头 -tools  db_DragonBones.ini genbindings.

cocos2d-x addImageAsync()异步加载资源成功之后的场景跳转问题

http://blog.csdn.net/w20175357/article/details/23546985 1.先说说addImageAsync()异步加载图片的问题 做游戏的时候现在资源的比较大,所有我们必然会有一个loading界面,而我在找写loading界面的方法的时候,发现了2种方法.       一种是自己创建一个线程,再在这个线程里面加载资源,不过由于openGL的限制,只能在主线程里面绘制UI,不过有的人也想出了其他的方法,就是先只缓存,再在主线程里面绘制.这里有这方面的教程

cocos2d之创建自己的场景类

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 首先创建.h的头文件,然后在将一些图片声音素材加到resource文件夹内,最后在创建.cpp文件:         .h头文件中创建一个类,此类一般继承自Layer,首先有一个静态的创建场景的方法,然后是一个初始化方法,还有一个CREATE_FUNC宏: .cpp中就是对.h中class中定义的方法来进行实现 效果图: 代码: MyGameScene.h: 1 #ifndef _MYGAME_SCENE_H_ 2 #defin

Cocos2d 3.3 lua Camera使用

1.为什么要使用Camera 游戏有点像电影,镜头的使用非常重要.忽远忽近,跟随主角,场景切换等等.一般来说2d游戏不太需要使用Camera,所以cocos2d 就没太重视Camera,直到了3.3这个版本才较容易使用Camera.之前一些效果都可以使用其他方式来模拟Camera,但是这样逻辑就不太直观,直接操作Camera是最完美的. 先来看我们这个Camera Demo的效果图: 按照常理来理解就是,一个人不断往上移动(我在飞,哈哈). 游戏实现方式有2种: 1. 固定人物在那个位置,然后把

coco2d-x实现场景跳转

这里我们实现一个按下一个Button实现跳转一个场景把,这里我们需要在头文件加入#include"ui/CocosGUI.h' using namespace ui; 然后我们定于一个Button *bt01=Button::create("放入按钮的图片"); bt01->setPressedActionEnadled(true); bt01->cocos2d::Node::setPosition("定义按钮要放的位置"); this->

unity 背景 按钮 场景跳转

public Texture2D pic; private bool Cl = false; void OnGUI() { GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), pic); GUIStyle style = new GUIStyle(); //实例化一个新的GUIStyle,名称为style ,后期使用 style.fontSize = 50; //字体的大小设置数值越大,字越大,默认颜色为黑色 style.no

【Cocos2D学习】Lua——数学知识的基本应用

学习Cocox,真的是相当麻烦,IDE的支持太差了,Cocox的各种版本也是多种多样,我先研究的是用Lua语言开发,但是学习起来还是蛮有趣的,我喜欢这种学习.下面基本的数学知识在Cocox的几种应用: 1.跳动的小球(向量的应用) local direction=cc.p(math.random(-1,1),math.random(-1,1)) cc.pNormalize(direction) local dot=display.newDrawNode():addTo(self):center(