gpt4 book ai didi

ios - 如何在 iPad 上实现 D-Pad Xcode 5

转载 作者:行者123 更新时间:2023-11-29 12:38:04 25 4
gpt4 key购买 nike

我曾多次尝试为我的新迷宫游戏实现方向键,但在实现时遇到了麻烦。我以 4 个 UIButtons 的风格来做,如果你按下一个,它会向上、向下、向左或向右移动另一个图像。我尝试过使用 quartzcore 和 CAAnimation,但只知道有限的代码。

我声明了方法和按钮,但无法编写有效的代码。

我在做:

-(IBAction)Up:(id)sender{

CGPoint origin1 = self.Player.center;
CGPoint target1 = CGPointMake(self.Player.center.x, self.Player.center.y-124);
CABasicAnimation *bounce1 = [CABasicAnimation animationWithKeyPath:@"position.y"];
bounce1.duration = 0.1;
bounce1.fromValue = [NSNumber numberWithInt:origin1.y];
bounce1.toValue = [NSNumber numberWithInt:target1.y];
[self.Player.layer addAnimation:bounce1 forKey:@"position"];

}

幽灵向下移动,但立即弹回。我已经被难住了几个小时,它可能正对着我怒目而视,但请理解我的笨拙。

最佳答案

在 Core Animation 中,有两层层次结构:一层是 model 层,一层是 presentation 层。表示层就是您所看到的;模型层是您在代码中经常与之交互的部分。这种分离很有值(value),因为它可以让您创建隐式动画——例如设置图层的位置,它会动画到新的位置。 (但是,如果您为 position 分配一个值,您希望它成为您之后立即读回的值,即使动画仍在进行中也是如此。)

当您使用 addAnimation:forKey: 时,您影响的是演示文稿,而不是模型。因此,在动画播放过程中,您会看到 Player 层在移动,但该层“实际上”仍在您离开它的位置。动画一结束,它就会从层中移除,因此演示文稿会再次与模型匹配——您会在其原始位置看到它。

如果你想让模型位置也改变,你需要单独改变它:

self.player.layer.position = CGPointMake(self.player.layer.position.x, target1.y);

您可以在添加动画后立即更新模型(您将在动画完成后看到更改),或者使用完成 block 将其安排在动画结束时。 There are subtleties to consider for either approach.

不过,通常情况下,如果您只想为这样的特定更改设置动画,尤其是对于 UIView 的主层, 在 UIView 上使用隐式动画 API 更简单:

[UIView animateWithDuration:0.1 animations: ^{
self.player.center = CGPointMake(self.player.center.x, target1.y);
}];

这将更新模型值并创建和运行从当前位置移动到目标位置的动画。


顺便说一句:它有助于遵循 Cocoa 代码风格约定:仅对类名或其他类型名称使用首字母大写,对变量/属性/方法名称使用小写。

关于ios - 如何在 iPad 上实现 D-Pad Xcode 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com