2016-07-19 15 views

Antwort

0

Ich bin mir nicht sicher, was die Einschränkungen einer SKAction der Geschwindigkeiten sind, aber man könnte versuchen, diese:

let waitAction = SKAction.waitForDuration(0.03) //0.03 is 100 times in 3 seconds 
let blockAction = SKAction.runBlock({(node: SKNode!, elapsedTime: CGFloat) -> Void in print("Hello")}) 

let actionSequence = SKAction.sequence([waitAction, blockAction]) 

self.runAction(actionsSequence) 
+0

Danke für Ihre Antwort @claassenApps, aber mein Hauptanliegen ist in Bezug auf die Anpassung. Bitte, wenn Sie versuchen können, dies zu beantworten –

1

customActionWithDuration jeden Rahmen aktualisiert wird, wenn es 5-mal in 1 Sekunde ausgeführt wird, das heißt Ihr Updates Sind bei 200ms passiert, Sie haben andere Probleme. Idealerweise möchten Sie, dass alle 16,6 Sekunden oder 60 Bilder pro Sekunde aufgerufen werden. Untersuchen Sie daher Ihre Update-Phase und finden Sie heraus, was die Verlangsamung verursacht. Wenn Sie mit dem Simulator arbeiten, vergewissern Sie sich, dass der Simulator mit 60 fps läuft.

Wenn Sie etwas konsistentes benötigen, dann ist customActionWithDuration nicht für Sie.

Möglicherweise müssen Sie repeatAction(action:,count:) verwenden, um zu erreichen, was Sie wollen.

+0

Ja, Sie haben Recht, ich habe ca. 20-25 fps ... und ich denke, es ist wegen etwas namens Debuggen und Freigeben Schemata ... Ich möchte 60 fps, was soll ich implementieren? –

0

mit den Quellen zufolge:

/** Creates an action that executes a block over a duration 
    @param duration The duration of the animation 
    @param actionBlock The block to run. The block takes the following parameters: 
    node The node on which the action is running. 
    elapsedTime The amount of time that has passed in the animation. 
    */ 
    public class func customActionWithDuration(seconds: NSTimeInterval, actionBlock block: (SKNode, CGFloat) -> Void) -> SKAction 

Sie können versuchen, tun:

let duration:NSTimeInterval = 3.0 
let action = SKAction.customActionWithDuration(duration, actionBlock: { (node: SKNode!, elapsedTime: CGFloat) -> Void in 
    let t = Int((elapsedTime/CGFloat(duration))*100) 
    print("\(t)hello") 
}) 
self.runAction(action) 

Ausgang:

enter image description here

der Zähler weiter, bis r Jeder 100

+0

nein, das macht es nicht, Sie drucken nur einen Prozentsatz der verstrichenen Zeit, und weil Sie es auf 3 setzen, erreichen Sie deshalb 100% in einem Intervall von 1 (An irgendeinem Punkt sollten Sie die gleiche Nummer gedruckt sehen zweimal) – Knight0fDragon

+0

Ein wenig Ungenauigkeit ist ein akzeptabler Faktor sowie die gleiche customActionWithDuration-Methode garantiert keine Genauigkeit. OP nicht eine genaue Anzahl erforderlich, um nicht alle Faktoren zu nennen, die die Zeit verlangsamen könnten. –

+0

Ja, aber Sie geben keine Antwort, was ist, wenn das Gerät mit 1 fps läuft – Knight0fDragon