cocos2dx 新手引导

cocos2dx 新手引导,第1张

概述参照了一下大神的文章,自己也试着写了一个 CCClippingNode遮罩解析  利用CCClippingNode做个新手引导 Cocos2d-x教程第(12)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(中) lua 代码如下: local GuideLayer = class("GuideLayer",function() return cc.Layer:create(

参照了一下大神的文章,自己也试着写了一个

CCClippingNode遮罩解析

利用CCClippingNode做个新手引导

Cocos2d-x教程第(12)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(中)


lua 代码如下:

local GuIDeLayer = class("GuIDeLayer",function()    return cc.Layer:create()end)function GuIDeLayer.create(tTarget,fnCallBack)    local layer = GuIDeLayer.new()    if layer:Init(tTarget,fnCallBack)then        return layer    end   endfunction GuIDeLayer:ctor()    endfunction GuIDeLayer:Init(tTarget,fnCallBack)    local winSize = cc.Director:getInstance():getWinSize()    local clipNode = cc.ClipPingNode:create()    self:addChild(clipNode) --底板        local layer = cc.Layercolor:create(cc.c4b(0,110))    clipNode:setInverted(true)    clipNode:addChild(layer)    --clipNode:setAlphaThreshold(0)        local radius = 55    local count = 200    local angel =  2 * 3.14 / count    local tCircle = {}    for i = 1,count do        local radian = i * angel        tCircle[i] = tCircle[i] or {}        tCircle[i].x = radius * math.cos(radian)        tCircle[i].y = radius * math.sin(radian)    end        local stencil = cc.DrawNode:create()    stencil:drawpolygon(tCircle,count,cc.c4b(1,1),1))    local p = cc.p(tTarget:getposition())    local anchorPoint = tTarget:getAnchorPoint()    local size = tTarget:getContentSize()      local wordPos = tTarget:getParent():convertToWorldspace(p)    --计算出模板的有效区域,,转换成屏幕坐标,否则模板有些地方点击失效    local rect = cc.rect(wordPos.x - size.wIDth * anchorPoint.x,wordPos.y - size.height * anchorPoint.y,size.wIDth,size.height)     stencil:setposition(wordPos.x,wordPos.y)    stencil:setContentSize(size)    clipNode:setStencil(stencil) --模板        local function OntouchBegan(touch,event)        return true;    end    local function Ontouchended(touch,event)        print("touchend")        local point = touch:getLocation()        local rect = stencil:getBoundingBox()        if cc.rectContainsPoint(rect,point) then           print("执行了回调")          fnCallBack()        end    end    local maskListener = cc.EventListenertouchOneByOne:create();    maskListener:registerScriptHandler(OntouchBegan,cc.Handler.EVENT_touch_BEGAN);    maskListener:registerScriptHandler(Ontouchended,cc.Handler.EVENT_touch_ENDED);    local eventdispatcher = self:getEventdispatcher();    eventdispatcher:addEventListenerWithSceneGraPHPriority(maskListener,self);     maskListener:setSwallowtouches(true)    return trueendreturn GuIDeLayer

使用如下:
require "Cocos2d"require "Cocos2dConstants"local GameScene = class("GameScene",function()    return cc.Scene:create()end)function GameScene.create()    local scene = GameScene.new()    if scene:Init()then        return scene    end   endfunction GameScene:ctor()    self.visibleSize = cc.Director:getInstance():getVisibleSize()    self.origin = cc.Director:getInstance():getVisibleOrigin()endfunction GameScene:Init()    local winSize = cc.Director:getInstance():getWinSize()    local sprite = cc.Sprite:create("res/Hello.png")    sprite:setposition(winSize.wIDth/3*2,winSize.height/2)    self:addChild(sprite)    --sprite:setScale(0.2)    self.tTarget = sprite    sprite:setScale(0.5)        local GuIDeLayer  = require("GuIDeLayer")    local guIDe     local tcopy = cc.Sprite:create("res/Hello.png")    guIDe = GuIDeLayer.create(sprite,function()guIDe:removeFromParent() end)    self:addChild(guIDe)    return trueendreturn GameScene

其中工程使用cocoIDe 建立的工程。

运行效果如下:

总结

以上是内存溢出为你收集整理的cocos2dx 新手引导全部内容,希望文章能够帮你解决cocos2dx 新手引导所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1033734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存