gpt4 book ai didi

iphone - 碰撞图像问题,触摸前碰撞

转载 作者:行者123 更新时间:2023-12-03 20:16:11 24 4
gpt4 key购买 nike

大家好,我是法国人,请原谅我的英语。我的问题如下:我在屏幕中央有一个名为 viewToRotate 的图像,然后我有一个在屏幕外部创建的名为 flakeView 的图像,并且然后它移动到中心,每秒都有一个计时器执行此操作(在屏幕外创建一个 flakeView,然后将其移动到屏幕中心)。

我想做的是:如果 flakeView 和 viewToRotate 发生碰撞,则将 viewToRotate 的 alpha 值减小到 0.5。但是当 flakeView 出现在屏幕上时,会调用减少 alpha 的 Action ,而不会发生 viewToRotate 和 flakeView 的碰撞,因此它们在接触之前就发生了碰撞。我不知道为什么。请问我该如何解决这个问题。这是代码:

UIImageView* flakeView = [[[UIImageView alloc] initWithImage:flakeImage] autorelease];

// use the random() function to randomize up our flake attributes
int startY = round(random() % 320);

// set the flake start position
flakeView.center = CGPointMake(490, startY);
flakeView.alpha = 1;

// put the flake in our main view
[self.view addSubview:flakeView];

[UIView animateWithDuration:7
animations:^{
// set the postion where flake will move to
flakeView.center = viewToRotate.center;
}];
}


-(void)checkCollision{

if(CGRectIntersectsRect(flakeView.frame, viewToRotate.frame) == 1)
{
viewToRotate.alpha=0.5;
}
}

最佳答案

我不建议在 viewDidLoad 上使用计时器。我认为您应该将计时器设置为其他功能。即使您不将 viewDidLoad 用于其他任何用途。

另一件事是 UIView 动画。即使您有一个每 60 fps 的计时器,动画对象的属性也不会因动画而改变。因此,在创建动画之前,请先设置这些属性一次。当您创建动画时,您将第二次设置相同的属性。就是这样。从现在开始,当动画运行时,如果您检查属性,您将始终获得第二个值。

要获得有效的代码,一种选择是在特定时间间隔为每个步骤创建 UIView 动画(并执行属性检查)。或者使用 OpenGL。

关于iphone - 碰撞图像问题,触摸前碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007447/

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