我正在制作一个简单的游戏,但我需要它每秒画二十次图像。我打算使用多个UIImageViews,但我很快就意识到它不会起作用。那么,如何绘制图像,然后在更新计时器触发时“擦除”它们?我尝试使用以下代码,但没有显示任何内容。
- (void) update:(NSTimer*) timer {
UIimage *someImage;
someImage = [UIImage imageNamed:@"car.png"];
[someImage drawAtPoint:thePoint];
}
我试图让thePoint既是NSPoint又是CGRect,但没有出现。现在我该怎么做?注意:thePoint在我的.h文件中声明。它目前是一个NSPoint,我认为它正在被正确使用。
答案 0 :(得分:2)
这真的是你的代码吗?这几乎没有任何意义。你已经创建了一个局部变量someImage
,没有创建一个指向它的对象,然后尝试在这个非对象上调用一个方法尝试使用(UIImage
没有setImage:
)。它几乎可以保证崩溃,如果它不立即崩溃,那么它很可能会导致一个因为它破坏了内存 - 在堆栈上创建的变量就像这样没有被初始化为0(nil
如果它是一个ivar,并试图向一些随机地址发送消息是一个坏主意。为什么要尝试将CGRect
传递给一个甚至在名称中 的方法?最后,您希望在哪里绘制?您需要绘图上下文(通常由视图提供,在标题中提及,但不是问题)以进行绘图。
如果没有其他内容,请查看“绘图指南”的"Images"章节。
答案 1 :(得分:1)
NSPoint
适用于Mac,CGRect
是一个矩形,而不是一个点。您要找的是CGPoint
。尝试这样的事情:
-(void)update:(NSTimer*) timer {
CGPoint thePoint = CGPointMake(0, 0);
UIImage *someImage = [UIImage imageNamed:@"car.png"];
[someImage drawAtPoint:thePoint];
}