ClippingNode做游戏的新手指导

auto stencil=Sprite::create("arrow.png");
stencil->setPosition(btn_right->getPosition());

    btn_right = Button::create("arrow.png");

游戏开发中,很多游戏都会出现新手指导,让玩家熟悉游戏的操作流程。

那做为苦逼的我们,如何实现新手指导?(虽然很苦逼,有时却很快乐~)

(1)背景置灰、图标高亮

(2)屏蔽其他图标的点击事件

1. 背景置灰、图标高亮

背景遮罩使用 :ClippingNode

ClippingNode 的定义

ClippingNode(裁剪节点)可以用来对节点进行裁剪,可以根据一个模板切割图片的节点,生成任何形状的节点显示。ClippingNode是利用模板遮罩来完成对Node区域裁剪的技术。

ClippingNode 的具体使用文档:http://cocos2d-x.org/docs/manual/framework/native/v3/ClippingNode/zh

那具体如何实现,上菜~

    auto clipper=ClippingNode::create(); //创建一个ClippingNode对象
    this->addChild(clipper,1);

    //添加了一个背景层
    auto layerBg=LayerColor::create(Color4B(0,0,0,150));
    clipper->addChild(layerBg);

    auto stencil=Sprite::create("arrow.png");
    stencil->setPosition(btn_right->getPosition());

    clipper->setStencil(stencil);//设置裁剪模板
    clipper->setInverted(true); //设置底板可见,显示剩余部分
    clipper->setAlphaThreshold(0.0f);//设置绘制底板的Alpha值为0

主要说一下

    btn_right = Button::create("arrow.png");

    auto stencil=Sprite::create("arrow.png");
    stencil->setPosition(btn_right->getPosition());
   

如果你的模版和你用显示的控件所用的图片都是相同的就可以高亮这个控件。

2.屏蔽其他的图标的点击事件

auto listen_layer = Layer::create();//首先在场景的最上方再添加一个layer
    this->addChild(listen_layer,200);//zOrder设置为200,反正能在最上方就好

    listener = EventListenerTouchOneByOne::create();//创建一个触摸监听(单点触摸)
    listener->onTouchBegan = CC_CALLBACK_2(TollgateScene::onTouchBegan, this);//指定触摸的回调函数
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,listen_layer);//将listener和layer绑定,放入事件委托中
    listener->onTouchBegan = [=](Touch *touch, Event *event){
        auto point = Director::getInstance()->convertToGL(touch->getLocationInView());//获得当前触摸的坐标
        auto rect = btn_right->boundingBox();
        if(rect.containsPoint(point))//如果触点处于rect中
        {
            listener->setSwallowTouches(false);
        }
        else
        {
            listener->setSwallowTouches(true);
        }
        return true;
    };

//设置是否向下传递触摸

listener->setSwallowTouches(false); //可以向下传递触摸

其实主要的想法就是:

在场景最上面添加一个层,然后给层绑定点击事件,如果触摸坐标在你需要触摸的范围,就可以向下传递触摸,如果不在则停止向下传递触摸。

时间: 2024-10-10 14:40:12

ClippingNode做游戏的新手指导的相关文章

cocos2dx 3.0 用ClippingNode做游戏的新手引导

转自:http://blog.csdn.net/star530/article/details/20851263 本篇介绍的是用ClippingNode 做游戏的新手引导,额,或者说是做新手引导的一种可尝试的方式.ClippingNode的解释,我盗用Jacky的话来说就是:CCClipingNode是一个可裁剪节点,简单理解: (1)首先它是一个节点,继承于CCNode,所以它可以像普通节点一样放入CCLayer,CCScene,CCNode中. (2)作为节点,它就可以用作容器,承载其他节点

as3 页游中,新手指导中,屏蔽所有交互对象,但除了指定交互对象可用的方法【转http://blog.csdn.net/linjf520/article/details/9450945】

package { import flash.display.InteractiveObject; import flash.display.Stage; import flash.events.MouseEvent; /** * 新手指导管理器 * @author jave.lin * @date 2013-7-24 */ public class GuideManager{ private static var stage:Stage; /**设置舞台*/ public static fun

游戏新手村:从零开始做游戏

写在前面的话 年前看到张亮<从零开始做运营>在百度阅读上发布,于是便萌生了自己也撰写1篇作品的想法.首先是为了记录自己的想法.记录和观点,其次也算是对自己过去几年做游戏的一点总结,最后也想过把瘾:"看,这是哥写的书". 为什么要写这本书 最近这10多年是中国游戏产业蓬勃发展的10多年.一波又一波的游戏公司先后上市,一个又一个的千万富翁陆续诞生,一批又一批的有志年轻人和应届毕业生前仆后继的进入到了游戏行业,去从事游戏策划以及游戏运营等工作. 互联网的精神是开放和分享,但是游戏

Petroglyph专访:中间件做游戏

Xsolla有幸与Petroglyph的总裁及创始人Michael Legg进行了对话.这是及时战略游戏中对主要一家公司.由前Westwood的员工 创办,还设计了一块新的RTS游戏-Grey Goo,会将传统的命令与征服的游戏情景提升到一个全新的阶段. Michael讲解了一些游戏发展过程,并介绍了中间件做游戏的优势. 给我们介绍一个你的工作室吧 Petroglyph 专注于即时战略游戏.我们的出生召唤我们回归到命令与征服的光荣使命中.现在,我们正在制作新的RTS游戏-Grey Goo.在与对

张书乐:辣条也妄想做游戏?共享时代游戏不仅仅是吸粉

距离7月末的ChinaJoy(中国国际数码互动娱乐展览会)还有一个月,几个游戏大咖群里总有人发出类似的感慨:整个6月都没看见这个游戏业界一年一度的盛宴,有什么消息,看来游戏产业真的没落了,大家都去玩共享单车和直播去了. 文/张书乐(人民网.人民邮电报专栏作者) 新著有<微博运营完全自学手册> 诚然,在新世纪开始盛行了十余年的游戏产业,一度是整个互联网行业的代名词,至少在盈利角度.也就是2010年以后,才开始被接憧而来的团购.互联网+.众筹.IP.直播和共享等新词汇和新产业蓝海所淹没.但不能不说

做游戏,不加班行不行?

做游戏开发有一段时间里,我一直在想一个问题:为什么做游戏一定要加班? 我听到过很多人告诉我各种各样的说法,我觉得下边这句台词是最经典的: 天下武功,无坚不摧,唯快不破 ---- 终极无敌杀人王. 这个行业竞争太激烈,一个热门的游戏上线,分分钟山寨作品就紧跟随后.就拿最近的最火的<Pokeman Go>来说,这个游戏目前还只是在仅有的少数几个国家进行小量测试,但是,国内已经有类似产品上线. 前一段,<皇室战争>上线的时候,没多久,国内也有另外一家公司,做了个类似的三国背景的游戏.当然

1、两人做游戏,轮流报数,报出的数只能是1、2、3、4、5、6、7、8其中之一,把两个人报出的数连加起来,谁报数后加起来的和是123,谁就获胜,让你先报,为了确保胜利,你第一个数报多少?

看到一道奥数题,如下 两人做游戏,轮流报数,报出的数只能是1.2.3.4.5.6.7.8其中之一,把两个人报出的数连加起来,谁报数后加起来的和是123,谁就获胜,让你先报,为了确保胜利,你第一个数报多少? 看了网上一些答案,觉得不太好理解,下面说说自己的解题思路. 首先用123去除9,得到商为13余数为6.   于是我们可以先报6然后让此后每一轮的大家报数的和为9. 这样可以保证最后一轮中对方无论报什么数都无法让总数到达123,因为到了最后一轮时,若用123去减此前所有报数之和肯定为9.这时,对

用aauto做游戏修改器

import win.ui; import process; //以下自动生成,不用看. /*DSG{{*/ var winform = ..win.form(text="AAuto Form";right=215;bottom=95) winform.add( button={cls="button";text="修改";left=120;top=16;right=205;bottom=57;z=1}; edit1={cls="edi

Web前端可以转行做游戏吗?

作者:ManfredHu 链接:http://www.manfredhu.com/2018/03/15/31-laya-game-tips/index.html 声明:版权所有,转载请保留本段信息,谢谢大家 LayaBox Web前端最近都在跨界!!现在又伸手到游戏领域了.但是真的那么好跨界吗?请让我一一道来. Canvas和WebGL的出现其实让Web游戏有了实现的可能,但是让我们用ctx一个个画,效率还是低了点,所以需要游戏引擎.它帮助我们去动态渲染游戏每一帧的元素. 业界比较著名的几个H5