Bu mantık pek çok yerde işimize yarayabiliyor. Sayfalama sistemlerinde bu yöntem mükemmeldir. Sahnede toplamda kaç kutu var, bu kutu sayısını 5'er li sıralarsam son sayfaya kaç kutu düşüyor. Ya da sayfalama işlemi küsüratsız olarak bitti ise ileri butonunu kullanıma kapat gibi...


Yöntemin nasıl değerler döndürdüğüne bakalım:

// ACTION SCRIPT

// Bölünebilirliğin Tespit Edilmesi

trace(Boolean(10%5)) // false

trace(Boolean(7%7)) // true

trace(Boolean(7%2)) // false

//Burada ("?") karakteri ise 'nin, (":") karakteri ise değilse 'nin rolünü alıyor.

trace(Boolean(10%5) ? "Bölünemez" : "Bölünebilir "); // Bölünebilir

// Kalan hesaplama

trace("10 / 3, " , 10%3 , " kalanını verir") // 10 / 3,  1  kalanını verir


Yöntemden kısaca bahsetmiş olduk.


Görüldüğü gibi sayfalama için kullanılabilirliği mükemmel.


Bu teknik için bir sınıf oluşturmaya çalışalım. Böylece örneğin 2 ile 70 arasında 4 ile tam bölünebilen sayıları yeni bir diziye kolayca aktarabileceğiz. Örneğin split static fonksiyonu belirli karakterden string ifadeyi parçalayarak her elemanı dizi olarak döndürüyor, bunu kullanarak yeni bir dizi oluşturabiliyoruz.



Haydi bismillah, bu da as3coder sınıfları arasına girmiş olsun:

// CLASS com/as3coder/say.as

package com.as3coder{

public class say {

// İki sayı arasında x ile bölünebilen sayıları yazdırmak için kullanılacak fonksiyon
public static function yazdir(birinciSayi:Number,ikinciSayi:Number,kacarli:Number) {

for (birinciSayi; birinciSayi<=ikinciSayi; birinciSayi++) {

trace(Boolean(birinciSayi%kacarli)?"Bölünemez: "+birinciSayi+"/"+kacarli:"Bölünebilir: "+birinciSayi+"/"+kacarli);

}

}


// İki sayı arasında x ile bölünebilen sayıları diziye eklemek gibi amaçlar için kullanabileceğimiz fonksiyon
public static function ayristir(birinciSayi:Number,ikinciSayi:Number,kacarli:Number):Array {

var array:Array=new Array();

for (birinciSayi; birinciSayi<=ikinciSayi; birinciSayi++) {

if (! (birinciSayi%kacarli)) {

array.push(birinciSayi);

}

trace(Boolean(birinciSayi%kacarli)?"Bölünemez: "+birinciSayi+"/"+kacarli:"Bölünebilir: "+birinciSayi+"/"+kacarli);

}

return array;

}

}

}


Kullanım:

// ACTION SCRIPT

// Sınıf dosyası'nı com içindeki dizinden import ediyoruz. Eğer package teriminin önünden com.as3coder ifadesini kaldırırsanız ve .fla dosyasıyla sınıf dosyasını aynı yere koyarsanız buna gerek kalmaz.

import com.as3coder.say;

// Diyelim ki 0 ile 9 arasında 3 ile bölünebilen sayıları rapor-liste şeklinde yazdırmak istiyoruz.

say.yazdir(0,9,3);

// Çıktı:

//Bölünebilir: 0/3
//Bölünemez: 1/3
//Bölünemez: 2/3
//Bölünebilir: 3/3
//Bölünemez: 4/3
//Bölünemez: 5/3
//Bölünebilir: 6/3
//Bölünemez: 7/3
//Bölünemez: 8/3
//Bölünebilir: 9/3

// Diyelim ve devam edelim: yeni sayılarla split metoduna benzer bir şekilde dizi oluşturalım. 2 ile 10 arasında, 2'ye bölünebilen sayılar.

var yeniDizi:Array = say.ayristir(2,10,2);

trace(yeniDizi);

// Çıktı:

// 2,4,6,8,10


Yeri gelmişken örnek uygulamanın kodlarınıda ekleyelim. Unutmayın: kütüphanede numara adlı bir movieClip var ki sınıf ismi "numara". Numarayı kütüphaneden çağırmak için numara_mc:numara = new numara() dediğimizi farkedeceksiniz. Numaranın da içinde numara_txt adlı bir dynamic metinimiz var. Sahnedeki sifirla_btn'yi de unutmayın. Tabiki de örnek dosyayı indirerek detayları inceleyebilirsiniz.

// ACTION SCRIPT

// Bu uygulamanın açıklamalarını detaylandıramıyorum. Çünkü konunun özünü yeterince detaylandırdık. Konu dışı kalan kısımları başka derslerde vereceğiz. Örneğin tweenMax ile örneğini izlediğimiz animasyon gibi. Animasyondaki geciktirme efektinin sırrı i * delay:0.03 'te yatıyor. Kutunun yerleşme sırası * gecikme süresi. Diğer detay kısımlardan sorularınız olursa memnuniyetle cevaplarım.

import com.as3coder.*;
import com.greensock.*;
import fl.transitions.easing.*;


var xSira=0;
var ySira=0;
var kutular:Array = new Array();


function sirala(e:MouseEvent) {

hepsiniTemizle(kutular)


var kacIle_int = int(kacIle_txt.text);
var kacArasinda_int = (kacArasinda_txt.text);

var kacaBolunebilen_int = (kacaBolunebilen_txt.text);


for (var i=kacIle_int; i<=kacArasinda_int; i++) {

var numara_mc:numara = new numara();


numara_mc.x = xSira * (numara_mc.width + 5) + 22;
numara_mc.y = ySira * (numara_mc.height + 5) + 22;

xSira++;


if (xSira > 11) {

xSira=0
ySira++;

}


if (!(i%kacaBolunebilen_int)) {

    numara_mc.gotoAndStop(2);

}


addChild(numara_mc),numara_mc.numara_txt.text=String(i);
kutular.push(numara_mc)

numara_mc.scaleX=0;
numara_mc.scaleY=0;

TweenMax.to(numara_mc, 1.5, {scaleX:1, ease:Elastic.easeOut,delay:(i-kacIle_int)*0.035});
TweenMax.to(numara_mc, 1, {scaleY:1, ease:Elastic.easeOut,delay:(i-kacIle_int)*0.035});

}

}


function hepsiniTemizle(dizi:Array) {

for (var i=0; i<kutular.length;i++){

removeChild(kutular[i])

}


kutular.splice(0)

xSira=0;
ySira=0;

}


sirala_btn.addEventListener("click",sirala);


Dosyalar: http://as3coder.com/dosyalar/uygulamalar/bolunebilme_sayfalama/bolunebilme_sayfalama.rar


Dersi Arşivleyin(PDF): http://as3coder.com/dosyalar/uygulamalar/bolunebilme_sayfalama/Iki_sayi_arasinda_belirli_bir_sayiya_bolunebil.pdf


Tam Sayfada Görüntüleyin: http://as3coder.com/dosyalar/uygulamalar/bolunebilme_sayfalama/Iki_sayi_arasinda_belirli_bir_sayiya_bolunebil.html


Bu uygulama As3coder.com / Burak Aydın Tarafından Geliştirilmiştir. Kaynak Gösterilmeden Yayınlanması Yasaktır.