cocos2dx-3.4 lua新手引导
2015-03-27 15:40
302 查看
考虑到游戏中都有运用到新手引导,我把我所想的新手引导的功能,写成一个类,新手引导主要是由某些特定的条件触发,比如说,游戏中的等级,任务ID,或者是有某种需求时,需要做出来指引玩家进行操作
主要考虑一下问题:
1、新手引导中断的时候,怎么处理
2、新手引导点击之后不相应,怎么处理
3、一个任务有多步操作,要怎么设计,点击时候,是否判断这个步骤已经完成了,每步操作都有填表控制。。
4、服务只记录任务ID,不记录操作步骤
5、首先他的入口肯定是一个Scene,然后根据local layer = Scene:getChildByName(name),这个name就是策划填表传进来的参数
6、有些响应条件需要额外处理,所以要考虑到额外处理的功能。。
--这是一个新手引导的类
local ClipLayer = class("ClipLayer",function()
return cc.Layer:create()
end)
ClipLayer.__index = ClipLayer --用于访问
-------------------------------------------------------------
ClipLayer.menu_node = nil --这是响应的node
ClipLayer.menu_node_s = nil --这是响应的node
ClipLayer.visibleSize = nil --屏幕大小size
ClipLayer.origin = nil --原点
ClipLayer.nodef = nil --模板
function ClipLayer:create()
local layer = ClipLayer.new()
layer:ctor()
layer:addChild(layer:createClip(),1)
return layer
end
function ClipLayer:ctor()
self.visibleSize = cc.Director:getInstance():getVisibleSize()
self.origin = cc.Director:getInstance():getVisibleOrigin()
end
function ClipLayer:createClip()
local clip = cc.ClippingNode:create()--创建裁剪节点
clip:setInverted(true)--设置底板可见
clip:setAlphaThreshold(0.0)--设置透明度Alpha值为0
local layerColor = cc.LayerColor:create(cc.c4b(0,0,0,150))
clip:addChild(layerColor,8)--在裁剪节点添加一个灰色的透明层
--创建模板,也就是你要在裁剪节点上挖出来的那个”洞“是什么形状的,这里我用close的图标来作为模板
self.nodef = cc.Node:create()--创建模版
local close = cc.Sprite:create("close.jpg")--这里使用的是close的那个图标
self.nodef:addChild(close)--在模版上添加精灵
self.nodef:setPosition(cc.p(self.visibleSize.width /4,self.visibleSize.height /2)) --设置的坐标正好是在close button的坐标位置上
clip:setStencil(self.nodef)--设置模版
return clip
end
--从外界传入一个menu,和一个number
--注意,外面的mneu不要用api里面的一行排列或者是一列排列,
--否则menu会破坏,导致下面的代码运行不了
function ClipLayer:createMenu(menu_node,number)
if self.menu_node then
self.menu_node_s = self.menu_node:getChildByTag(number)
end
function clipfunc(tg,sender)
cclog("输出clipping----点击")
if self.menu_node_s then
local dd = self.menu_node_s:isRunning() --不论是隐藏还是显示,都在运行中
print("判断这个节点是否在运行 " .. tostring(dd))
self.menu_node_s:activate()
else
end
end
self.blackItem = cc.MenuItemImage:create()
self.blackItem:setPosition(cc.p(self.visibleSize.width/2,self.visibleSize.height/2));
self.blackItem:setContentSize(self.visibleSize)--设置大小为整个屏幕的大小
self.closeItemm = cc.MenuItemImage:create("CloseNormal.png","CloseSelected.png")
self.closeItemm:registerScriptTapHandler(clipfunc)
self.closeItemm:setPosition(self.menu_node_s:getPosition())
self.nodef:setPosition(self.menu_node_s:getPosition())
self.blackMenu = cc.Menu:create()
self.blackMenu:setPosition(cc.p(0,0));
self.blackMenu:setAnchorPoint(0,0);
self.blackMenu:addChild(self.blackItem)
self.blackMenu:addChild(self.closeItemm)
self:addChild(self.blackMenu,2)
end
return ClipLayer
主要考虑一下问题:
1、新手引导中断的时候,怎么处理
2、新手引导点击之后不相应,怎么处理
3、一个任务有多步操作,要怎么设计,点击时候,是否判断这个步骤已经完成了,每步操作都有填表控制。。
4、服务只记录任务ID,不记录操作步骤
5、首先他的入口肯定是一个Scene,然后根据local layer = Scene:getChildByName(name),这个name就是策划填表传进来的参数
6、有些响应条件需要额外处理,所以要考虑到额外处理的功能。。
--这是一个新手引导的类
local ClipLayer = class("ClipLayer",function()
return cc.Layer:create()
end)
ClipLayer.__index = ClipLayer --用于访问
-------------------------------------------------------------
ClipLayer.menu_node = nil --这是响应的node
ClipLayer.menu_node_s = nil --这是响应的node
ClipLayer.visibleSize = nil --屏幕大小size
ClipLayer.origin = nil --原点
ClipLayer.nodef = nil --模板
function ClipLayer:create()
local layer = ClipLayer.new()
layer:ctor()
layer:addChild(layer:createClip(),1)
return layer
end
function ClipLayer:ctor()
self.visibleSize = cc.Director:getInstance():getVisibleSize()
self.origin = cc.Director:getInstance():getVisibleOrigin()
end
function ClipLayer:createClip()
local clip = cc.ClippingNode:create()--创建裁剪节点
clip:setInverted(true)--设置底板可见
clip:setAlphaThreshold(0.0)--设置透明度Alpha值为0
local layerColor = cc.LayerColor:create(cc.c4b(0,0,0,150))
clip:addChild(layerColor,8)--在裁剪节点添加一个灰色的透明层
--创建模板,也就是你要在裁剪节点上挖出来的那个”洞“是什么形状的,这里我用close的图标来作为模板
self.nodef = cc.Node:create()--创建模版
local close = cc.Sprite:create("close.jpg")--这里使用的是close的那个图标
self.nodef:addChild(close)--在模版上添加精灵
self.nodef:setPosition(cc.p(self.visibleSize.width /4,self.visibleSize.height /2)) --设置的坐标正好是在close button的坐标位置上
clip:setStencil(self.nodef)--设置模版
return clip
end
--从外界传入一个menu,和一个number
--注意,外面的mneu不要用api里面的一行排列或者是一列排列,
--否则menu会破坏,导致下面的代码运行不了
function ClipLayer:createMenu(menu_node,number)
if self.menu_node then
self.menu_node_s = self.menu_node:getChildByTag(number)
end
function clipfunc(tg,sender)
cclog("输出clipping----点击")
if self.menu_node_s then
local dd = self.menu_node_s:isRunning() --不论是隐藏还是显示,都在运行中
print("判断这个节点是否在运行 " .. tostring(dd))
self.menu_node_s:activate()
else
end
end
self.blackItem = cc.MenuItemImage:create()
self.blackItem:setPosition(cc.p(self.visibleSize.width/2,self.visibleSize.height/2));
self.blackItem:setContentSize(self.visibleSize)--设置大小为整个屏幕的大小
self.closeItemm = cc.MenuItemImage:create("CloseNormal.png","CloseSelected.png")
self.closeItemm:registerScriptTapHandler(clipfunc)
self.closeItemm:setPosition(self.menu_node_s:getPosition())
self.nodef:setPosition(self.menu_node_s:getPosition())
self.blackMenu = cc.Menu:create()
self.blackMenu:setPosition(cc.p(0,0));
self.blackMenu:setAnchorPoint(0,0);
self.blackMenu:addChild(self.blackItem)
self.blackMenu:addChild(self.closeItemm)
self:addChild(self.blackMenu,2)
end
return ClipLayer
相关文章推荐
- cocos2dx-lua制作新手引导
- cocos2dx LUA使用ClippingNode来制作新手引导
- cocos2dx 3.4 lua加密 setXXTEAKeyAndSign
- cocos2dx混合模式应用———制作新手引导高亮区域 (2.2.0)
- lua版本ClippingNode实现新手引导
- cocos2dx 3.0 用ClippingNode做游戏的新手引导
- cocos2dx 新手引导层
- cocos2dx 3.4 lua学习一个简单的小例子
- cocos2dx混合模式应用———制作新手引导高亮区域
- cocos2dx 新手引导
- 【新手入门】vs2012 调试 cocos2dx lua脚本的方法 (二)
- cocos2dx 3.4 lua加密 setXXTEAKeyAndSign
- cocos2dx 3.0 用ClippingNode做游戏的新手引导
- Cocos2dx 3.0 过渡篇(十六)用ClippingNode做游戏的新手引导
- Cocos2dx 3.4 BabeLua 3.0.1.0 Windows下lua环境配置
- 使用cocos2dx做强制新手引导的触摸区域误差的个人解决方案
- cocos2dx 3.4配置vs2013 + lua环境
- cocos2dx3.4开发环境搭建详解(3) cocos2dx lua项目发布到android手机
- cocos2dx 3.4 lua加密 和 解密
- cocos-lua 手游之游戏新手引导