2014-04-16 14 views

cevap

3

Şimdilik, bunlar hiçbir fark değildir.

Kullanım StateModifier Eğer setTransform, setSize, setOrigin ve setOpacity gerekiyorsa. Şu anda Değiştirici hala bu yöntemleri destekler, ancak bunlar Kullanımdan kaldırılmış. değerleri arasında düzgün bir geçiş için kullanılabilir

StateModifier kullanımı Transitionable

. Bu yöntemleri kullanılırken sadece bir geçiş sağlar:

stateModifier.setTransform(Transform.rotateZ(Math.random()*Math.PI/2), { curve: 'easeOut', duration: 5000 }); 

Değiştirici daha sınırlıdır ve transformFrom, sizeFrom, originFrom ve opacityFrom kullanır. Bu yöntemler bir değer, getter işlevi veya get işlevine sahip bir nesne alabilir.

+2

Peki neden kimse 'Modifier' hiç o kullanırdınız? –

+2

Bir (sürekli) işlevi yerine bir etkinliğe dayalı değiştirme istediğinizde. Örnek: Kullanım StateModifier anahtar basın boyutunu değiştirmek, ancak fare yere göre rengini değiştirmek için Değiştirici kullanmak. Bu, performansları arttırabilen DOM olayları yerine Ünlü'i motora (60 FPS) güncellemeye bağlar (olay gerçekten devam ediyorsa) – markmarijnissen

+1

Bunu da öğrendim. Adlandırma çok kafa karıştırıcı. Her ikisi için de tek bir 'Modifier' kullanmalı ve bindTransform() 'gibi ayrı bir işleve sahip olmalıdırlar veya böyle bir şey yapmalıdırlar ... –

3

Ünlü Üniversiteye göre, bunlar şu farklardır:
Statemodifierers, her bir örnek için yeni bir Geçiş Yapabilir, yani belirli bir geçişi yeniden kullanamazsınız. Modifikörleri ile yapabilirsiniz:
- bileşenlerinde payı devlet/onların markalar seçeneklerinde önemli bir fark vardır birbirine

http://famo.us/university/famous-102/transitionables/6/

2

gelen devletleri türetmek. StateModifier sadece başlangıç ​​değerlerini sabit değerleri kabul eder. Değiştirici hem sabit değerleri hem de uygun geri dönüş değerleriyle çalışır. Fonksiyon 60 fps'de uygulanacaktır.

1) StateModifier

var stateModifier = new StateModifier({ 
    size: [200, 200], 
    opacity: 1, 
    transform: [1, 0.5, 0, 0, -0.5, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 
    //transform: Transform.translate(20, 20, 0), // --> this is still constant 
}); 

2) Değiştirici ya seçiminiz etrafında performans ve tasarım konuları vardır

var transitionable = new Transitionable(0); 
transitionable.set(2*3.14, {duration: 2000}); 

var modifier = new Modifier({ 
    origin: [0.5, 0.5], 
    transform: function(){ 
     var state = transitionable.get(); 
     transition = Transform.rotateZ(state); 
     return transition; // --> this will cause rotating 
    }, 
    opacity: function(){ 
     return Math.random(); // --> this will cause blinking (60fps) 
    }, 
}); 
2

.

Nesneniz statik konumdayken veya dönüşüm ayrıntılarını seyrek olarak değiştirdiğinde, Değiştirici'u kullanırsınız. Bir örnek, bir üst nesneye göre oturmuş bir nesne grubunuz olsaydı ve yalnızca konumlarını bir kez ayarlamanız gerektiğinde olurdu. Bir Düzenleyici kullanırsınız, çünkü bunları bir kez düzenledikten sonra render ağacına dokunarak endişelenmenize gerek yoktur.

Nesninizin dönüşümünü daha sık denetlemeniz gerektiğinde, bir StateModifier kullanın.Bu, her karede dönüşümlerini canlandırmak veya kontrol etmek istediğinizde veya olayların ne zaman gerçekleştiğidir.

StateModifier bir çekme veya itme yaklaşım ile kullanır. Bu, bir nesnenin dönüşümünü değiştirmek/canlandırmak için iki yol sunar. Çekme, bir işlev sağlıyor ve nesnenin değerini belirlemek için bazı nesneler kullanıyorsunuz (örneğin, Transitionable veya kendi nesneniz .get() yöntemiyle). Hep başka bir şey takip ettiğini bir oyun nesnesi olsaydı bu Nesnelerin değeri dönüşümü soran her kareyi isabet bir işlevi kullanmak istiyorum, yararlı olabilir. İtme, ne zaman değişiklik yapacağınıza karar verdiğiniz anlamına gelir ve StateModifier'un .setOpacity veya .setTransform yöntemlerini kullanın. Bu, bazı olaylar patlayana kadar sabit kalan kullanıcı arayüzü nesnelerine daha iyi uyacaktır. Bu yöntemleri çağırdığınızda veya değişikliği hemen gerçekleştirdiğinizde, farklı hareket hızı eğrileri de kullanabilirsiniz.

performans ve tasarım değerlendirmesi, her zaman gerekenden daha fazlasını yapmak zorunda olmayan bir uygulama yazmaya çalışmanız gerektiğinden kaynaklanır. senin tüm nesneleri (her kareyi çağrılan bir fonksiyonu kullanılarak) modeli çekin bir * ile StateModifier kullanırsanız, bu sadece zaman zaman bir nesneyi değiştirmek için gerekirse daha fazla işlemci gücü mal olacağını tahmin edebilirsiniz ve kullanılan gerektiğinde nesne durumunu değiştirme yöntemi itme . Bu, küçük bir kullanıcı arayüzü için bir sorun olmayabilir, ancak uygulamanızı yüzlerce kontrole kadar ölçeklendirdiyseniz, daha fazla CPU gücü kullanmaya başladığınız yeri görebilirsiniz. (özetle Yani

, tadil edici maddeye bir yerlerde bir şeyler koyup StateModifier malzeme taşımak için güçlü olmak için daha iyi olduğu gibi bunun, yaklaşık unutmak için harika ama sürekli ne yaptığını isteniyor arasında tercih edilmelidir çekin) veya itme) (hazır olduğunda bunu söylüyorum.

İlgili konular