+ Yanıtla
Toplam 7 sonuçtan 1 ile 7 arası olanlar

Konu Başlığı: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

  1. #1

    Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    Bir kaç gündür uğraşıyorum ama çözemedim bir türlü.
    Google'dan ve buradan flash'la ilgili ses kontrollerini araştırdım, yine bulamadım.

    Dinamik olarak ses yüklüyorum.
    Müzik dosyası 5 mb.
    1 mb. yüklenince çalmaya başlasın istiyorum.
    Kaç şekil if denediysem olmadı.
    getBytesLoaded / getBytesTotal yöntemi neden çalışmıyor anlayamadım.

    PHP Kodu:
    var muzik:Sound = new Sound();
    muzik.loadSound("muzik.mp3");
    muzik.onLoad=function(){
    ??

    onLoad fonksiyonuna mı yazmam gerekiyor yoksa listener mı eklemek gerekiyor? Ya da başka bir yöntem mi var?

  2. #2

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    onLoad yüklendikten sonra çalışan bir listener. Bu yüzden her zaman yaptığımız gibi onEnterFrame içinde sürekli kontrol etmemiz gerekiyor.
    PHP Kodu:
    var muzik:Sound = new Sound();
    muzik.loadSound("muzik.mp3",false);
    var 
    pl:Boolean false;
    onEnterFrame = function (){
        var 
    yk muzik.getBytesLoaded();
        var 
    tp muzik.getBytesTotal();
        var 
    yuzde yk/tp*100;
        
    //cubuk_mc._xscale = 100; //yükleme çubuğu yapılabilir buraya;
        
    if(yuzde>10){
            if(!
    pl){
                
    pl true;
                
    muzik.start(0);
            }
        }
        if(
    yuzde == 100){
            
    delete onEnterFrame;
        }


  3. #3

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    Maalesef yine olmuyor.
    PHP Kodu:
    if(yuzde == 100) {
    //

    kısmını çalıştırıyor ama yuzde>10 bölümünü algılamıyor sanırım.
    Yani müziğin yine tamamı yüklenince başlatıyor.
    Burda yazdığı gibi denedim, ayrıca muzik.onLoad fonksiyonuna yazdım, farklı bir fonksiyon içinde denedim, "yuzde>10" bölümünü
    PHP Kodu:
    Math.round(yuzde)>10
    olarak denedim, hiçbir türlü olmadı yine.

    Ayrıca şöyle bir problem daha var.
    onEnterFrame fonksiyonunu bir fonksiyon içine almazsak frame'deki diğer onEnterFrame fonksiyonlarını bozuyor. delete onEnterFrame komutu diğer onEnterFrame'leri de siliyor.
    delete this.onEnterFrame yazmak gerekiyor galiba.

    Bunu yapmaya çalışmamın sebebi, müzik direk çalmaya başlarsa takılıyor. Bir miktar yüklendikten sonra çalmaya başlaması takılma sorununu kaldıracak ortadan, o yüzden.

  4. #4

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    Anladım buffer yapmak istiyorsunuz. Ama neden çalışmadığını anlayamıyorum. =) İlginçmiş.
    Şunu deneyin;

    PHP Kodu:
    muzik.loadSound("muzik.mp3",true); 

  5. #5

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    PHP Kodu:
    muzik.loadSound("muzik.mp3",true); 
    yapınca fonksiyon çalışıyor fakat hatalı çalışıyor. Önce direk çalmaya başlıyor, %10 yüklendiğinde duruyor ve yeniden çalmaya başlıyor.

    Şu şekilde çözdüm:

    PHP Kodu:
    var muzik:Sound = new Sound();
    var 
    plying:Boolean false;
    muzik.loadSound("muzik.mp3",true);

    function 
    baslat() {
        
    onEnterFrame = function () {
            var 
    yk muzik.getBytesLoaded();
            var 
    tp muzik.getBytesTotal();
            var 
    yuzde yk/tp*100;
            if (
    yuzde<10) {
                
    plying false;
                
    muzik.stop();
            } else if (!
    plying) {
                
    plying true;
                
    muzik.start(0);
            }
        };
        if (
    yuzde == 100) {
            
    //delete onEnterFrame;
        
    }
    }
    baslat(); 
    Bu kodla çalıştı tam istediğim gibi.

    delete onEnterFrame komutu diğer onEnterFrame ile çalışan bölümleri bozuyor. Silmesek çok mu zorlar sistemi? Ya da izlenirken takılma sorunu mu çıkarır?

  6. #6

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    Görsel bir hareketlilik olmadığı müddetçe onEnterFrame sistemi çok zorlamıyor. Fakat sürekli çalışmaısnın da bir anlamı yok.

    AS 2.0'da onEnterFrame'i bir mc içinde sadece bir defa kullanabilirsiniz. Yeni bir tane yapmaya çalıştığınızda eskisi silinir. Bu yüzden onEnterFrame'leri silerken mc isimleri vererek ekleyebilir ya da silebiliriz. Mesela;
    PHP Kodu:
    my_mc.onEnterFrame = function(){
    //kodlar
    }
    delete my_mc.onEnterFrame
    Aynı zamanda şöyle de set edebiliriz;
    PHP Kodu:
    function ef(){
     
    //kodlar
    }
    my_mc.onEnterFrame ef
    AS 3.0'da ise istediğimiz sayıda ENTER_FRAME'i bir mc içine ekleyebiliriz. Şöyle;
    PHP Kodu:
    function ef1(e:Event){
        
    trace("ef1");
    }
    function 
    ef2(e:Event){
        
    trace("ef2");
    }
    addEventListener(Event.ENTER_FRAME,ef1);
    addEventListener(Event.ENTER_FRAME,ef2); 
    Silmesi de çok kolay, mesela;
    PHP Kodu:
    removeEventListener(Event.ENTER_FRAME,ef1); 

  7. #7

    Re: Ses dosyası, %10'u yüklendikten sonra çalmaya başlasın

    Ben de, müzik için oluşturduğumuz onEnterFrame kodlarını frame'deki diğer enterFrame fonksiyonu içine yazdım. Çünkü o zaten sürekli çalışması gereken bir enterFrame idi. sorun şimdilik çözülmüş oldu yani. AS3'e tam geçtiğimde sanırım daha az sorun olur bu tür ayrıntılarda. Teşekkürler ilginiz için.
    İyi çalışmalar.

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz