0
У меня:Обновить изображение UIImageView в NSmutableArray?
Класс Piece inherit UIImageView;
- (void)setJumpAt:(int)frame {
NSMutableArray *ret = [SkinConstants BallSelected];
NSString *name = [NSString stringWithFormat:@"balls-%d-%d", color - 1, [[ret objectAtIndex:frame] intValue]];
UIImage *a = [UIImage imageNamed:name];
NSLog(@"%d setJumpAt: %@", self.tag ,name);
[self performSelectorOnMainThread:@selector(setImage:) withObject:a waitUntilDone:NO];
[self setNeedsDisplay];
[self setNeedsLayout];}
Класс игрока содержит NSMutableArray of Piece;
Класс JumpThread содержит использование NSTimer для установки изображения Piece;
- (void) timer_Tick{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
[piece setJumpAt:frame++];
[piece setNeedsDisplay];
if (frame == len)
frame = 0;
dispatch_async(dispatch_get_main_queue(), ^{
});
});}
Я бегу код нормально, но изображение Кусок не изменится в MainView, К сожалению, я не так хорошо на английском языке.
, что в прошлом 'dispatch_async()' не диспетчерское ничего к основному потоку, и я не знаю, почему вы звоните 'setNeedsDisplay '* и *' setNeedsLayout'. В целом это кажется неудобным и подверженным ошибкам способом делать вещи - используя таймеры и отправляя их в очереди и т. Д. Рассматривали ли вы использование библиотеки, специально предназначенной для спрайтов и игр, таких как [SpriteKit] (https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html)? – JaredH
Нет, я не использую SpriteKit, – user963861