簡體   English   中英

從SKAction(SpriteKit)制作屬性時遇到問題

[英]Problems making a property from a SKAction (SpriteKit)

同樣,可能是一個新手問題。 我按照在這兩個鏈接中找到的說明進行操作,因為它們可以完全解決我遇到的問題(可以從其自己的方法之外修改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名為_moveBallself.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM