Görünüm ile gerçek davranış
Bir oynatıcı düğmesinin görünümü, sesin gerçekten çalıp çalmadığını tek başına belirleyemez. Tarayıcı ses yükleyebilir, oynatmayı durdurabilir veya parçanın sonuna ulaşabilir. Bu nedenle ses motorundan gelen olayların arayüzün kullandığı durumu güncellemesi önemli. NoirWave’in kaynak örneği bu bağlantıyı doğrudan gösteriyor.
Olayların ortak duruma aktarılması
timeupdate, mevcut zamanı; loadedmetadata, toplam süreyi; play ve pause ise oynatma durumunu Zustand deposuna taşıyor. ended olayı bir sonraki parçaya geçişi çağırıyor. Böylece arayüzün okuduğu değerler, yalnızca düğmeye yapılan son tıklamaya bağlı kalmıyor. Ses öğesinin bildirdiği değişiklikler de aynı veri akışına katılıyor.
Birden fazla görünüm
PlayerBar ve FullscreenPlayer aynı depoyu kullanıyor. Bu yapı, her görünümün ayrı bir oynatma gerçeği üretmesini önlemenin temelini oluşturuyor. Kaydırma davranışında setProgress() üzerinden audio.currentTime güncelleniyor. Kaynakta iki yönlü bir ilişki var: kontroller ses öğesini etkiliyor, ses olayları da ortak durumu güncelliyor.
Kontrol edilmesi gereken durumlar
Parça değişimi, metadata yüklenmeden önce çizelgenin kullanılması, durdurma ve parça sonu gibi durumlar bu akışın önemli sınırları. Bu sınırlar için test senaryolarını olay sırasına göre kurmak gerekir: önce başlangıç durumu, sonra ses olayı ve son olarak her iki görünümde beklenen durum. Bu yaklaşım, hatanın ses katmanında mı yoksa görünümde mi olduğunu ayırmayı kolaylaştırır.