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

Piksel piksel performans

1920x1440 boyutunda bir resim dosyasını boş bir BitmapData objesine kopyalama sırasında harcanan ortalama zaman değerleri:

draw() : 4 ms
setPixels() : 63 ms
setVector() : 112 ms

source:
private function runTest():void {
    var sampleBitmap:Bitmap = new BitmapTest();
    
    var bmd:BitmapData = new BitmapData(sampleBitmap.width, sampleBitmap.height, false, 0x0);
    var copyCat:Bitmap = new Bitmap(bmd);
    addChild(copyCat);
    
    var timer:uint = getTimer();
    var bits:Vector. = sampleBitmap.bitmapData.getVector(sampleBitmap.bitmapData.rect);
    bmd.setVector(bmd.rect,bits);
    trace("setVector: " + (timer-getTimer()) + " ms");
    
    timer = getTimer();
    bmd.draw(sampleBitmap);
    trace("draw: " + (timer-getTimer()) + " ms");
    
    timer = getTimer();
    var bytes:ByteArray = sampleBitmap.bitmapData.getPixels(sampleBitmap.bitmapData.rect);
    bytes.position = 0;
    bmd.setPixels(bmd.rect,bytes);
    trace("setPixels: " + (timer-getTimer()) + " ms");
}

Artık Türkçe: ActionScript 3.0 Dil ve Bileşenler Başvurusu



Artık Türkçe: ActionScript 3.0 Dil ve Bileşenler Başvurusu

http://help.adobe.com/tr_TR/AS3LCR/Flash_10.0/index.html

Actionscript 3 ve performans

Number, int ve uint arasındaki performans farkı, garip ama gerçek:

var time:Number;

time = getTimer();
var f:Number = 0;
for(var i:Number=0; i<100000000; i++){
f++;
}
trace("num speed: " + (getTimer()-time) + " ms");



time = getTimer();
var t:int = 0;
for(var ii:int=0; ii<100000000; ii++){
t++;
}
trace("int speed: " + (getTimer()-time) + " ms");



time = getTimer();
var fi:uint = 0;
for(var iii:uint=0; iii<100000000; iii++){
fi++;
}
trace("uint speed: " + (getTimer()-time) + " ms");


ortalama sonuçlar ise şu şekilde:

number speed : 644 ms
int speed : 469 ms
uint speed : 546 ms


Sonuç olarak Number sınıfı yerine int sınıfının kullanılması yerine göre %20'ye yakın performans artışı sağlayabiliyor. Özellikle yüklü iteration gerektiren işlemlerde kullanacaksanız şiddetle tavsiye ederim.

BetweenAS3: Yeni performans canavarı tweener

Yeni bir Tweener keşfettim. Spark Project - ActionScript Class Library'e ait BetweenAS3 isimli tweener sınıfı inanılmaz hızlı çalışıyor.

Testler izlendiğinde, hız açısından ilk anda "oha" dedirtecek cinsten performanslı bir tweener diyebilirim. Kullanımı TweenLite'e göre kolaylık açısından biraz daha fazla karakter kullanmaya zorlasa da, çok parçacıklı işlerde kullanılabilirliliği gerçekten tatmin edici düzeyde.

Teste buradan gidelim ve görelim...
Anasayfası ise burada: http://www.libspark.org/wiki/BetweenAS3/en
Spark Project ise burada : http://www.libspark.org/

Site çince, ingilizce çevrimi tam yapılmamış. Eğer zorlanırsanız http://translate.google.com yardımcınız olsun...

Multiple File Uploader

Progress Bar kullanan bir uploader yazmıştım zamanında. Şimdi de önemli bir işlem için, aynı anda birçok dosyayı istenilen sınır sayıda ve aynı anda progress bar kullanarak upload edebilen bir flash uygulaması lazım oldu. Ben de yazayım bari dedim.

Buyrun tüm kayn(m)ak kodları :

MultipleFileUploader.zip

Flash CS4 IDE'sinde çıkmayan AS3 "Code Hint" menüsü

Flash IDE'sini açtım ve yeni bir actionscript dosyası yarattım. Garip bir şekilde "Code Hints" dediğimiz açılır menü içerisinde actionscript 3.0 yerine actionscript 2.0 sınıfları vardı. Bozulmuş bir "Code Completion" vakası diyecektim ki bir anda aklıma bu ufak ayrıntı takıldı. Zira ikinci screenshot (ss) üzerinde çıkan menüyü hiç kullanmıyorum desem yeridir. Neyse, gelelim çözüme; ilk ss'de yer alan butona tıkladığımızda açılan ikinci ss'deki menüden eğer "actionscript 1.0 & 2.0" seçili ise actionscript 3.0 beklerken, kod yardımcı menüsü içerisinde 2.0 sınıfları yer almakta. Bilmeyip de benim gibi tufaya düşenlere ufak bir hatırlatma olsun.

BatchCopier: FileCopier sınıfı ile toplu dosya işlemleri

Adobe Air ile kopyalama işlemlerinde sadece "complete" eventi yetersiz kalmıştı. Bunun üzerine bu işlevi, yazdığım FileCopier sınıfı ile zengin bir event sistemiyle, byte bazında gerçekleştirmiştim. Şimdi de bu işlemi bulk (toplu) olarak yapan sınıfı takdim edeyim:

Download : BatchCopier.zip

BatchCopier ile;
- o an ki toplam progress'i (0-1 arasi) görebilir,
- geçerli progress'i (0-1 arasi) görebilir,
- geçerli dosya ismini alabilirsiniz.

Kullanımı:

import com.onderezdi.utils.FileCopier;
import com.onderezdi.utils.BatchCopier;


var bc:BatchCopier = new BatchCopier();
bc.destination = targetDir.nativePath + "/videos";
for(var i=0; i<selectedVideosOfFirm.length; i++){
var f:File = new File(File.applicationDirectory.nativePath + "/videos/" + selectedVideosOfFirm[i].file);
bc.addItem(f);
}
bc.addEventListener("nextfile", onNext); //Sonraki yukleme islemi basladiginda cast eder
bc.addEventListener("progress", onProgress); //her yukleme evresinde cast eder
bc.addEventListener("complete", copyImages); //tum yukleme bittiginde cast eder
bc.start();

Adobe Air 1.5 ve dosya kopyalama eventleri

Adobe Air'de File sınıfı içerisinde copy ve move işlemleri için nedense complete dışında event yok. Bu eksikliği kapatmak için kendi sınıfımızı yazmak zorundayız. Bu yüzden birçok event'i içerisinde barındıran FileCopier isimli sınıfı yazdım.

Örneklerle açıklamak gerekirse:

Download : FileCopier


import com.onderezdi.utils.FileCopier;

var fc:FileCopier = new FileCopier();
fc.source = "C:/Documents and Settings/Scorpion/Desktop/FerrariVirtualRace.exe";
fc.destination = "C:/Documents and Settings/Scorpion/Desktop/FerrariVirtualRaceeeeeeeeeee.exe";
fc.addEventListener("progress", function(){trace(fc.bytesLoaded+" / "+fc.bytesTotal)});
fc.addEventListener("complete", function(){trace("fileCopier Done!")});
fc.addEventListener("started", function(){trace("fileCopier start!")});
fc.addEventListener("stopped", function(){trace("fileCopier stopped!")});
fc.start();

/*
//Burada ise islemi durdurup, baslatabiliriz. Bir nevi pause mantigi
setTimeout(function(){fc.stop();},2000);
setTimeout(function(){fc.start();},4000);
*/

Actionscript 3'te TextField width problemi

TextField objesinin autoSize özelliği kullanıldığında width özelliği işlevini yitiriyor ve yanlış piksel sayısı döndürüyor. Gerçek ölçüyü alabilmek için ise TextField.textWidth özelliğini kullanmamız gerekmekte olduğunu tam kafayı kıracakken buldum. Umarım işinize yarar.
top