大家好
我需要编写简单的益智游戏,主要条件是,当这块拼图在“释放”时接近目的地时,它就会到达应有的位置。
所以我试图得到图像的每个像素的坐标数组,为此我想比较像素颜色和背景颜色,如果它们不相等,那就是图像像素的坐标。但是......我不知道怎么做。
我试过了:
- (BOOL)isImagePixel:(UIImage *)image withX:(int)x andY:(int) y {
CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((image.size.width * y) + x ) * 4; // The image is png
UInt8 red = data[pixelInfo];
UInt8 green = data[(pixelInfo + 1)];
UInt8 blue = data[pixelInfo + 2];
UInt8 alpha = data[pixelInfo + 3];
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];
NSLog(@"color is %@",[UIColor whiteColor]);
if ([color isEqual:self.view.backgroundColor]){
NSLog(@"x = %d, y = %d",x,y);
return YES;
}
else return NO;
}
这里有什么问题?
或者也许有人可以建议我另一个解决方案?
谢谢。
答案 0 :(得分:0)
这似乎是一个非常麻烦的解决方案。我的建议是,对于每件作品,你都会在拼图中保持一个表示它是左上角坐标的表,当用户抬起手指时,你计算从当前位置到指定位置的绝对距离。