ios – 将Box2D物理应用于UIView与CALayer

ios – 将Box2D物理应用于UIView与CALayer,第1张

概述我用这个优秀的教程启动了一个我正在研究涉及物理学的小项目: http://www.cocoanetics.com/2010/05/physics-101-uikit-app-with-box2d-for-gravity/ 基本上,它创造了一个世界,并将B2D的物理特性应用于您拥有的任何视图.很简单,它的工作原理.但是,我试图通过使用CALayers应用相同的逻辑,即,我以编程方式创建图层,将它们添 我用这个优秀的教程启动了一个我正在研究涉及物理学的小项目:

http://www.cocoanetics.com/2010/05/physics-101-uikit-app-with-box2d-for-gravity/

基本上,它创造了一个世界,并将B2D的物理特性应用于您拥有的任何视图.很简单,它的工作原理.但是,我试图通过使用CALayers应用相同的逻辑,即,我以编程方式创建图层,将它们添加到主vIEw.layer并尝试为它们设置动画.

用于创建图层的示例代码:

CALayer *layer = [CALayer layer];layer.backgroundcolor = [UIcolor blackcolor].CGcolor;layer.frame = CGRectMake(50,100,30,30);layer.name = @"square";[self.vIEw.layer addSublayer:layer];

并且在自动收报机中应用物理:

CALayer *oneLayer = (CALayer *)b->GetUserData();// y position subtracted because of flipped coordinate systemCGPoint newCenter = CGPointMake(b->Getposition().x * PTM_RATIO,self.vIEw.bounds.size.height - b->Getposition().y * PTM_RATIO);oneLayer.position = newCenter;CGAffinetransform transform = CGAffinetransformMakeRotation(- b->GetAngle());oneLayer.affinetransform = transform;

请注意,我将仿射变换调用调整为CALayer类.

我检查并仔细检查了变量,数字似乎匹配.我得到的是来自CALayer动画的奇怪反d,以及来自UIVIEw的完美动画.有没有经验丰富的Box2D和UIKit来回答为什么会发生这种情况?

解决方法 与UIVIEws不同,CALayers具有内置的隐式动画.每次更改动画属性的值时,都会引入短动画.您必须将代码包装在CATransaction中并禁用 *** 作以消除此效果:

[CATransaction begin];[CATransaction setdisableActions:YES]; // implicit animations get DisabledCALayer *oneLayer = (CALayer *)b->GetUserData();// y position subtracted because of flipped coordinate systemCGPoint newCenter = CGPointMake(b->Getposition().x * PTM_RATIO,self.vIEw.bounds.size.height - b->Getposition().y * PTM_RATIO);oneLayer.position = newCenter;CGAffinetransform transform = CGAffinetransformMakeRotation(- b->GetAngle());oneLayer.affinetransform = transform;[CATransaction commit];
总结

以上是内存溢出为你收集整理的ios – 将Box2D物理应用于UIView与CALayer全部内容,希望文章能够帮你解决ios – 将Box2D物理应用于UIView与CALayer所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存