cocos2dx不响应透明区域事件

cocos2dx不响应透明区域事件,第1张

概述在需要对某些图片的不规则点击区域响应事件 思路是遍历图片上的点.如果是透明区域就不响应事件 过程是在hitTest中做 可以写在基类中.如Node,我是写在Widget::Button中,并且没有完全完善,比如只做了buttonNormalRenderer的.大家可以根据思路用在其它地方. //.h //按钮可支持多边形,透明区域不击中public: void setSupportPolyg

在需要对某些图片的不规则点击区域响应事件

思路是遍历图片上的点.如果是透明区域就不响应事件

过程是在hitTest中做


可以写在基类中.如Node,我是写在Widget::button中,并且没有完全完善,比如只做了buttonnormalRenderer的.大家可以根据思路用在其它地方.

//.h

	//按钮可支持多边形,透明区域不击中public:	voID setSupportpolygontouch(bool value){ _supportpolygon = value; }   protected:	   bool _supportpolygon;


//.cpp

	//add by jj	bool button::hitTest(const Vec2 &pt)	{		if (!_supportpolygon || _scale9Enabled)			return Widget::hitTest(pt);		Vec2 nsp = this->convertToNodeSpace(pt);		Rect bb;		bb.size = _contentSize;		if (bb.containsPoint(nsp))		{			RenderTexture* render = RenderTexture::create(_buttonnormalRenderer->getContentSize().wIDth,_buttonnormalRenderer->getContentSize().height,Texture2D::PixelFormat::RGBA8888);			Sprite *sprite = static_cast<Sprite*>(_buttonnormalRenderer);			Texture2D *texture = sprite->getTexture();			Sprite *tmp = Sprite::createWithTexture(texture,sprite->getTextureRect());			tmp->setVisible(true);			tmp->setAnchorPoint(Vec2::ZERO);			tmp->setposition(Vec2::ZERO);			render->beginWithClear(0,0);			tmp->visit();			//glubyte pcolor[4];			//glreadPixels(nsp.x,nsp.y,1,GL_RGBA,GL_UNSIGNED_BYTE,&pcolor[0]);			render->end();			Director::getInstance()->getRenderer()->render();			Image *img = render->newImage(false);			color4B color = img->getcolorAtPos(nsp.x,nsp.y);			//render->savetofile("test.png");			if (color.a || color.b || color.g)				return true;		}		return false;	}

//关键位置CCImage.h


	color4B <span >getcolorAtPos</span><span >(float x,float y)</span>	{		color4B color = { 0,0 };		int ix = (int)x - 1;		int iy = (int)y - 1;		unsigned char *tmp = _data;		tmp += (iy*getWIDth() + ix) * 4;		color.r = *(tmp++);		color.g = *(tmp++);		color.b = *(tmp++);		color.a = *(tmp++);		return color;	};
之前有考虑用glreadPixels.不知道为什么读出来的都是0.求大神解答 总结

以上是内存溢出为你收集整理的cocos2dx不响应透明区域事件全部内容,希望文章能够帮你解决cocos2dx不响应透明区域事件所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存