如何将UIImage“绘制”到视图中?
我正在做一个简单的游戏,但我需要它每秒钟绘制二十次图像。我打算使用多个UIImageView,但我很快意识到它不起作用。那么,如何绘制图像,然后在更新计时器触发时“擦除”它们?我试图使用下面的代码,但没有出现。如何将UIImage“绘制”到视图中?
- (void) update:(NSTimer*) timer {
UIimage *someImage;
someImage = [UIImage imageNamed:@"car.png"];
[someImage drawAtPoint:thePoint];
}
我试图让点同时NSPoint和CGRect,但没有出现。现在我该怎么做?注意:thePoint是在我的.h文件中声明的。它目前是NSPoint,我认为它正在正确使用。
这真的是你的代码吗?这几乎毫无意义。你已经创建了一个局部变量someImage
,它没有创建一个指向它的对象,然后试图调用这个非对象上的方法,这个对象不存在于你正在使用的类中UIImage
没有setImage:
)。它几乎保证会崩溃,如果它不立即,那么它很可能会导致后面的一个,因为它会破坏内存 - 像这样在堆栈上创建的变量不会初始化为0(nil
),因为它会如果它是一个伊娃,并试图发送消息给一些随机地址是一个坏主意。为什么你会尝试传递一个CGRect
到一个方法,甚至说它的名字它需要一点?最后,你期望这个被绘制在哪里?您需要一个绘图上下文(通常由您的标题中提到的视图提供,但不是问题)进行绘制。
请查看图纸指南的"Images"章节,如果没有别的。
NSPoint
适用于Mac,而CGRect
就是矩形而不是点。你在找什么是CGPoint
。尝试这样的事情:
-(void)update:(NSTimer*) timer {
CGPoint thePoint = CGPointMake(0, 0);
UIImage *someImage = [UIImage imageNamed:@"car.png"];
[someImage drawAtPoint:thePoint];
}
这是一个很好的**点**
是的,抱歉,我没有让这个清醒。除了你自己以外,我还试图说明这一点*(咳嗽)*。 – 2011-05-15 03:23:33
我不熟悉在这种情况下使用图像视图,但你不能将图像设置为一个imageView实例吗?当更新发生时,您可以调用'imageView.image = nil;'然后用'imageView.image = newImage;'设置新图像。如果图像尺寸不是很大(迫使imageView进行缩放),理论上应该能够及时设置图像 – justin 2011-05-14 06:38:50
如果您正在尝试执行的动画(以给定帧速率播放多个帧),这是不是你应该这样做的方式。改用'yourView.animationImages = animationFramesArray; yourView.animationDuration = 10; [yourView startAnimating];' – 2011-05-14 06:52:17
@mindnoise它不是一个动画,但谢谢你告诉我该怎么做。当我开始为我计划制作的另一个应用中的某些内容添加动画时,这将非常有用。 – Justin 2011-05-15 01:00:56