2017-03-04 16 views
5

Aşağıdaki sıralamayı 2 saniyeliğine kesintiye uğratmak ve ilk başta kesintiye uğramamışsa nerede olacağına devam etmek istiyorum.SpriteKit eylemleri dizisini kesme ve kesinti olmadığında devam etme

Örneğin, aşağıdaki koddan, sıralamayı dizinin içine 1,5 - 3,5 saniye arasında görünür hale getirerek diziyi 2 saniyeliğine kesintiye uğratırsam (hideInterval eylemi artı showSprite eylemi ve 0,5 saniye anlamında) showInterval eyleminin kaçırılması durumunda) kesinti, showInterval eylemi için 2,5 saniye kalacaktır. Hareketli grafiğin kalan 2,5 saniyede bir eylemi gerçekleştirmesini nasıl sağlayabilirim ve o sıradaki normal sırayla devam edebilirim.

Bu örnekte, açıklıktan sonra bir sıralamaya devam etmenin daha genel bir yolunu tercih etsem de, bu açıklık içindir.

let hideSprite = SKAction.fadeAlpha(to: 0, duration: 0.5) 
    let showSprite = SKAction.fadeAlpha(to: 100, duration: 0.5) 
    let hideInterval = SKAction.wait(forDuration: 2) 
    let showInterval = SKAction.wait(forDuration: 3) 
    let spriteSequence = SKAction.sequence([hideSprite, hideInterval, showSprite, showInterval]) 
    sprite.runAction(SKAction.repeatForever(spriteSequence)) 

GÜNCELLEME aşağıdaki diyagram sorum daha anlaşılır hale ve ben dizinin kesinti elde etmek istediğinizi daha ayrıntılı açıklama düşünüyorum.

sprite.isPaused = true 

ve yapabileceğiniz eylemi devam etmek:

sprite.isPaused = false 

+0

eylemlerin bir sırası iki şekilde kesilebilir. Bunlardan hiçbirini yapmıyorsun. Lütfen * nasıl * bir kesinti yaptığınızı belirtebilir misiniz, çünkü anlattığınız şey çalışan bir hareketin kesintiye uğraması olarak değerlendirilemez. – Whirlwind

+0

@Whirlwind Soruyu – ItsMeAgain

+0

güncelledik @Whirlwind hala bu çalışma – ItsMeAgain

cevap

1

enter image description here basitçe koymak ile sprite duraklatabileceğinizi, sizinki gibi eylem sırasını kesmek için Bir süreden sonra belirli bir işlem yapmak için aşağıdakileri yapabilirsiniz:

sprite.run(SKAction.wait(forDuration: 2.5),completion:{ 
    print("after 2.5 sec do..") 
}) 

"Bir eylem dizisini durdurmak için genel yöntem" inizi yanıtlamak için, örneğin bir eylem sırasını duraklatamazsınız. Örneğin, speed - 0 arası bir eylem dizisini duraklatamazsınız; bir dizi eylemi sıralı olarak çalıştıran bir eylem. Sözlerimle ilgili bir örnek veya açıklama, diğer yöntemleri/çağrıları diğer yöntemlere çağıran alt eylemleri/kodu bildiren bir eyleminiz olduğunda, sıralamayı sıradan bilinen yöntemlerle durdurmak imkansız olabilir. 1) bir işlem durdurarak, 2) işlem kaldırarak:

+0

Daha önce yanıtlamadığım için üzgünüz. Soruyu yeni güncelledim. Başarmak istediğim şeyin cevabınızdan farklı olduğuna inanıyorum. – ItsMeAgain

+0

Bu diziyi başarmak için pek çok enstrümana sahipsiniz: cevabımda söylediğim gibi, bazı kodları tokenlerden sonra çalıştırabilirsiniz, paralellikler yapmak, SKAction.group veya dizileri yapmaya çalışır. Ayrıca sprite'ınızı isPaused özelliği ile serbest bırakabilirsiniz. Sprite-kit sınıf yöntemlerini izleyerek eylemler dizisini oluşturmalısınız –

+0

Aslında, gerçekten yapmak istediğim bir sırayı kesmek için ekrana dokunmaktır, bu durumda kesintiye uğramadan önce geçerli bir dizinin kalan süresini tam olarak bilmiyorum. – ItsMeAgain

İlgili konular