cocos3.3 ClippingNode做游戏的新手指导 .

cocos3.3 ClippingNode做游戏的新手指导 .,第1张

概述游戏开发中,很多游戏都会出现新手指导,让玩家熟悉游戏的 *** 作流程。 那做为苦逼的我们,如何实现新手指导?(虽然很苦逼,有时却很快乐~) (1)背景置灰、图标高亮 (2)屏蔽其他图标的点击事件 1. 背景置灰、图标高亮 背景遮罩使用 :ClippingNode ClippingNode 的定义 ClippingNode(裁剪节点)可以用来对节点进行裁剪,可以根据一个模板切割图片的节点,生成任何形状的节 游戏开发中,很多游戏都会出现新手指导,让玩家熟悉游戏的 *** 作流程。

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

(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,150));  	clipper->addChild(layerBg);  	auto stencil=Sprite::create("Closenormal.png");  	stencil->setposition(closeItem2->getposition());  	clipper->setStencil(stencil);//设置裁剪模板  	clipper->setInverted(true); //设置底板可见,显示剩余部分  	clipper->setAlphaThreshold(0.0f);//设置绘制底板的Alpha值为0 
    auto clipper=ClipPingNode::create(); //创建一个ClipPingNode对象    this->addChild(clipper,1);        //添加了一个背景层    auto layerBg=Layercolor::create(color4B(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


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

2.屏蔽其他的图标的点击事件
auto Listen_layer = Layer::create();//首先在场景的最上方再添加一个layer  	this->addChild(Listen_layer,200);//zOrder设置为200,反正能在最上方就好  	auto Listener = EventListenertouchOneByOne::create();//创建一个触摸监听(单点触摸)  	Listener->ontouchBegan = CC_CALLBACK_2(HelloWorld::ontouchBegan,this);//指定触摸的回调函数  	 _eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener,Listen_layer);//将Listener和layer绑定,放入事件委托中  	Listener->ontouchBegan = [=](touch *touch,Event *event){  	 auto point = Director::getInstance()->convertToGL(touch->getLocationInVIEw());//获得当前触摸的坐标  	auto rect = closeItem2->boundingBox();  	if(rect.containsPoint(point))//如果触点处于rect中  	{  		Listener->setSwallowtouches(false);  	}  	else  	{  		Listener->setSwallowtouches(true);  	}  	return true;	};  

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

Listener->setSwallowtouches(false); //可以向下传递触摸
其实主要的想法就是:

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

总结

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

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

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

原文地址: http://outofmemory.cn/web/1043850.html

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

发表评论

登录后才能评论

评论列表(0条)

保存