Actionscript 2′den Actionscript 3′e geçiş üzerine

27 Ekim 2007 – 13:08

Macromedia’nın Adobe’nin bünyesine gireceğini duyduğumda aklıma ilk gelen şey sık kullandığım programların bir sonraki sürümünün nasıl olacağıydı. Açıkça söylemek gerekirse ben sonuçtan çok memnunum.

Flash ta ve Actionscript te  çok büyük değişiklikler yapıldı.Ben bu makalede ActionSciprt 2 ile Actionscript 3 arasındaki bazı farklılıkları değinmeye çalışacağım.Tabii tamamına değildi sık kullanılanlara değineceğim.

Debug
Türkçe hocamız “Bir dil ne kadar kurallı ise o kadar iyidir” derdi.Actionscript 3’ü ilk kullandığımda ilk dikkatimi çeken şey daha çok hata vermesiydi.AS3 AS2 ye göre daha kurallı bir dil.Bu da flash dokümanlarını derlerken hatanın ne olduğunu anlamaya daha çok yardımcı oluyor.

XML
İlk olarak “Validating Parser” den bahsetmek istiyorum.Validating Parser xml dosyanızın doğru biçimde
olup olmadığını kontrol ediyor.Yani taglarınız doğru şekilde kapatılmışmı, root node varmı yokmu vs gibi
hataların olup lmadığını kontrol ediyor.


Örnek verecek olursak bir xml dosyası oluşturdum ve ana tagı kapatmadım.Flash aşağıdaki hatayı verdi.
Error #1085: The element type “main” must be terminated by the matching end-tag < /main>”.
Ayrıca Xml kullanımında büyük değişiklikler oldu.ECMAScript for XML (E4X) denilen bir system kullanmaya başlandı.
AS2 de bir xml dosyasını okumak için xml objesini oluşturup daha sonra XMl.load() metodunu kullanırdık.

  1. var myXML:XML = new XML();
  2. myXML.onLoad = function(success) {
  3.  trace(myXML);
  4. };
  5. myXML.load("content.xml");

AS 3 te ise loader URLLoader sınıfı ile yapılıyo.

  1. var myXML:XML = new XML();
  2. var myXMLURL:URLRequest = new URLRequest("content.xml");
  3. var myLoader:URLLoader = new URLLoader(myXMLURL);
  4. myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
  5. function xmlLoaded(event:Event):void {
  6.  myXML = XML(myLoader.data);
  7.  trace(myXML);
  8. }

Xml
<?xml version=”1.0″ encoding=”utf-8″?>
<main>
<link url=”http://www.stayupdatedonweb.com”/>
<link url=”http://www.google.com” />
<link url=”http://www.adobe.com” />
</main>

Artık Altçizgi yok

  1. my_mc._x = 25 //Eski
  2. my_mc.x = 25 //Yeni
  3. my_mc._height = 200 //Eski
  4. my_mc.height = 200 //Yeni

100 - Artık değerler 0-100 üzerinden değil 0-1 üzerinden

  1. my_mc._alpha =50;
  2. my_mc.alpha =0.5;

_root  ve _parent
İki tane movie clibimiz olsun  ust_mc ve alt_mc. alt_mc’yi ust_mc nin içinde düşünün. AS2 de bir moviclibin içindeyken bir üst katmana geçmek için

  1. _parent.ust_mc._x =25//alt mc_nin içinden

A3 3 te ise bu tamamen farklı

  1. MovieClip(this.parent).ust_mc.x = 25; //alt mc_nin içinden

onEnterFrame, onPress, onRelease, OnRollOver, onRollOut,…
onData() , onDragOut() , onDragOver() ,  onKeyDown() , onKeyUp(), onKillFocus(), onLoad(), onMouseDown(), onMouseMove(), onMouseUp(), onReleaseOutside(), onSetFocus(), onUnload()    vs.. bu metodların tamamını artık eventListener ların içinde kullanıyoruz. 

AS 2

  1. my_mc.onPress = function()
  2. {
  3.      //çalışacak kodlar burada yer alıyor
  4. }

AS3 te event listener ekliyoruz.Eğer olay gerçekleşirse  fonksiyonu çağırıyor

  1. my_mc.addEventListener(MouseEvent.MOUSE_DOWN, fonksiyonuCagi);
  2. function fonksiyonCagir(event:MouseEvent) {
  3.  //çalışacak kodlar burada yer alıyor
  4. }

getNextHighestDepth
AS 2 de ekranda bir objeyi görüntülemek için depth numaraları kullanmak  gerekiyordu.Depth ler artık otomatikmen Flash playerin içinde kuruluyor.Onun yerine ise z-order sistemi geldi.
AS 2 de movielip yaratıp görüntülemek için getNextHighestDepth kullanıyorduk

  1. this.createEmptyMovieClip("my_mc", this.getNextHighestDepth());

AS 3 te ise ekranda görüntülemek için  addChild metodunu kullanıyoruz.

  1. var my_mc:MovieClip = new MovieClip();
  2. addChild(my_mc);

swapDepths

  1. my_mc.swapDepths(this.getNextHighestDepth());   //AS 2
  2. my_mc.swapChildren(sprite1, sprite2);   //AS3

attachMovie
Artık attachMovie() yok.Peki kütüphanedeki öğeleri nasıl çağıracaksınız?
1- Kütüphanedeki öğenize sağ tıklayın ve Linkage basın
2- Class bölümüne bir isim verin(Örn = my_mc).Default olarak kütüphanedeki movieclipin ismini alacaktır.
3- Ok’ye basın.Çıkan mesaja OK deyin.Ok dediğinizde flash obje için bir class olmadığını fark edip kendisi bir class yaratcaktır.
4- Action Script panelini açın ve aşağıdaki kodu yazın.

  1. var daire:my_mc = new my_mc();
  2. addChild(daire);

createEmptyMovieClip

  1. this.createEmptyMovieClip("my_mc", this.getNextHighestDepth());    //AS 2
  1. var my_mc:MovieClip = new MovieClip();      //AS3
  2. addChild(my_mc);

getURL

  1. getURL("http://www.stayupdatedonweb.com", "_blank");    //AS 2
  2. var url:String = "http://www.stayupdatedonweb.com"; //AS 3
  3. var request:URLRequest = new URLRequest(url);
  4. navigateToURL(request);

Yukarıdaki liste haricinde birçok şey daha değişti.Bu listenin tamamına oluşmak için Flash Cs3 te f1 basarak yardım bölümüne giriniz ve arama kısmına “ActionScript 2.0 Migration” yazıp arayın veya  aşagıdaki adresten listenin tamamına ulaşabilirsiniz.
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/index.html?migration.html&all-classes.html

Kolay gelsin
Engin!

Bu makale ile ilgili olabilecek yazılar



Yorum Ekleyin