2015-04-20 13 views
7

Buradaki Apple belgelerinde, update yöntemini ve bir sahnenin nasıl oluşturulduğunu açıklar, ancak girişin işlenmesinden bahsetmez. Bu, oluşturma döngüsü ile aynı iş parçacığında veya bununla eşzamanlı olup olmadığı net değil.SpriteKit'te SKScene güncelleme yöntemi ile aynı iş parçacığında dokunur mu?

ben SKSceneupdate yöntemi ve (a SKSpriteNode bu durumda) touchesBegan yöntemle hem güncellemek bir nesne benim nesneye iki erişimleri senkronize endişelenmenize gerek yapmak varsa?

+0

Tamamen emin değilim, ancak dokunma olayları ana çalışma döngüsü tarafından alındığı için ana iş parçasında olacağından% 99 eminim. – NobodyNada

+0

Sanırım şimdi bunu% 99.9 yapabiliriz. Yorum için teşekkürler - ile çalışmak için yeterince iyi oldu. – rghome

cevap

3

Birkaç gün sonra cevapsız bir şekilde bazı deneyler kurdum. Bu arada, bu testler gerçek bir cihaz üzerinde değil, simülatörde çalıştırılıyor, ama aynı olacağını düşünüyorum.

İlk sınama, hata ayıklayıcıda touchesBegan üzerinde bir kesme noktası belirledim ve yığın izlemeye baktım. touchesBegan'un ilk iş parçacığından ve main döngüsünden - mantığın geri kalanıyla aynı yerde - çağrıldığı anlaşılıyor, bu nedenle bu, singe-threaded yaklaşımı için iyi görünüyor.

İkinci sınama, yukarıdaki Gelişmiş Sahne İşleme bağlantısında belirtilen sahnedeki çeşitli yöntemleri geçersiz kıldım ve çağrılan her işlevin adını göstermek için yazdırma ifadeleri ekledim. Sonra touchesBegan yöntemine bir yazdırma bildirimi ekledim.

app çalışan, çıktı idi:

update 
didEvaluateActions 
didSimulatePhysics 
didApplyConstraints 
didFinishUpdate 
touchesBegan in scene 
update 
didEvaluateActions 
didSimulatePhysics 
didApplyConstraints 
didFinishUpdate 
update 

ve Tıkladım'ı zaman bu model tekrarlandı.

tıklayarak Hiçbir miktarda bana didFinishUpdate arasına çağrılan touchesBegan daha başka bir şey verdi (yani, bir döngünün sonu) ve update (sonraki başlangıcı). Sonuç: güncelleme yöntemi çağrılmadan önce işlemin ana döngüsünde gerçekleştiği görülür. Bu nedenle, iki yöntem arasındaki kaynakları senkronize etmek gerekli değildir.

+0

Doc, siparişe bakın -> https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKScene_Ref/index.html – noodles

+0

Evet, ancak dokunuşların nerede olduğu belirtilmiyor işlenen, benim sorum oldu. – rghome

İlgili konular