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; |
|