2013-10-03 2 views
0

Я использую блок анимации для итерации через массив изображений .png, чтобы он выглядел так, будто персонаж идет по экрану. Однако качество изображений размывается при масштабировании изображения. В настоящее время я тестирую анимацию с 19 изображениями в разрешении 371 х 379. Тем не менее, мне нужно, чтобы они отображались меньше на экране, поэтому я масштабировал их до 64 x 65 в своем приложении. Когда я это делаю, линии немного искажаются, и когда я приостанавливаю игру, вы действительно можете сказать, что качество изображения не там, где должно быть. Ниже приведен код, который я использую для повторения изображений. Любая помощь будет принята с благодарностью.Анимация изображений Objective-C

[UIImageView animaiteWithDuration: 3.0 
          delay: 0 
          options: UIViewAnimationOptionBeginFromCurrentState 
         animations: ^{ 

CABasicAnimation *mover = [CABasicAnimation animationWithKeyPath:@"position"]; 

// Get the current presentationLayer of the object 
CALayer *currentLayer = self.layer.presentationLayer; 

// Get the current point of the presentationLayer 
CGPoint currentPoint; 
currentPoint.x = currentLayer.position.x; 
currentPoint.y = currentLayer.position.y; 

// Set the new point for the object to move to 
CGPoint newPoint; 
newPoint.x = currentLayer.position.x - 50; 
newPoint.x = currentLayer.position.y; 

// Set the from and to values of the animation 
[mover setFromValue: [NSValue valueWithCGPoint:currentPoint]]; 
[mover setToValue: [NSValue valueWithCGPoint:newPoint]]; 
[mover setDuration:3.0]; // Set the duration of the mover animation 

// Create the nine-teen UIImages for the array 
UIImage *image1 = [UIImage imageNamed:@"img1"]; 
UIImage *image2 = [UIImage imageNamed:@"img2"]; 
UIImage *image3 = [UIImage imageNamed:@"img3"]; 
UIImage *image4 = [UIImage imageNamed:@"img4"]; 
UIImage *image5 = [UIImage imageNamed:@"img5"]; 
UIImage *image6 = [UIImage imageNamed:@"img6"]; 
UIImage *image7 = [UIImage imageNamed:@"img7"]; 
UIImage *image8 = [UIImage imageNamed:@"img8"]; 
UIImage *image9 = [UIImage imageNamed:@"img9"]; 
UIImage *image10 = [UIImage imageNamed:@"img10"]; 
UIImage *image11 = [UIImage imageNamed:@"img11"]; 
UIImage *image12 = [UIImage imageNamed:@"img12"]; 
UIImage *image13 = [UIImage imageNamed:@"img13"]; 
UIImage *image14 = [UIImage imageNamed:@"img14"]; 
UIImage *image15 = [UIImage imageNamed:@"img15"]; 
UIImage *image16 = [UIImage imageNamed:@"img16"]; 
UIImage *image17 = [UIImage imageNamed:@"img17"]; 
UIImage *image18 = [UIImage imageNamed:@"img18"]; 
UIImage *image19 = [UIImage imageNamed:@"img19"]; 

// Populate the animation array 
NSArray *walkingAnimation = [NSArray arrayWithObjects: img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, img13, img14, img15, img16, img17, img18, img19, nil]; 

[self setAnimationImages: walkingAnimation]; // Set the animation images to the array 
[self setAnimationRepeatCount:3]; // Repeat the animation every second 
[self setAnimationDuration:1.0]; 

[self startAnimating]; // Start the animation 
[[self layer] addAnimation:mover forKey:@"position"]; // Add the mover animation to the layer 
[UIImageView commitAnimations]; 

[[self layer] setPosition:newPoint]; // Set the position to avoid bounce back 

} completion:nil]; 

Так что, если кто-нибудь может сказать мне, если есть что-то дополнительное мне нужно делать, чтобы сохранить изображения от искажения, или, может быть, это сами изображения, я мог бы реально использовать некоторые советы, в то время как я прочитал все, что в яблоках API и проверить каждый форум в Интернете.

+0

Вы работаете в xcode 5 для ios 7? Многое изменилось. Я предлагаю вам ознакомиться с этой документацией. Здорово. https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/CodeExplainedAdventure/AdventureArchitecture/AdventureArchitecture.html Теперь вы должны создавать активы и Atlasses. Похоже, его много работы, но в конце концов это проще. – Farini

+0

Возможный дубликат [Objective-C UIViewImage animation] (http://stackoverflow.com/questions/1457452/objective-c-uiviewimage-animation) –

ответ

3

Ваша проблема не должна быть связана с кодом. Вы изменяете размеры изображений на другое соотношение сторон. Вы должны быть очень осторожны с изменением размера изображения, поскольку изображение будет естественно размываться.

Ваш лучший вариант - создать точные (резкие) изображения, предназначенные для размера, в котором вы будете их использовать.

Смежные вопросы