Modalpopup penceresi neden flash nesnesinin altında kalıyor ya da flash nesnesi en üstte kalıyor? Nasıl engellenir?

December 23, 2008 at 11:04 PMoozturk

Normalde bu tür üstte ya da altta kalma durumları z-index değerinden kaynaklanır ve bazı nesneler runtime esnasında otomatik olarak sayfadaki en yüksek z-index değerinden daha yüksek bir değer alırlar ki en üstte kalıp her zaman görünür kalsınlar. Bu tür sorunları üstte kalmasını istediğimiz nesnenin z-index değerini daha yüksek vererek çözeriz.

 Ancak flash nesneleri için durum daha farklı, flash nesnelerini sayfalarına koyarken <object>, <param> ve <embed> taglarnı kullanırız. Bu taglar vasıtasıyla flash nesnesine parametreler gönderebilir ve bazı ayarlarını tanımlayabiliriz. Misal vermek gerekirse, dosya adı, genişlik, yükseklik gibi değerler tanımlanır ve scriptaccess gibi parametreler flash nesnesine verilebilir. Bu problemi flash nesnesine bir parametre gönderimi ve bir embed özelliği sayesinde çözebiliyoruz. Aşağıdaki iki eklemeyi yapalm:

1. Bir parametre satırı ekleyeceğiz.

     <param name="wmode" value="transparent" />

2. Bir de embed tagında bir özelliğe değer vereceğiz.

     wmode="transparent"

Bu şekilde büyük ihtimalle sorununuzu çözmüş olacaksınız. Bir de flash nesnesini bu şekilde eklediğimizde yazmamız gereken tam koda örnek veriyorum aşağıda.

<object width="870" height="370" style="z-index:0">

    <param name="movie" value="/flashdosyasi.swf" />

    <param name="allowscriptaccess" value="samedomain" />

    <param name="wmode" value="transparent" />

    <embed src="/flashdosyasi.swf" width="870" height="370" wmode="transparent">

    </embed>

</object>

 

İyi çalışmalar dilerim.

Posted in: ASP.NET | Ajax | Flash

Tags: , , , , , ,

Flash ya da javascript ile sayfadaki ajaxtoolkit nesnelerini çalıştırmak

December 1, 2008 at 10:12 AMoozturk

Bir web sitesi hazırlıyorsunuz ve sayfanızda hem flash var hem de ajaxtoolkit nesneleri var.  Flash üzerindeki bir olay halinde - mesela bir butona basıldığnda - bu ajaxtoolkit nesnesine etki etmeniz gerekti, ne yapacağınızı bulmaya çalışıyorsunuz. Doğru yerdesiniz...

Öncelikle şu yazıyı bir okumanızı tavsiye ederim; Flash ile javascript fonksiyonu çalıştırmak.

Flash ile javascript'e ulaşabileceğimizi biliyoruz, demek ki diğer nesnelere de bu javascript ile ulaşabiliriz.

Hiç vakit kaybetmeden örnek ile anlatacağım.

- Bir Ajax enabled masterpage yaratın.

- Bu masterpage üzerinden bir ajax enabled web form yaratın.

- Bu web form'una updatepanel ekleyin ve içine bir modalpopupextender koyun.

- Bu modalpopupextender'a bazı değerler vereceğiz tanım satırında:

   * TargetControlID olarak bir buton falan verin, kullanmanıza gerek yok, onları saklayacağız az sonra.

   * PopupControlID olarak mesela bir panel verin ve panel içine btnCancel adı ile bir buton koyun.

   * CancelControlID olarak btnCancel yazın.

   * BehaviorID olarak da mesela pnlModalVisHid yazın.

- TargetControlID için verdiğimiz butonu kullanmayacaksak buton özelliklerinden visible=false sakın kullanmayın. Çünkü bu durumda IIS bu butonu render etmez ve istemciye yollamaz. Onun yerine div ile visible=false yapın.

- Şimdi bu işlemleri yaptığınız content page içine bir javascript yazalım.

   <script type="text/javascript">
     function showPanel() {
        var pnlvis = document.getElementById(<% ="\'" + pnlModalVisHid.ClientID + "\'" %>);
        pnlvis.show();
     }
   </script>

 

- Eğer flash ile kullanmak istiyorsak yukarıdaki javascript fonksiyonunu çağıracak işlemleri, yukarıda verdiğim yazıdaki gibi yapalım. Eğer javascript ile çalıştırmak istiyorduysanız zaten şu an da hazırlamış bulunuyorsunuz.

İşte oldu. Şu an da bu örneği IIS içine deploy ederseniz, çalıştığını göreceksiniz.

Umarım yeterince açık yazabilmişimdir. Sorularınız olursa bana e-posta atın, mümkün olan en kısa sürede cevap yazarım.

 

İyi çalışmalar dilerim.

Posted in: ASP.NET | Ajax | Flash | Javascript

Tags: , , , , , , , ,

Flash ile javascript fonksiyonu çalıştırmak

December 1, 2008 at 6:22 AMoozturk

Bazı ufak bilgileri - kolay erişilebilir yerlerde oldukları sürece - akılda tutmaya gerek yok.

Flash actionscript ile istediğimiz bir durumda, flash nesnesini taşıyan sayfadaki bir javascript'i çağırmamız mümkün, hem de parametreler ile.

Bunun en eski ve yaygın kullanılan komutu, actionscript'in getURL komutudur. Kullanımı ise getURL("javascript:fonksiyon(parametre1, parametre2)"); şeklindedir.

Bu yazının sonunda bazı püf noktalarından bahsedeceğim, mutlaka okuyun.

Şimdi pratikte nasıl oluyor ona bakalım:

- Bir flash yaratalım ve içine bir buton koyalım. Buton'un örnek adı fBut olsun.

- Bu buton için aşağıdaki kodu yazalım.


on(release)
{
 import flash.net.*;
 getURL("javascript:showAlert();");
}

 

- Şimdi bu flash dosyasını swf halinde kaydedelim, mesela dosya adımız noname.swf olsun. Şimdi de noname.swf dosyamızı bir html ya da aspx dosyası içinde aşağıdaki gibi kullanalım.

<object width="300" height="200">
<param name="movie" value="noname.swf">
<param name="allowscriptaccess" value="samedomain" />
<embed src="noname.swf" width="300" height="200">
</embed>
</object>

 Bu komut sayesinde aynı domain içerisinde, istediğimiz javascript'i çalıştırabiliriz.

- head ya da body kısmına bir javascript yazalım ve içine; flash dosyamızdaki butonun koduna yazdığımız gibi bir showAlert komutu koyalım.

        <script type="text/javascript">
            function showAlert() { alert("asd");}
        </script>

- hazırladığımız html ya da asp.net dosyasını ve flash dosyasını bir IIS içerisinden çalıştırdığımızda çalıştığını göreceğiz.

Mesela : http://localhost/deneme/alarm.html

 

Ancak gerçek hayat kullanımları için bazı önemli bilgiler daha var...

- Masterpage'den türemiş content page'ler için bu uygulama nasıl yapılabilir?

   Javascript'i head kısmına değil, body kısmına koyup kullanabileceğimizi hatırlayalım. Çalıştıracağımız sayfanın içeriğine yazarsak, javascript'imiz çalışacaktır.

- Şimdi kendi bilgisayarımda deniyorum, debug amaçlı çalıştırıyorum ancak javascript çalışmıyor, neden?

   Bu uygulamada dikkat edilecek en önemli husus; flash, bir IIS olmadan getURL komutunu çalıştırmıyor. Kendi bilgisayarınızda bile olsa mutlaka IIS'in istediğiniz web klasörü içerisine deploy edin. Çalışacaktır.

- Bu konuda aklımda başka sorular var ne yapmalıyım?

   Hemen bana myself@oozturk.net adresimden e-posta atın.

 

İyi çalışmalar dilerim.

Posted in: ASP.NET | Flash | Javascript

Tags: , , , , , , ,