İki Sayı Arasında X ile Bölünebilen Değerleri Kullanmak / Kalan Hesaplama
Posted on Çarşamba, Mart 24th, 2010 at 20:07Bu 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:
// 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:
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:
// 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 örnek dosyayı indirerek de detayları inceleyebilirsiniz.
// 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.
3 Yorum yazılmış
Yazmayan ölsün..