我试图动画系列全屏幕图像。 每个图像会以不同的方式进行动画。 我想存储这些动画的地方无论是在数据库或plist中或什么的,我只是不想让他们硬编码。 该动画将是非常简单的,图像中的物体会摇晃或反弹或你有什么。 我将使用动画块中的对象和理想我想各个块存储在数据存储中。 我想避免使用单独的脚本语言或类似的东西。
什么是我最好的行动方针?
我试图动画系列全屏幕图像。 每个图像会以不同的方式进行动画。 我想存储这些动画的地方无论是在数据库或plist中或什么的,我只是不想让他们硬编码。 该动画将是非常简单的,图像中的物体会摇晃或反弹或你有什么。 我将使用动画块中的对象和理想我想各个块存储在数据存储中。 我想避免使用单独的脚本语言或类似的东西。
什么是我最好的行动方针?
如果你想他们存储,例如,一个plist中,你可以做这样的事情:
<plist>
<array>
<dict>
<key>filename</key>
<string>first.jpg</string>
<key>animation</key>
<string>bounce</string>
<key>duration</key>
<real>0.5</real>
</dict>
<dict>
<key>filename</key>
<string>second.jpg</string>
<key>animation</key>
<string>easeinout</string>
<key>duration</key>
<real>1.0</real>
</dict>
<!-- et cetera -->
</array>
</plist>
然后,你可以通过编写类似下面的代码片段解码成实际的动画这样的:
- (void)loadAnimations
{
NSArray *animations = [NSArray arrayWithContentsOfFile:@"/Users/H2CO3/animations.plist"];
for (NSDictionary *animation in animations)
{
UIImage *img = [UIImage imageNamed:[animation objectForKey:@"filename"]];
NSString *animationType = [animation objectForKey:@"animation"];
float duration = [(NSNumber *)[animation objectForKey:@"duration"] floatValue];
if ([animationType isEqualToString:@"bounce"])
{
/* animation block 1 */
}
else if ([animationType isEqualToString:@"easeinout"])
{
/* animation block 2 */
}
/* Et cetera... */
}
}
这不是很清楚,我可能会从存储在数据存储中的动画有什么好处,如果这是可能的。 如果你只是不想重复动画代码,你可以把它放在一个方法并传入期(县)的方法。
-(void)jiggle:(UIView *)image {
[UIView animateWithDuration:.1
delay:0
options:UIViewAnimationOptionLayoutSubviews
animations:^{
image.transform = CGAffineTransformMakeRotation(-5 * M_PI / 180);
}
completion:^(BOOL finished){
[UIView animateWithDuration:.1
delay:0
options:UIViewAnimationOptionLayoutSubviews
animations:^{
image.transform = CGAffineTransformMakeRotation(5 * M_PI / 180);
}
completion:^(BOOL finished){
[UIView animateWithDuration:.1
delay:0
options:UIViewAnimationOptionLayoutSubviews
animations:^{
image.transform = CGAffineTransformMakeRotation(0 * M_PI / 180);
}
completion:nil
];
}
];
}
];
}