API çizme örneği: Algoritmik Görsel OluşturucuFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü Algoritmik Görsel Efekt Oluşturucu örneği, dinamik olarak sahne alanına birçok "uydu" veya dairesel bir yörüngede hareket eden daireler çizer. Keşfedilen özellikler arasında şunlar yer alır:
Önceki alt bölümde verilen örnek, Event.ENTER_FRAME olayını kullanarak tek bir "uyduya" animasyon uygulamıştı. Bu örnek, birçok uydu görünümünü hemen güncelleyen kaydırıcıların bulunduğu bir kontrol paneli oluşturarak bu işlemi genişletir. Bu örnek, kodu harici sınıflar olarak biçimlendirir ve uydu oluşturma kodunu bir döngüye sararak satellites dizisindeki her uydunun başvurusunu saklar. Bu örneğin uygulama dosyalarını edinmek için bkz. www.adobe.com/go/learn_programmingAS3samples_flash_tr. Uygulama dosyalarını Samples/AlgorithmicVisualGenerator klasöründe bulabilirsiniz. Bu klasör şu dosyaları içerir:
Dinleyicileri ayarlamaUygulama ilk olarak üç dinleyici oluşturur. Birinci dinleyici, kontrol panelinden gönderilen ve uyduların yeniden oluşturulmasının gerektiği olayları dinler. İkinci dinleyici, SWF dosyasının sahne alanının boyutuna yapılan değişiklikleri dinler. Üçüncü dinleyici, doEveryFrame() işlevi kullanılarak yeniden çizim yapılması için, SWF dosyasındaki ilerleyen her kareyi dinler. Uyduları oluşturmaDinleyiciler ayarlandıktan sonra, build() işlevi çağrılır. Bu işlev, satellites dizisini boşaltıp sahne alanına yapılan önceki çizimleri temizleyen clear() işlevini çağırır. Bunun gerekli olmasının nedeni, kontrol paneli build() işlevini yeniden çağırmak için bir olay gönderdiğinde (örn. renk ayarları değiştirildiğinde) söz konusu işlevin yeniden çağrılabilmesidir. Bu durumda uyduların kaldırılıp yeniden oluşturulması gerekir. Bu işlev daha sonra, yörüngede rastgele bir konumda başlayan position değişkeni ve bu örnekte uydu oluşturulduktan sonra değişmeyen color değişkeni gibi, oluşturma için gerekli başlangıç özelliklerini ayarlayarak uyduları oluşturur. Her uydu oluşturulduğunda, satellites dizisine o uydunun başvurusu eklenir. doEveryFrame() işlevi çağrıldığında, bu dizideki tüm uydulara güncellenir. Uydu konumunu güncellemedoEveryFrame() işlevi, uygulamanın animasyon işleminin kalbidir. SWF dosyasının kare hızına eşit bir hızda her kare için çağrılır. Çizim değişkenleri değiştiğinden, bu, animasyonun görünümünü yürütür. Bu işlev ilk önce tüm çizimleri temizler ve arka planı yeniden çizer. Daha sonra bu işlev her uydu kabında döngü gerçekleştirir, her uydunun position özelliğini artırır ve kontrol paneliyle kullanıcı etkileşimi sonucunda değiştirilmiş olabilecek radius ve orbitRadius özelliklerini günceller. Son olarak uydu, Satellite sınıfının draw() yöntemini çağırarak yeni konumuna güncellenir. Sayacın (i) yalnızca visibleSatellites değişkenine kadar artış yaptığını unutmayın. Bunun nedeni, kullanıcının kontrol paneli üzerinden görüntülenen sınırlı sayıda uyduya sahip olması durumunda, döngüdeki kalan uyduların yeniden çizilmeyip gizlenmesinin gerekmesidir. Bu, çizimden sorumlu döngüden hemen sonra gelen bir döngüde gerçekleşir. doEveryFrame() işlevi tamamlandığında, ekranda visibleSatellites öğelerinin konumu güncellenir. Kullanıcı etkileşimine yanıt vermeKullanıcı etkileşimi, ControlPanel sınıfı tarafından yönetilen kontrol paneli aracılığıyla gerçekleşir. Bu sınıf her kaydırıcının minimum, maksimum ve varsayılan değerleriyle birlikte bir dinleyici ayarlar. Kullanıcı bu kaydırıcıları hareket ettirdikçe, changeSetting() işlevi çağrılır. Bu işlev, kontrol panelinin özelliklerini günceller. Değişiklik, görüntünün yeniden oluşturulmasını gerektiriyorsa, daha sonra ana uygulama dosyasında işlenen bir olay gönderilir. Kontrol paneli ayarları değiştikçe, doEveryFrame() işlevi her uyduyu güncellenmiş değişkenlerle çizer. Daha fazla özelleştirmeBu örnek, çizim API'si kullanılarak nasıl görsel efektler oluşturulduğuna yönelik temel bir şemadır. Bu, karmaşık görünen bir etkileşim deneyimi oluşturmak için nispeten daha az kod satırı kullanır. Yine de bu örnek küçük değişikliklerle genişletilebilir. Birkaç fikir:
Çizim API'si, çalışma zamanında temel şekiller çizilerek, Flash geliştirme ortamında görsel efektler oluşturulmasına alternatif olarak kullanılabilir. Diğer yandan, elle oluşturulması mümkün olmayan çeşit ve kapsamda görsel efektler oluşturmak için de kullanılabilir. ActionScript yazarı, çizim API'si ve biraz matematik kullanarak birçok beklenmedik oluşturma işlemini gerçekleştirebilir. |
|