Ders 4

Bana bu sayfadaki dersler hakkında soru yöneltmeden önce kendiniz çözmeye çalışın. Çünkü mutlaka bunları ben denedim, yaptım ve çalıştırdım. Belki yazım hatası olmuş olabilir, bunları bana bildirirseniz sevinirim.

hakan@FlashDersi.Com

Derslerin içerikleri belli bir sıraya göre gitmeyecek. Aklıma ne gelirse veya ilginç bulduğum, pratik veya işe yarar ne bulursam eklemeye çalışacağım.

 

Ders 4 ( Ağustos 2005 )

Konu : Flash Communication Server üzerinde çalışan Remote Shared objesi ile ilgili basit bir örnek. Aynı uygulamaya bağlı herhangi bir kullanıcı topun yerini değiştirdiğinde diğer kullanıcıların Flash Player 'ları da topu aynı şekilde gösterecektir.

Gerekenler : Flash Communication Server 1.5 , Flash MX 2004

Yaptığımız uygulamanın çalışmasını görmek için Flash Communication Server 1.5 'in ( kısaca FCS bundan böyle ) kurulu ve çalışıyor olması gerekmektedir. www.macromedia.com 'dan ücretsiz olarak indirebilirsiniz ( test amaçlı ).

FCS ile yeni uğraşanlar için bir kaç bilgi : Son kullanıcının çalıştıracağı Flash dosyası kendi bilgisayarında bulunmaktadır. FCS 'nin çalıştığı server 'da ise en azından uygulamanın adını taşıyan bir klasör açılmış olması gerekmektedir ( FCS 'nin kurulu olduğu dizinin içindeki applications klasörünün içinde. ) Eğer server tarafında çalışan script 'e veya dosyaya gerek yoksa bu klasör boş da olabilir. Ama FCS 'ye uygulamayı tanıtmak için mutlaka uygulamanın adını taşıyan bir klasör açılmış olması gerekmektedir.

Not : Flash dosyanız ve FCS aynı bilgisayar üzerinde çalışabilir !

  1. FCS 'nin çalıştığı bilgisayarda applications klasörüne "ortaktop" (tırnaksız) isimli boş bir klasör açalım. Server tarafında başka bir ayarlama gerekmiyor.
  2. Yeni bir Flash dosyası açalım ( File / New / Flash Document menüsünden ). Bunu FCS 'nin çalıştığı server 'da ( herhangi bir klasörde ) veya FCS 'ye internet veya intranet ile bağlı herhangi bir bilgisayarda yapabiliriz.
  3. Bu Flash dosyamızı ortak_top.fla olarak uygun bir klasöre kaydedelim.
  4. Sahnemizin boyutu olduğu gibi kalsın.
  5. Layer 1 'e bir daire çizelim. Bu dairenin tümünü seçip F8 'e basarak bunu bir Movie Clip 'e çevirelim. Name 'i aynen kalabilir. OK diyelim. <Instance Name> 'i top olarak değiştirelim.
  6. Frame 1 seçili iken F9 'a basarak script penceresini açalım ( Actions - Frame olduğundan emin olunuz ) ve alttaki kodları yazıyorsunuz :
    stop();
    // 1
    top_nc = new NetConnection();
    // 2
    top_nc.onStatus = function(info)
    {
    trace("Level: "+info.level+newline+"Code: "+info.code);
    };
    // 3
    top_nc.connect("rtmp:/ortaktop");
    // 4
    top_so = SharedObject.getRemote("pozisyon", top_nc.uri, false);
    // 5
    top_so.onSync = function(list)
    {
    top._x = top_so.data.x;
    top._y = top_so.data.y;
    };
    // 6
    top_so.connect(top_nc);
    // 7
    top.onPress = function()
    {
    this.onMouseMove = function()
    {
    top_so.data.x = this._x=_root._xmouse;
    top_so.data.y = this._y=_root._ymouse;
    // 8
    if (top._x>=Stage.width)
    {
    top._x = Stage.width-50;
    }
    if (top._x<=0)
    {
    top._x = 50;
    }
    if (top._y>=Stage.height)
    {
    top._y = Stage.height-50;
    }
    if (top._y<=0)
    {
    top._y = 50;
    }
    };
    };
    // 9
    top.onRelease = top.onReleaseOutside=function ()
    {
    delete this.onMouseMove;
    };
  7. Uygulama bu şekilde hazırdır. fla 'mızı Shift+F12 ile swf haline publish edelim. Test etmek için swf 'den 2 tane açalım ve herhangi birinde topu rasgele tutup sürükleyelim. Eğer herşeyi doğru yaptıysanız diğer Flash Player 'deki top da aynı şekilde hareket edecektir.

Script 'in adım adım açıklanması:

1 - FCS bağlantısı tanımlıyoruz. İsmine top_nc dedik.

2 - Bağlantının sağlanması veya sağlanmaması durumunda çalışacak fonksiyonu ( onStatus fonksiyonu ) yazıyoruz. Örneğimizde, uygulamaya etki eden bir kod yok bu fonksiyonda ( sadece bağlantı hakkında bilgi veren info parametresini kullandık )

3 - connect ile server 'a bağlanıyoruz. Örnek bağlantı şekilleri:
I) baglanti_ismi.connect("rtmp:/serverdaki_dizin_ismi");
Eğer swf, FCS ile aynı bilgisayarda çalışacaksa.
II)baglanti_ismi.connect("rtmp://Server_ismi/serverdaki_dizin_ismi");
Swf, herhangi bir PC üzerinde çalışabilir (eğer Server ile network bağlantısı mevcut ise. Server_ismi yerine Server_IP no da yazılabilir)

4 - pozisyon adında ( FCS 'deki ismi) bir uzak paylaşılmış obje tanımlıyoruz. Bizdeki instance (kopya) ismi ise top_so .

5 - top_so 'nun onSync method 'unu tanımlıyoruz. Bu fonksiyon herhangi bir kullanıcının paylaştırılmış objenin data özelliklerinden birini değiştirdiğinde çalışır.

6 - Paylaşılmış objenin bağlantısını gerçekleştiriyoruz. Kullanımı: paylaşılmışObje.connect(RTMPbağlantısı);

7 - Sahnedeki top movieClip 'e basılıp sürüklendiğinde, paylaşılmış objenin data özelliğine verdiğimiz özelliklerin değerini belirliyoruz.

8 - top 'un sahneden çıkmasını kontrol eden kod.

9 - top 'a basmayı bıraktığımızda 7'de tanımladığımız onMouseMove fonksiyonunu siliyoruz.

Umarım bu ders size Flash Communication Server ile kolayca yapabileceklerimize iyi bir örnek olmuştur.

Bu ders hakkında sorularınızı hakan@FlashDersi.com 'a Ders4 konusuyla yollayabilirsiniz.

yukarı git