View Single Post
Sponsorlu Bağlantılar
Zoque.Forum
Advertisement
Old 06.04.2004   #6 (permalink)
lostchild
 
lostchild's Avatar
 
Üyelik Tarihi: 04.04.2004
Yer: istanbul
Mesaj: 26
Re: movie'nin hızını fps'ı değiştirmek ve bulmak!

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

Mesaj lostchild tarafından 06.04.2004 (21:06) yeniden düzenlendi.
lostchild şu an çevrimdışı   Mesajdan alıntı yaparak yeni bir cevap ekleyin