SpriteKit: обратно извикване, когато сцената приключи с представянето?

В SpriteKit има ли обратно извикване, когато дадена сцена е завършила своя преход?

Не изглежда, че функцията SKView presentScene има обратно извикване.

Алтернативата е сцената ръчно да уведоми повикващия, след като сцената се премести в изгледа, но се надявах, че има по-чист подход с естествено обратно извикване.


person Crashalot    schedule 15.07.2017    source източник
comment
няма обратно повикване, което ми е известно, трябва да използвате moveFromView на старата сцена   -  person Knight0fDragon    schedule 15.07.2017
comment
@Knight0fDragon така изглежда. моля, публикувайте като отговор, за да можете да получите кредит! Благодаря! въпреки че не е необходимо да използвате старата сцена. можете да използвате събития от новата сцена (напр. willMove, didMove).   -  person Crashalot    schedule 15.07.2017
comment
не можете да използвате новата сцена, трябва да използвате старата сцена, новата сцена се задейства незабавно, което не е това, което искате   -  person Knight0fDragon    schedule 15.07.2017


Отговори (1)


presentScene няма известно обратно извикване, когато дадена сцена е завършила преходите, вместо това използвайте или Notifications, или създайте свой собствен делегат от някакъв вид на вашите изходящи сцени func willMove(from:view), за да постигнете желания ефект

func willMove(from view:SKView)
{
   NotificationCenter.default.post(name: "TRANSITIONCOMPLETE", object: nil)
   //or create a delegate using protocols, assign the delegate, and call it
   delegate?.finishedTransition()
}

Забележете, трябва да използвате изходящите сцени willMove(from:view), това е последното нещо, което се случва по време на прехода. didMove(to:view) на входящата сцена е началото на прехода

person Knight0fDragon    schedule 15.07.2017
comment
правилен, макар и технически, въпросът е поискал известие, когато преходът приключи, така че didMove е правилно (и какво е използвано). Благодаря за помощта! - person Crashalot; 15.07.2017
comment
@Crashalot... ти и аз имаме много различни дефиниции на заключение. За мен това е, когато преходът завършва, което е willMove(fromView) - person Knight0fDragon; 15.07.2017
comment
прав си, заключението е двусмислено. формулировката от въпроса е правилна: когато се появи новата сцена. - person Crashalot; 15.07.2017
comment
...не, не е двусмислено. Искате ли, когато се появи новата сцена, или искате, когато преходът завърши? Това са 2 различни неща - person Knight0fDragon; 15.07.2017
comment
когато се появи новата сцена, сякаш presentScene има обратно извикване, когато се появи новата сцена. Благодаря! - person Crashalot; 15.07.2017
comment
... Не мисля, че разбирате как работят преходите. Предполагам, че използвате много специфичен преход, избледняване. Ако използвате затихване и искате да знаете кога вашата сцена е на екрана, тогава трябва да използвате действие за изчакване на вашата входяща сцена от 1/2 от продължителността на вашето затихване, последвано от известието. След това трябва да зададете pauseIncomingScene на false на вашия SKTransition - person Knight0fDragon; 15.07.2017