cocos2d-x 3.0 游戏关卡滑动 d动 不会出现黑边效果

cocos2d-x 3.0 游戏关卡滑动 d动 不会出现黑边效果,第1张

概述#pragma once#include "cocos2d.h"#include "ShopScene.h"using namespace cocos2d;class ChooseScene : public Layer {public: static Scene* createScene(); virtual bool init(); void menuCloseCall

#pragma once#include "cocos2d.h"#include "ShopScene.h"using namespace cocos2d;class ChooseScene : public Layer {public:	static Scene* createScene();	virtual bool init(); 	voID menuCloseCallback(Ref* pSender);CREATE_FUNC(ChooseScene);public: 	bool ontouchBegan(touch* touch,Event* event);	voID ontouchmoved(touch* touch,Event* event);	voID ontouchended(touch* touch,Event* event);	Point diff_2; 	Point diff_1;		float bg_wIDth_max;	float bg_wIDth_min;	Sprite* cocosImage;};cpp#include "ChooseScene.h"USING_NS_CC;Scene* ChooseScene::createScene(){	auto scene = Scene::create();	auto layer = ChooseScene::create();	scene->addChild(layer);return scene;}bool ChooseScene::init(){	if ( !Layer::init() )	{return false;}		Size visibleSize = Director::getInstance()->getVisibleSize();	Point origin = Director::getInstance()->getVisibleOrigin();	bg_wIDth_max = 6500; // 背景全然出现 最大X 	bg_wIDth_min = 1024; // 最小X 		background_init();	return true;}voID ChooseScene::background_init(){	cocosImage = Sprite::create("ChooseScene/map.png");	cocosImage->setAnchorPoint(Point(1,0)); ///锚点 1,0 图片的右下角	cocosImage->setposition(Point(1024,0)); // 屏幕是 1024 768 锚点是1,0 所以所有显示在屏幕上 x 位置 是1024	this->addChild(cocosImage,1,1);	auto Listener_1 = EventListenertouchOneByOne::create(); //加入监听事件	Listener_1->setSwallowtouches(true);	Listener_1->ontouchBegan = CC_CALLBACK_2(ChooseScene::ontouchBegan,this);	Listener_1->ontouchmoved = CC_CALLBACK_2(ChooseScene::ontouchmoved,this);	Listener_1->ontouchended = CC_CALLBACK_2(ChooseScene::ontouchended,this);	_eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener_1,this);}bool ChooseScene::ontouchBegan(touch* touch,Event* event) // 假设有触摸范围的话 能够再这里加入一个{	// auto beginPoint = touch->getLocation();	// if (touch_bg.containsPoint(beginPoint)) /////touch_bg 是point 	// {	// return true;	// }	return true;}voID ChooseScene::ontouchmoved(touch* touch,Event* event){	if (cocosImage->getpositionX() >= bg_wIDth_min && cocosImage->getpositionX() <= bg_wIDth_max) //推断 是不是在 规定的范围内	{		diff_2 = touch->getDelta();		auto currentPos = cocosImage->getposition();		cocosImage->setposition(currentPos.x + diff_2.x,currentPos.y);	}	if (cocosImage->getpositionX() > bg_wIDth_max) // 最左边 //当移动到最左边的时候 返回最大范围	{		cocosImage->setposition(bg_wIDth_max,cocosImage->getpositionY());	}	if (cocosImage->getpositionX() < bg_wIDth_min) /// 最右边 同上	{		cocosImage->setposition(bg_wIDth_min,cocosImage->getpositionY());	}}voID ChooseScene::ontouchended(touch* touch,Event* event){	if (diff_1.x == diff_2.x)      //推断 上次触摸点与这次触摸点 是否不同 假设同样 地图不进行移动	{		return;	}	diff_1 = diff_2;        //保留这次移动參数  		float pm = 0;	if (diff_1.y > 0)	{		pm = 1;	}	else	{		pm = -1;	}	if (cocosImage->getpositionX() >= bg_wIDth_min - pm * 180 		&& cocosImage->getpositionX() <= bg_wIDth_max - pm * 180)    /// 滑动边界推断  最大范围	{		 if (abs(diff_1.x)>=30)		 {			 if (diff_1.x >0)			 {				 auto move_x = Moveto::create(0.8f,Point(cocosImage->getpositionX() + 180,cocosImage->getpositionY()));   				 cocosImage->runAction(move_x);			 }			 else			 {				 auto move_x = Moveto::create(0.8f,Point(cocosImage->getpositionX() - 180,cocosImage->getpositionY())); 				 cocosImage->runAction(move_x);			 }		 }	}		if (cocosImage->getpositionX() >= bg_wIDth_min - pm * 50 		&& cocosImage->getpositionX() <= bg_wIDth_max - pm * 50)     //边界推断  最小距离	{		if (abs(diff_1.x) < 30)		{			if (diff_1.x >0)			{				auto move_x = Moveto::create(0.5,Point(cocosImage->getpositionX() + 50,cocosImage->getpositionY()));				cocosImage->runAction(move_x);			}			else			{				auto move_x = Moveto::create(0.5,Point(cocosImage->getpositionX() - 50,cocosImage->getpositionY()));								cocosImage->runAction(move_x);			}		}	}}




ScrollVIEw 的滑动的时候 有两个效果?

1.移动到规定范围后 会d回去。可是会看到范围外的图片。


2.不会有d动效果,拖动到规定范围之后。将不能拖动。
所以 这段代码实现了 在没有出规定范围的时候 有滑动效果。
而且不会出现范围以外的图片地区。

移动的时候 使用setpostion 移动结束后 添加一个动作?
。起到了一个缓冲的惯性。

这个横屏实例。竖屏 參照这个 改动參数就可以。

总结

以上是内存溢出为你收集整理的cocos2d-x 3.0 游戏关卡滑动 d动 不会出现黑边效果全部内容,希望文章能够帮你解决cocos2d-x 3.0 游戏关卡滑动 d动 不会出现黑边效果所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存