Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
Actionscript etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Actionscript etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

16 Mayıs 2010 Pazar

AS 3.0 - KeyboardEvent ve KeyCombinations

Hikaye şu: Sahnede bir mc var içinde resim, W tuşuna bastınmı yukarı kaysın, Shift + W tuşuna bastın mı daha hızlı kaysın. Kod şu:


import flash.events.KeyboardEvent;

// W tuşuna basıldığında resmi ileri götürelim.
stage.addEventListener(KeyboardEvent.KEY_UP,f_ileri);

function f_ileri(e:KeyboardEvent):void
{
//W tuşunun kodu ne?
if (e.keyCode == 87)
{
mcArkaPlan.y -= 10;
}
// Shift+w tuşunda iki katı hız yapsın.
if (e.shiftKey && e.keyCode == 87)
{
mcArkaPlan.y -= 20;
}
trace("Tuş: "+e.keyCode+" , Shifte basildi mi? = "+ e.shiftKey);
}


Videosu:


Kodu biraz ötele. Oyun konsoluymuş gibi W tuşuna basılı tutuyorsa kullanıcı, sürekli basıldığını kontrol etmeli. Bunu da ENTER_FRAME olayı ile yap. W ye basılıysa 10 hızında arka planı kaydır, Shift+W ise 20 hızında, tuşa basmaktan vazgeçtiyse kaydırmayı durdur. İşte kod:

import flash.events.KeyboardEvent;
import flash.events.Event;

var hiz:Number;
// Sahnedeki her frame geçişinde kontrol edelim hızımız ne?
// hiz==0 ise mcArkaPlan kaymamalı.Durmalı.
// Shift tuşu olmaksızın gidiyorsak yavaş, shift tuşuyla hızlı gitmeliyiz
stage.addEventListener(Event.ENTER_FRAME,f_SonDurum);
function f_SonDurum(e:Event):void
{
if (hiz != 0)
{
mcArkaPlan.y += hiz;
}
}

stage.addEventListener(KeyboardEvent.KEY_DOWN,f_ileri);
stage.addEventListener(KeyboardEvent.KEY_UP,f_dur);

function f_ileri(e:KeyboardEvent):void
{
// W tuşuna basıldığında resmi ileri götürelim.
if (e.keyCode == 87)
{
hiz = -10;
}
// Shift+w tuşunda iki katı hız yapsın.
if (e.shiftKey && e.keyCode == 87)
{
hiz = -20;
}
trace("Tuş: "+e.keyCode+" , Shifte basildi mi? = "+ e.shiftKey);
}

function f_dur(e:KeyboardEvent):void
{
hiz = 0;
}


AS 3.0 - MCden Düğme

3 Sabit metni, mc ye dönüştür. Bunların buttonMode özelliğini (her mc nin varsayılan false gelir) true yap. Bu düğmelere tıklandığında arkalarındaki planın(bu da 4 frameli bir mc) durduğu çerçeveyi değiştiren bir fonksiyon yaz. Böylece arka plan rengini(mcArkaPlan'ın çerçevesini) kodla değiştirmiş ol. Aşağıda kodu, resmi, videosu var.


import flash.events.MouseEvent;
import flash.events.Event;

mcKirmizi.buttonMode = true;
mcMavi.buttonMode = true;
mcYesil.buttonMode = true;

// tiklandiginda arka plan rengi degissin.
// tiklanma = MOUSE.CLICK eventini bir fonksyiona baglayacagiz.
mcKirmizi.addEventListener(MouseEvent.CLICK,f_tiklandi);
mcMavi.addEventListener(MouseEvent.CLICK,f_tiklandi);
mcYesil.addEventListener(MouseEvent.CLICK,f_tiklandi);

mcKirmizi.frameNo = 2;// ikincisi kirmiz arka plandi
mcMavi.frameNo = 3;// mavi arka plan 3. frame idi
mcYesil.frameNo = 4;// yeşik arka plan 4. frame idi

function f_tiklandi(e:Event):void
{
// sahnedeki arka plan mc sinin frame'ini degistirecegiz
// tiklanan butona gore.
// o zaman butonlara bir ozellik ekleyelim, hangi frame e gidecegimizi
// anlayabilmek icin.
// hangi düğmeye tıklanmışsa o bize currentTarget ozelligi ile gelir
// DELPHI, C# v.s. deki sender gibi.

// ya gidecek. Kim? mcArkaPlan
var cerceveNo:Number = e.currentTarget.frameNo;
mcArkaPlan.gotoAndStop(cerceveNo);
}





Video:

AS 3.0 - MOUSE.OVER Olayı

Bir mc oluştur, ve ilk framine stop yaz ki sahneye koyduğunda çalışmasın. Çalışması işini mouse eventlerinden over ile yapacaksın.

Bir fonksiyon yaz ki mouse.over eventi ile tetiklensin. Aşağıdaki kod parçasını sahnede actions diye açtığın katmana(kodu ayrı kata koymak gelenektir) ilk frame e yaz. Bitti işte.

import flash.events.MouseEvent;
import flash.events.Event;

mcDaire.addEventListener(MouseEvent.MOUSE_OVER,f_Oyna);
function f_Oyna(e:Event):void
{
e.currentTarget.play();
}




15 Mayıs 2010 Cumartesi

AS 3.0 - ENTER_FRAME Olayı

ENTER_FRAME olayı, listenerı ataçlanmış objenin her FRAME'e girişinde ilişkilendirilmiş fonksiyonu çalıştırması için kullanılır.

ObjeninAdresi.addEventListener( EVENTinTipi,FonksiyonunAdi )

Aşağıdaki kodu önce sahneye bir movieclip koyduktan sonra, F9 ile action girişi yapılarak aşağıdaki kod eklenir. Sonuçta mc her frame e girdiğinde 3 pixel ilerler. Animasyonu kod ile oluşturmuş oluruz.

import flash.events.Event;

// [this,root].[objeninInstanceAdi].addEventListener(
// objenin tetiklenecek Eventinin Tipi,
// bu event olduğunda tetiklenecek fonksiyon );
this.mcDaire.addEventListener(Event.ENTER_FRAME,f_DaireyiIlerlet);

// Event olduğunda tetiklenecek fonksiyon
function f_DaireyiIlerlet(e:Event):void
{
e.currentTarget.x += 3;
}




TIMER ve TimerEvent


Her ENTER_FRAME olduğunda yukarıdaki işlem gerçekleşiyordu. Sahnede 12 ya da 24 ya da her ne kadar frame bir saniye olsun dediysek, o kadar kez o frame işlenecek. Saniyeyide Timer ile ölçümlemek istesem, aşağıdaki kod parçacığı işimi görecek.

var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER,fTimer);
timer.start();

var iTimer:Number = 0;
function fTimer(e:TimerEvent):void
{
iTimer++;
trace("Saniye "+ iTimer);
}

AS 3.0 - Classes must not be nested

"Classes must not be nested" yani AS sınıflarını .as uzantılı bir dosyaya taşımalı ve bu dosyaların bulunduğu klasör yapısına göre paket adını belirtmelisin (Javadaki gibi).



package ilkKlasor.SiniflarKlasoru.BaslangicSiniflari
{

public class SelamDunya
{
public function SelamDunya()
{
// constructor code
}

public function f_Merhaba():String
{
return "Sealm Dünyalı!";
}

}

}



Eskiden olduğu gibi bir katman AS için tutulur. Eskiden farklı olarak paket import edilerek sınıftan bir nesne oluşturulup yine eskiden olduğu gibi sahnedeki controlün propertisine, oluşturulan nesnenin metodu atanır.

import ilkKlasor.SiniflarKlasoru.BaslangicSiniflari.SelamDunya;

var selamunAleykum = new SelamDunya();

txtSelam.text = selamunAleykum.f_Merhaba();