[英]Problems making a property from a SKAction (SpriteKit)
同样,可能是一个新手问题。 我按照在这两个链接中找到的说明进行操作,因为它们可以完全解决我遇到的问题(可以从其自己的方法之外修改SKAction的速度):
就我而言,请使用以下SKAction:
SKAction * moveBall = [SKAction moveToY:0 duration:1];
[ball runAction:moveBall withKey:@"ball falling"];
我创建属性,如下所示:
@property SKAction * moveBall;
然后,我想从touchesBegan调用按钮后调用它,像这样:
if ([node.name isEqualToString:@"Slow Down Button"]) {
self.moveBall.speed = 0.5;
}
moveBall.speed
其自己的方法里面是1.0,但self.moveBall.speed
表示0.0的速度(同样为_moveBall.speed
),所以在属性声明不能正常工作。 我尝试了几件事,但到目前为止我找不到丢失的内容。
提前致谢!
这个:
SKAction * moveBall = [SKAction moveToY:0 duration:1];
创建一个名为moveBall
的局部变量。 但是,可以通过self.moveBall
直接通过其自动合成的ivar名为_moveBall
来self.moveBall
访问您的媒体_moveBall
。
解决方案是以下两个之一:
self.moveBall = [SKAction moveToY:0 duration:1];
要么
_moveBall = [SKAction moveToY:0 duration:1];
然后继续将该变量用于addChild:
和其他用途。
您很可能需要花一些时间来阅读有关属性和指针的信息。 但是有可能您没有显示正在使用的所有代码。 短语“在其自己的方法内”是困惑的。
SKAction * moveBall =与_moveBall不同,除非您已将该指针分配给属性。 但是,您在代码中使用了相同的名称作为指针和属性,这进一步混淆了事情。
我怀疑您需要更改:
SKAction * moveBall = [SKAction moveToY:0 duration:1];
至
_moveBall = [SKAction moveToY:0 duration:1];
然后仅在整个代码中使用_moveBall。 但是请确保您阅读了指针和属性并理解了它们之间的区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.