[英]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.