通过Chipmunk(以及任何初学者指南)更新图像

时间:2011-11-04 05:01:18

标签: chipmunk

所以我对花栗鼠有些问题, 请注意我是新手,我只是学习了很多关于花栗鼠的想法,如果你有任何好的书籍,资源或网站,我可以用来学习花栗鼠,这将是很棒的(请只有当前的指南,我已经走了很多带有过时命令的旧指南并且已经非常模糊了。)

但是在我的主要问题上,我使用的是Chipmunk,并使用了我在在线网络资源上找到的“花栗鼠教程”代码。我试图将图像(UIImageView * ball;)附加到ballBody->data部分,并尝试更新图像但似乎无法弄明白,代码可以工作,但图像只移动到ballBodys的初始位置

以下是我正在使用的代码示例,请告诉我是否应该提供更多信息!

这是我调用更新花栗鼠帧的计时器,当我调用“cpSpaceHashEach(space-> activeShapes,& updateShape,nil)”时;代码的一部分我得到的错误是在struct cpspace中调用了“活动形状”中没有对象,而且TCPSpaceHash有一个隐式声明

// Called at each "frame" of the simulation
- (void)tick:(NSTimer *)timer {
    // Tell Chipmuck to take another "step" in the simulation
    cpSpaceStep(space, 1.0f/60.0f);

    // Call our function for each shape
    cpSpaceHashEach(space->activeShapes, &updateShape, nil);
}

1 个答案:

答案 0 :(得分:1)

我认为您正在查看5.x的教程并使用Chipmunk 6.x。

“cpSpace.activeShapes”被记录为5.x中的私有成员,现在已经消失。 cpSpaceHashEach()没有记录。不建议使用您提供的代码段迭代形状,因为它会导致很多未定义的行为,但无论如何每个人都做了。

在6.x中你应该这样做,因为它不使用任何私有,未记录或未定义的功能:

cpSpaceEachShape(space, updateShape, NULL);

那就是说,我仍然不建议以这种方式迭代形状。你应该自己保留一份列表,这样你就不需要跳过静态形状等了。

你应该看一下Chipmunk下载页面上的Simple Objective-Chipmunk Tutorial或Snap示例项目:http://chipmunk-physics.net/downloads.php