cocos2dx 检测是否点击到了图片的透明区域
2014-07-25 14:18
441 查看
直接上代码
bool FurnitureBase::clickMe(CCPoint p)
{
bool k = false;
for (int i = 0; i<rightAppearanceArray->count(); ++i)
{
Q5Sprite* qp =(Q5Sprite*) (rightAppearanceArray->objectAtIndex(i));
if (qp->boundingBox().containsPoint(p))
{
int8_t data[4];
CCPoint touchPoint = qp->convertToNodeSpace(baseLayer->convertToWorldSpace(p));
CCPoint location = CCPoint((touchPoint.x), (touchPoint.y) );
CCRenderTexture* renderTexture = CCRenderTexture::create(1,1,kCCTexture2DPixelFormat_RGBA8888);
// CCLOG("%f",renderTexture->getAnchorPoint().x);
renderTexture->beginWithClear(0,0,0,0);//只保存渲染一个像素的数据
CCPoint oldPos = qp->getPosition();
CCPoint oldAnchor = qp->getAnchorPoint();
qp->setAnchorPoint(CCPoint(0,0));
qp->setPosition(ccp(-location.x, -location.y));
qp->visit();
qp->setAnchorPoint(oldAnchor);
qp->setPosition(oldPos);
glReadPixels(0,0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, data);
renderTexture->end();
renderTexture->release();
//检测alpha值
// CCLOG("X:%.0f y:%.0f R: %d, G: %d, B: %d, A: %d tag:%d",location.x ,location.y, data[0], data[1], data[2], data[3],//this->getTag());
//CCLOG("%f____________",-location.x);
//CCLOG("%f____________",-location.y);
//CCLOG("%d____________",data[2]);
//CCLOG("%d____________",data[3]);
if(data[3])
{
//CCLOG("非透明");
k = ture;
break;
}else{
// CCLOG("透明");
}
}
}
return k;
}
bool FurnitureBase::clickMe(CCPoint p)
{
bool k = false;
for (int i = 0; i<rightAppearanceArray->count(); ++i)
{
Q5Sprite* qp =(Q5Sprite*) (rightAppearanceArray->objectAtIndex(i));
if (qp->boundingBox().containsPoint(p))
{
int8_t data[4];
CCPoint touchPoint = qp->convertToNodeSpace(baseLayer->convertToWorldSpace(p));
CCPoint location = CCPoint((touchPoint.x), (touchPoint.y) );
CCRenderTexture* renderTexture = CCRenderTexture::create(1,1,kCCTexture2DPixelFormat_RGBA8888);
// CCLOG("%f",renderTexture->getAnchorPoint().x);
renderTexture->beginWithClear(0,0,0,0);//只保存渲染一个像素的数据
CCPoint oldPos = qp->getPosition();
CCPoint oldAnchor = qp->getAnchorPoint();
qp->setAnchorPoint(CCPoint(0,0));
qp->setPosition(ccp(-location.x, -location.y));
qp->visit();
qp->setAnchorPoint(oldAnchor);
qp->setPosition(oldPos);
glReadPixels(0,0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, data);
renderTexture->end();
renderTexture->release();
//检测alpha值
// CCLOG("X:%.0f y:%.0f R: %d, G: %d, B: %d, A: %d tag:%d",location.x ,location.y, data[0], data[1], data[2], data[3],//this->getTag());
//CCLOG("%f____________",-location.x);
//CCLOG("%f____________",-location.y);
//CCLOG("%d____________",data[2]);
//CCLOG("%d____________",data[3]);
if(data[3])
{
//CCLOG("非透明");
k = ture;
break;
}else{
// CCLOG("透明");
}
}
}
return k;
}
相关文章推荐
- cocos2dx 检测是否点击到了图片的透明区域
- Cocos2dx图片像素颜色值获取,可用于判断是否是图片的透明区域
- cocos2dx 3.x判断node点击区域是否透明
- Android ImageView图片透明区域不响应点击事件,不规则图片透明区域响应点击事件
- IOS 多个ImageView图片层叠透明区域点击事件穿透
- Android ImageView图片透明区域不响应点击事件,不规则图片透明区域响应点击事件
- Android 多个ImageView图片层叠透明区域点击事件穿透
- Android 多个ImageView图片层叠透明区域点击事件穿透
- Android ImageView包含透明区域的图片点击事件处理
- cocos2dx 3.0之判断点击精灵透明区域
- Android中不规则图片按钮透明区域的点击效果
- IOS 多个ImageView图片层叠透明区域点击事件穿透
- 把bmp图片的白色区域转化称透明
- AS3透明碰撞 自动判别图片透明区域碰撞
- png图片 透明区域如何 让其不响应鼠标事件?
- 熙熙-C#-webBrowser-登录-数据填充-模拟点击链接-运行JS函数-检测网页是否载入完成
- 检测一个图片是否是真实图片
- AS3:判断图片的某个位置是否透明?
- 检测png图片是否完整的php代码
- andrioid 扩展图片,即点击图片以外的布局区域也响应图片事件