as ile
frame yaratamazsın ( undocumented olarak da böyle bi şeye rastlamadım şimdiye kadar )
ama basit bir örnekle de olsa niye böyle bir şeye ihtiyaç duyduğunu anlatır mısın ?
bir movieClip' de EnterFrame event' i ile bir hareket sağlarsanız fps 120 olduğunda veya 36 olduğunda, fark
gayet açık görülecektir
ek olarak böyle bir as fonksiyonunun olmaması da gayet mantıklı
çünkü mx' le birlikte artık :
1. dinamik olarak movieClip oluşturabiliyoruz
2. zamana bağımlı kod işletimi için "setInterval" metodumuz var.
setInterval' la ilgili olarak bir kaç önemli nokta :
* setInterval, yine de fps' ye bağımlı. interval fonksiyonu bir karede en fazla 10 kere çalışabilir.
örnek olarak:
fps = 1 ve interval' ımız 100 ms ise fonksiyon 1
frame için (en fazla) 10 kez işletilir ( dengi dengine )
fps=10 ve interval' ımız 100 ms ise fonksiyonumuz
frame başına (en fazla) 100 kez işletilir.
yani verilen iki örnekte de interval' ı 100' den düşük girmenin bir faydası yoktur.
3. trajik olarak görünen kısım ise ( ki aslında öyle diil bence ) setInterval çok daha hassas ayarlarda çok tutarlı diil. yani setInterval' ın performansı, sistem kaynaklarına,
flash player' ın sürümüne falan filan gibi bissürü şeye de bağlı olarak ( çok ince vaziyetlerde) her zaman aynı şekilde çalışmıyor.Hem buna örnek, hem de setInterval' la ilgili açıklama olsun diye şuna bakabiliriz :
* fps = 10 ve de interval' ımız 300 ms olsun. Her bir
frame 100ms' de geçilecektir.
(10
frame -> 1 sn = 1000 ms/10 = 100 ms )
buna bağlı olarak,
frame numaralarına göre interval fonksiyonunun, teorik olarak çalışması beklenen frameler : 3,6,9,12,.. gibi
frame noları 3' ün katları olan frameler olacaktır.
fakat bunu test ettiğimizde görürüz ki, interval fonksiyonu 3,6 yerine 3. ve 7.framede - 5. ve 9.framede veyahut böyle birbirine yakın herhangi framelerde çalışabilir.
eğer fonksiyonun çalışma süresi, ( son örneğin tersine ) fps' ye göre daha kısa ise bunun için,fonksiyonun içinde, updateAfterEvent() metodunu kullanabiliriz.bu metod,
flash' ın screen i refresh etmesini sağlar ( ekranı yeniden çiziktirir )
Kod:
// interval fonksiyonumuz
sagacekBilader = function(){
bilader._x++
updateAfterEvent()
}
/*
gerektiğinde interval' ı temizlemek ( durdurmak ) için
interval' ı haydi adıyla saklıyalım,
gelir zamanı derim ben
*/
var haydin = setInterval(sagacekBilader,400)
ek dedimdi :) ama sanırım, ilk postum olduğu için mi uzadı acaba ?
saygılar...