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...

Superstars® V8 Racing ... almayalım, kalsın...


Yeni bir oyun diyerekten demosunu çektim ve çekmez olaydım diyebilirim. Oyunun sesi benim makinamdan dolayımıdır bilmiyorum ama F-E-L-A-K-E-T idi. Grafikler günümüz standartlarında tamam. Oynanabilirlik ise bir simülasyon-sever için benden uzak tanrıya yakın olsun mantığında. Arcade de değil. Ortada arada derede kalmış. Pek tavsiye etmiyorum.

Bandwidth'im geniş, gene de deneyebilirim derseniz buyrun 393 mb.lık demo:
Superstars® V8 Racing

Resmi Formula 1® oyunu Codemasters'tan


Oyun, ilk etapta, yani 2009 içerisinde Wii ve PSP için çıkacak. PC, Playstation 3 ve XBox 360 için 2010 yılında çıkması planlanıyor.

İlgili habere buradan ulaşabilirsiniz.

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.

DIRT 2 gümbür gümbür geliyor gibi...


Codemasters, Colin McRae:Dirt'in devamı niteliğinde Colin McRae:Dirt 2 ile E3'te görücüye çıktı. Dirt ve Grid'de kullanılan 3D motorunun gelişmiş halini kullanan oyunda fizikler de iyileşmiş gibi görünüyor. Özellikle video'daki aracın takla sahnesine dikkat !

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();

Şimdi de Volvo'dan ücretsiz AdverGame!



Simbin'in evire çevire her yerde kullandığı 3D motorunun nimetlerinden yararlanarak yapılan Volvo: The Game ücretsiz olarak dağıtılmaya başlandı. Ses efektlerinden fiziklere kadar herşey birebir Race'09 ile aynı. Volvo ile birkaç tur atmak isterseniz buyrun direk download linki:

[Download]

Websitesi : http://www.volvocars.com/intl/All-Cars-MY09/conceptcars/Pages/S60concept.aspx

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);
*/

Ferrari'den ücretsiz oyun: Ferrari Virtual Race


Ferrari Virtual Race, Synetic'in 3D Landscape Engine'ini (veya geliştirilmişini) kullanan bir simülasyon denemesi. Simülasyon denemesi diyorum, zira araç sanki çok hafifmiş havası vermekte. Mercedes Benz World Racing'de de aynı motorun bir önceki versiyonu kullanıldığından dolayı karşılaştırma yapacak olursak, oradaki araçların modellerine göre ağırlıkları gerçekten de sürüşe bir hayli etkiliydi. Fakat FVR'de 500-600 kg.lık Formula 1 aracı kullanıyor gibiyiz. Araçlar biraz savrulduğunda da toparlaması belirli bir sürate kadar çok kolay oluyor. Haliyle de çok rahat bir şekilde Ferrari ile drift yapılmasına imkan veriyor. Oyunda 3 araca yer verilmiş. Bol renk opsiyonu sağlanmış. Sadece bir adet pist var. Grafikler ise 76 mb'lik bir kurulum dosyasına göre haylice iyi. Oyundaki araç sesleri , oyun motorunun önceki sürümlerinde de olduğu gibi gerçekçilikten uzak, fakat Ferrari vızıltısına en yakın sesler kullanılmış.

Herşeye rağmen, 76 mb.'lık boyutuyla gayet güzel grafikler ve içerik sunan oyunu denemeye değer kanaatindeyim.

Oyunu indirmek için : Ferrari Virtual Race

Need for Speed Shift (PSP/PS3/X360/PC) 2009 Sonbaharında...

Para kazanma ve oyuncuları bir nebze daha Need for Speed ruhundan uzaklaştırmak isteyen (!) Electronic Arts buram buram Grid kokan screenshot'ları ile temcit pilavını tekrar soframıza koyuyor. Her seferinde bu versiyon bu kez iyi olur diyen oyuncular karşılarında her seferinde de 'bu ne gene beeaa' şeklinde tepkilerini dile getiriyorlardı zaten. Belki de bizim beklentilerimiz çok yüksek. Eğer GRID'i kopyalayacaklarsa hiç yapmasınlar daha iyi. Çünkü GRID'in ikincisi ile aynı anlarda piyasaya sürülür ve gene duman olur EA abimiz. Gelenekleşen üzere gene sobaharda çıkması planlanan oyunu bekleyenler, bu gidişle daha çok 'başka baharlar' bekleyecekler gibi görünüyor.

Oyunun diğer screenshot'ları için tıklayın
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.
"Hello World" standardına uyaraktan ilk girişi yapalım.
top