gpt4 book ai didi

ios - 调用多个动画,一个接一个地调用一个相同的 UIView 对象,而不使用完成

转载 作者:行者123 更新时间:2023-11-29 12:43:28 26 4
gpt4 key购买 nike

更新开始

正确答案在这里:
Is it posible to do multiple animations on UIView without using completion block

无需阅读此内容。

更新结束

我有与 UIView animateWithDuration returns immediately 类似的问题,但我不能使用完成 block ,因为我的动画有不同的功能。

但是确实想要为同一个对象设置动画。

我正在制作纸牌游戏,所以我在屏幕上移动纸牌,但在移动之间我还有一些游戏逻辑。这就是为什么我单独制作动画很方便。

如何解决?

@Fogmeister
完成问题如下:
在 method1 之后,调用 method2。
如果我要调用method1 52次(因为我有52张牌),那么method2也会被调用52次。
但在我的场景中,我需要遵循,调用 method1 52 次,而不是调用 method2 4 次...
所以我看不出这会因竞争而下降。
另外有时我需要在method1之后调用method2,但有时我需要在method1之后调用method3...

我想在 method1 之后对对象进行深度复制,然后在新对象上调用 method2。
这行得通吗?

@Fogmeister 第二次回应
我也得出了同样的结论。
但由于以下原因,我不喜欢它。
我需要将游戏逻辑放在动画逻辑中,我希望松散耦合。
动画代码不应处理游戏逻辑代码。

我想做的是做多个动画,一个接一个一个相同的 UIView 对象,而不使用 completion:,因为我不会保持动画代码简单并重用它。

如果你愿意,你可以从
下载我的代码 http://weborcode.com/dl/Tablic.zip
动画在TBL_CardView.m文件方法animation中完成*
调用自: TBL_GameViewController.m文件方法gameStateMachineLoop所有卡片从左到右洗牌,然后再将一张卡片发送到左边。
但问题是那张牌在洗牌前已经在右边了,如果您启动该项目,您将看到它。

最佳答案

没有太多的信息可以继续,但您不必为每个动画设置一个动画。如果您想为所有卡片设置动画,请使用单个动画并更新 animations block 中的所有卡片。

如果你想为所有的卡片设置动画,然后做其他事情,那么你可以做这样的事情......

- (void)animateCards:(NSArray *)cards
{
// call this once and all of the cards in the array will animate over 5 seconds.
[UIView animateWithDuration:5.0
animations:^{
for (Card *card in cards) {
card.frame = // whatever
}
}
completion:^(BOOL finished) {
if (iNeedToCallMethod2) {
[self doSomethingElse];
} else {
[self somethingCompletelyDifferent];
}
}];
}

- (void)doSomethingElse
{
//this will only run after all the cards have animated
//if the condition requires it to run

[UIView animateWithDuration:5.0
animations:^{
for (Suit *suit in self.suits) {
// not really sure what you want to do here
// but you can do the same as above
}
}
completion:^(BOOL finished) {
}];
}

- (void)somethingCompletelyDifferent
{
//this will run once only if the other method doesn't run
}

您所做的只是控制流程。不要再考虑在 table 周围移动卡片,而是更多地考虑您有哪些可用工具以及如何使用它们来让事情按照您的意愿进行。

关于ios - 调用多个动画,一个接一个地调用一个相同的 UIView 对象,而不使用完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260252/

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