Geometri örneği: Görüntüleme nesnesine matris dönüştürmesi uygulamaFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü DisplayObjectTransformer örnek uygulaması, görüntüleme nesnesini dönüştürmek için matrix sınıfının özelliklerinin kullanılmasının birçok özelliğini gösterir, bu özellikler arasında şunlar yer alır:
Bu uygulama, aşağıdaki gibi, matris dönüştürmesinin parametrelerinin ayarlanması için bir arabirim sağlar: Kullanıcı Dönüştürme düğmesini tıklattığında, uygulama ilgili dönüştürmeyi uygular. Orijinal görüntüleme nesnesi ve -45° döndürülmüş ve %50 ölçeklenmiş görüntüleme nesnesi Bu örneğin uygulama dosyalarını edinmek için bkz. www.adobe.com/go/learn_programmingAS3samples_flash_tr. DisplayObjectTransformer uygulama dosyalarını Samples/DisplayObjectTransformer klasörü içinde bulabilirsiniz. Uygulama aşağıdaki dosyaları içerir:
MatrixTransformer sınıfını tanımlamaMatrixTransformer sınıfı, Matrix nesnelerinin geometrik dönüştürmelerini uygulayan statik yöntemleri içerir. transform() yöntemitransform() yöntemi, aşağıdakilerden her biri için parametreler içerir:
Döndürme değeri, sonuçta elde edilen matristir. transform() yöntemi, sınıfın şu statik yöntemlerini çağırır:
Her biri, dönüştürme uygulanmış şekilde kaynak matrisi döndürür. skew() yöntemiskew() yöntemi, matrisin b ve c özelliklerini ayarlayarak matrisi eğer. İsteğe bağlı bir parametre olan unit, eğme açısını tanımlamak için birimleri belirler ve gerekirse bu yöntem angle değerini radyanlara dönüştürür: if (unit == "degrees") { angle = Math.PI * 2 * angle / 360; } if (unit == "gradients") { angle = Math.PI * 2 * angle / 100; } skewMatrix Matrix nesnesi oluşturulur ve eğme dönüştürmesini uygulamak için ayarlanır. Başlangıçta bu aşağıdaki gibi kimlik matrisidir: var skewMatrix:Matrix = new Matrix(); skewSide parametresi, eğimin uygulandığı kenarı belirler. Bu "right" olarak ayarlanırsa, aşağıdaki kod, matrisin b özelliğini ayarlar: skewMatrix.b = Math.tan(angle); Aksi takdirde, Matrix öğesinin c özelliği ayarlanarak aşağıdaki gibi alt kenar eğilir: skewMatrix.c = Math.tan(angle); Daha sonra aşağıdaki örnekte de gösterildiği gibi iki matris bitiştirilerek, sonuçta elde edilen eğim, varolan matrise uygulanır: sourceMatrix.concat(skewMatrix); return sourceMatrix; scale() yöntemiAşağıdaki örnekte gösterildiği gibi, scale() yöntemi öncelikle yüzde olarak sağlanmış bir ölçek faktörü varsa bu ölçek faktörünü ayarlar ve sonra da matris nesnesinin scale() yöntemini kullanır: if (percent) { xScale = xScale / 100; yScale = yScale / 100; } sourceMatrix.scale(xScale, yScale); return sourceMatrix; translate() yöntemitranslate() yöntemi yalnızca aşağıdaki gibi, matris nesnesinin translate() yöntemini çağırarak dx ve dy çevirme faktörlerini uygular: sourceMatrix.translate(dx, dy); return sourceMatrix; rotate() yöntemirotate() yöntemi, girdi dönüşü faktörünü radyanlara dönüştürür (derece veya degrade olarak sağlanmışsa), sonra da matris nesnesinin rotate() yöntemini çağırır: if (unit == "degrees") { angle = Math.PI * 2 * angle / 360; } if (unit == "gradients") { angle = Math.PI * 2 * angle / 100; } sourceMatrix.rotate(angle); return sourceMatrix; Uygulamadan MatrixTransformer.transform() yöntemini çağırmaUygulama, kullanıcıdan dönüştürme parametrelerinin alınması için bir kullanıcı arabirimi içerir. Daha sonra bu değerleri, aşağıda görüldüğü gibi, görüntüleme nesnesinintransform özelliğininmatrix özelliğiyle birlikte Matrix.transform() yöntemine iletir: tempMatrix = MatrixTransformer.transform(tempMatrix, xScaleSlider.value, yScaleSlider.value, dxSlider.value, dySlider.value, rotationSlider.value, skewSlider.value, skewSide ); Daha sonra uygulama, döndürme değerini, görüntü nesnesinin transform özelliğinin matrix özelliğine uygulayarak dönüştürmeyi tetikler: img.content.transform.matrix = tempMatrix; |
|