Button 新增如下方法:主要是参考网上的方法,点击按钮时像素取出来的都是一个值!还请各位大虾看看那里出问题了!!!
目的主要是做不规则按钮!!
bool Button::AlphaTouchCheck(const Vec2 &point)
{
CCLOG(“point.x %f,point.y = %f”,point.x,point.y);
bool isTouchClaimed = false;
bool is_alpha = getAlphaTouchEnable();
if (is_alpha)
{
// check claimed touch arena
Size winSize = cocos2d::Director::getInstance()->getWinSize();
Sprite* selectSprite = (Sprite*)getVirtualRenderer();
Vec2 cutPos = selectSprite->getPosition();
// get screen point
Vec2 wordpx = selectSprite->getParent()->convertToWorldSpace(cutPos);
selectSprite->setPosition(wordpx);
RenderTexture *renderer = RenderTexture::create(winSize.width, winSize.height);
// renderer->beginWithClear(0,0,0,0);
renderer->begin();
bool visible = selectSprite->isVisible();
if (visible)
{
selectSprite->visit();
}
else
{
selectSprite->setVisible(true);
selectSprite->visit();
selectSprite->setVisible(false);
}
GLubyte pixelColors;
#if ( CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
glReadPixels(point.x, point.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixelColors);
#else
glReadPixels(point.x, point.y, 1, 1, GL_ALPHA, GL_UNSIGNED_BYTE, &pixelColors);
#endif
int alpha = pixelColors;
CCLOG("----alpha %d", alpha);
renderer->end();
selectSprite->setPosition(cutPos);
CCLOG("----------------");
CCLOG("wordpx.X =%f,wordpx.Y %f",wordpx.x,wordpx.y);
CCLOG("point.x =%f,point.Y %f",point.x,point.y);
CCLOG("r%d,g%d,b%d,p%d", pixelColors,pixelColors,pixelColors,pixelColors);
CCLOG("----------------");
if (alpha <= 20)
{
isTouchClaimed = false;
}
else
{
isTouchClaimed = true;
}
// check claimed touch arena
}
else
{
isTouchClaimed = true;
}
return isTouchClaimed;
}
