关于不规则图片的点击,成功后,用TexturePacker把原来散的图片打包到一起了,结果之前读像素读不出来了!
之前修改BUTTON.CPP的代码实现了无规则图片的点击(就是透明的部分忽略点击,有颜色才触发点击事件)
bool Button::AlphaTouchCheck(const Vec2& point)
{
if (getAlphaTouchEnable())
{
Image* normalImage = new (std::nothrow) Image();
normalImage->initWithImageFile(_normalFileName);
auto data = normalImage->getData();
if (data == NULL)
{
return true;
}
auto locationInNode = this->convertToNodeSpace(point);
//图片的0,0 是左上角 所以要和触摸点的Y转换一下 也就是“(normalImage->getHeight() - (int)(locationInNode.y) - 1)”
//该data值是把二维数组展开成一个一维数组, 因为每个像素值由RGBA组成, 所以每隔4个char为一个RGBA, 并且像素以横向排列
int pa = 4 * ((normalImage->getHeight() - (int)(locationInNode.y) - 1) * normalImage->getWidth() + (int)(locationInNode.x)) + 3;
unsigned int ap = data;
if (ap < 20)
{
CC_SAFE_DELETE(normalImage);
return false;
}
else
{
CC_SAFE_DELETE(normalImage);
return true;
}
}
return true;
}
现在把图片打包后,代码 愀甀琀漀 data = normalImage->getData(); 取不来东西了,所以造成
if (data == NULL)
{
return true;
}
直接返回了。
求助怎么解决,难道不能图片打包嘛?可以在大小上省好多呢!!
大神救我!