Mehmetoglu.org ActionScript 3 Dersleri - 7 [Döngüler]
Posted on Cuma, Mart 21st, 2008 at 09:19Not: (” Tırnak) işaretlerini kodlamada yeniden yazmanız gerekmektedir.
Bu dersimizde döngülere değineceğiz. Bir çok çalışmamızda döngüleri kullanacağız. Döngüler program her döndüğünde istenilen işlemleri yaptırmaya yarar.
// Kodlamar buradan itibaren başlamıştır
// FOR DÖNGÜSÜ
// Integer cinsinde getir adında bir değişken tanımlıyoruz
var getir:int;
// for döngüsünü burada kuracağız.
// getir = 0′la; getir küçük eşit 50 olana dek; getire bir ekle
for (getir = 0; getir <= 50; getir++)
// Her döndüğünde son saymaya bir eklenmektedir. Böylece Output ekranına 1,2,3,4..50 şeklinde sayılar yazdırılır.
{
trace(getir);
}
//Yani getir sıfırdır. Bir ekle, yaz, bir ekle, yaz.. getir küçük eşit 50 olana dek.
////////////////
// Şimdi bu örneği ActionScript panelinden silip aşağıda verdiklerimi yazmaya başlayabilirsiniz.
var getir2:int;
for (getir2 = 0; getir2 < 10; getir2 ++) {
// Buraka kadar herşey aynıydı. Şimdi kütüphaneden topu 10 kez çekmeye ve sahnede düzenlemeye çalışacağız.
/* Bir top figürü çizin ve film klibine çevirin. İsmi mühim değil.
Kütüphaneyi açın ve film klibine sağ tıklayarak “Linkage” sekmesini tıklatın.
İlk seçenek olan Export for ActionScript çentiğini aktif edin. Üçüncü seneçek kendi kendine açılacaktır.
Class kutucuğuna top yazın. */
//Linkage ismi top olan sembolü gelenMc olarak tanımlıyoruz.
var gelenMc:top = new top();
// Topları sağa ve aşağı doğru çapraz dizilimle sıralayalım.
// Dizilim başlamadan önce birinci topumuzun x ve y eksenindeki konumunu girebilirim.
gelenMc.x = getir2 * gelenMc.width;
/* Program birinci kez döndüğünde gelecek olan topun x eksenindeki konumu: getir(0) ÇARPI gelenMc ‘nin eni(100) */
gelenMc.y = getir2 * gelenMc.height;
// Program birinci kez döndüğünde gelecek olan topun y eksenindeki konumu, getir(0) ÇARPI gelenMc ‘nin boyu = 100
// ve bu değerlerle gelenMc ‘yi sahneye ekle
addChild(gelenMc); //
/* Döngü burada sona eriyor. Yani yeniden başa dönüp herşeyi ikinci kez yapmaya şu andan itibaren başlıyor. İşte bu yüzden her seferinde son eklenen topun konumu
[ gelenMc.x = getir * gelenMc.width; ]
[ gelenMc.y = getir * gelenMc.height; ]
‘den dolayı 100 artarak değişiyor. Top için hem x hem de y ekseni 100 piksellik bir (topun eni ve boyu 100 ‘dür) artışla geri dönüyor.
0(getir) * 100 = 0
1(getir) * 100 = 100
2(getir) * 100 = 200
3(getir) * 100 = 300
…
50 * 100
*/
}
/* Böylece toplar birbirine dayalı yanyana dizilecekler. Tabi aynı şeyler boylar içinde söz konusu olduğundan çapraz dizilim elde edeceğiz */
// FOR.. IN
// Bir örnekte for in için yapalım. uyeler adında bir dizi oluşturuyoruz.
var uyeler:Array = ["burak", "hasan", "mehmet", "gokhan"];
/* For döngüsü ile dizi içeriğindeki nüfusu, sira adli string değişken olarak tanımlıyoruz(0,1,2,3). Böylece (0,1,2,3) ‘e kadar herkesi sırayla çağırabileceğiz */
for (var sira:String in uyeler)
{
// Tüm elemanları yazdırmak için uyeler dizisi ve her defasında oluşan sira ‘ yı kullanıyoruz;
trace(sira);
trace(uyeler[sira]);
}
/* Çıktı
0
burak
1
hasan
2
mehmet
3
gokhan
*/
// Her dönüşte gelen >> uyeler[0], uyeler[1], uyeler[2], uyeler[3],
///////
// FOR EACH.. IN
var Obje:Object = {burak:20, hasan:30, mehmet:50};
for each (var degerler in Obje)
{
trace(degerler);
}
// WHILE
var sayma:int = 0;
while (sayma <= 5)
{
trace(sayma);
sayma++;
}
// DO WHILE
var saymaIki:int = 5;
do
{
trace(saymaIki);
saymaIki++;
} while (saymaIki < 5);
// Gördüğünüz gibi şart do while’da en sonda. Bu yüzden şart sağlanmasa bile döngü birkez gerçekleşir ve devam edilebilirlik için karar verilir diye biliyorum.
// Ayrıca tüm döngülerde çalışacağını sandığım önemli bir komuttan bahsedeyim. break; Bu komutla döngüyü istediğimiz
// yerde durdurabiliriz.
// While döngüsünü ele alalım. Koşullar kısmını doldurduğumuzu varsayıyorum (…) ardından yapılacaklar {….
// şeklinde açtığımız ayracın sonuna şartımızı yazıyoruz: Eğer i 3 ‘den daha büyük olduysa bitir yazalım; if (i > 30)
// { break; } ardından döngünün yapılacaklar kısmınıda kapatıyoruz }.
// Yani;
var sayma2:int = 0;
while (sayma2 <= 5) {
trace(sayma2);
sayma2++;
if (sayma2 > 2) {
break;
}
}
// Döngüler daha ayrıntılıdır. İhtiyacınız olursa yardım dosyalarına bakınız (F1)
_____________________________________
Sonuç >> http://www.mehmetoglu.org/as3_dersler/ders_07.swf
Proje dosyası >> http://www.mehmetoglu.org/as3_dersler/ders_07.fla
Kaynak: www.mehmetoglu.org | Kaynak gösterilmeden yayınlanması ayıp ve yasaktır
5 Yorum yazılmış
Yazmayan ölsün..