展会信息港展会大全

Cocos2dx Widget 按钮透明区域过滤,cocos2dxwidget
来源:互联网   发布日期:2015-09-28 15:35:09   浏览:2377次  

导读: Cocos2dx Widget 按钮透明区域过滤,cocos2dxwidget 小伟哥 遇到一个命题: 按钮透明区域过滤。当点击一个建筑按钮、花的时候不得不想一些方法把点击透明区域过滤掉。 让...

Cocos2dx Widget 按钮透明区域过滤,cocos2dxwidget

小伟哥 遇到一个命题:

按钮透明区域过滤。当点击一个建筑按钮、花的时候不得不想一些方法把点击透明区域过滤掉。

让点击也没有效果滴啦。

开始搜索了半天才有所思路。

在网络上很多贴代码的。

http://blog.csdn.net/lwuit/article/details/40658347

整理后代码如下:

bool CCMenu::CheckAlphaPoint(CCMenuItem* pChild, const CCPoint& point)

{

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

CCNode* selectSprite = ((CCMenuItemSprite*)pChild)->getSelectedImage();

CCRenderTexture *renderer = CCRenderTexture::create(winSize.width, winSize.height);

renderer->begin();

bool visible = selectSprite->isVisible();

if (visible) {

selectSprite->visit();

}

else

{

selectSprite->setVisible(true);

selectSprite->visit();

selectSprite->setVisible(false);

}

GLubyte pixelColors[4];

#if ( CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)

glReadPixels(point.x, point.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixelColors[0]);

#else

glReadPixels(point.x, point.y, 1, 1, GL_ALPHA, GL_UNSIGNED_BYTE, &pixelColors[0]);

#endif

int alpha = pixelColors[0];

CCLOG("----alpha %d", alpha);

renderer->end();

if (alpha <= 30)

{

return true;

}

else

{

return false;

}

}

上面代码的确在测试工程上面直接简历个ccsprite 活着 menuitem 是可以执行的。

随着UI工具的进步。我们选择了CocoStudio 的 Widget 。方便了你我埃

但是可但是,把上面的代码贴过来,试了试真心不能用埃

有些同志,到此放弃了对知识原理的探究。

程序就是苦埃遇到这样的问题必须往下研究不是?

经过了多重推敲与图纸推测。

后来发现了出现问题的根本原因:

CCRenderTexture *renderer 渲染后不能得到位置上面的颜色值 为0 00000为什么为0

赞助本站

人工智能实验室

相关热词: android开发 应用开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港