LNKLER:
+ BLOG
+ ACTOFCURSING.COM
+ CODESIGNIST.COM
+ YUNUSES.COM
+ LAB

blog.codesignist.com
CAPOEIRA BRASIL
HABER 040
23-24-25 Mayıs tarihlerinde akşam saatlerinde (18:00 - 21:00 aralarında) Zeytinburnu Spor Kompleksi'nde grubumuz Capoeira Brasil'in Batizadosu* gerçekleşecek. Tüm spor meraklılarını beklerim. =) *Batizado: Capoeira öğrencilerinin cordao(kuşak)'larını aldıkları ortalama senede bir defa gerçekleşen eğitim festivali.
VECTOR PARK
ELENCE 039
Dün gazing gösterdi bana bu siteyi. Experimental tadında harika kısa bulmaca oyunları var. Ben en çok feed the head ve levers oyunlarını sevdim. Başı besledikçe olaylar değişiyor. Ayrıntılar çok iyi olmuş. Levers ise dengeleme oyunu. Bu oyunda da çok güzel detaylar var. Bunların dışında acrobots'a da hayran kaldım. şu değişim geçiren yumurta da çılgın bir şey. =) vectorpark.com
CEBIT BİLİŞİM EURASIA 2007
HABER 038
2-7 Ekim tarihlerinde gerçekleştirilecek CeBIT Bilişim Eurasia fuarına Arıbil Bilişim Akademisi olarak katılıyoruz. Fuar standımız, içinde çeşitli eğitimler verilecek şekilde tasarlandı. Ben de "actionscript ile 3D" konusu üzerine 3 Ekim Carşamba günü saat 14:30 - 15:30 arasında kısa bir ders yapacağım. Tüm flash ve actionscript meraklılarını beklerim.
3D ENGINE 3
DERS 037
Yine bir önceki konudan devam ederek surface mantığına giriş yapalım. Bir önceki konuda iki noktayı birleştirerek çizgi oluşturmuştuk. Şimdi ise üç noktayı birleştirerek triangle oluşturacağız. Bu mantıkla yüzey oluşturmuş olacağız. Her bir yüzey için ayrı MC oluşturacağız. MC'in derinliğini belirlemek için de yüzeyi oluşturan noktaların derinlik (depth) değerlerinin toplamını alacağız ve son olarak yüzey normal tekniğini uygulayacağız. Yüzey normali dediğimiz mantık, yüzeyin tek yönden bakıldığında görünmesini sağlar. Bu da büyük performans avantajı sağlar. Yüzeyin tek yöneden bakıldığında görünmesini şu şekilde sağlarız; Yüzeyi oluşturduğumuz herhangi 2 noktanın oluşturduğu doğrunun denkemi ile 3. noktanın koordinatlarını kıyaslarız. Eğer 3. nokta, diğer 2 noktanın oluşturduğu doğrunun + yönünde ise görünebilirliği aktif, değilse pasif yaparız. Ornek için tıklayınız. Kodlarımız şu şekilde; pm3._x); _root[isim]._visible = hsp; if (hsp) { with (_root[isim]) { clear(); lineStyle(1, 0xFF3300); beginFill(0xFFCC00); moveTo(pm1._x, pm1._y); lineTo(pm2._x, pm2._y); lineTo(pm3._x, pm3._y); endFill(); swapDepths((pm1.getDepth()+pm2.getDepth()+pm3.getDepth())*3); } } } onEnterFrame = function () { fare(); h3d(); //Noktalar mc0.k3d(-100, -100, -100); mc1.k3d(100, -100, -100); mc2.k3d(-100, 100, -100); mc3.k3d(100, 100, -100); mc4.k3d(-100, -100, 100); mc5.k3d(100, -100, 100); mc6.k3d(-100, 100, 100); mc7.k3d(100, 100, 100); //Yüzeyler tri(mc0, mc2, mc3); tri(mc3, mc1, mc0); tri(mc4, mc5, mc7); tri(mc7, mc6, mc4); tri(mc0, mc1, mc5); tri(mc5, mc4, mc0); tri(mc1, mc3, mc7); tri(mc7, mc5, mc1); tri(mc3, mc2, mc6); tri(mc6, mc7, mc3); tri(mc2, mc0, mc4); tri(mc4, mc6, mc2); updateAfterEvent(); };]]> Ornek dosyayı indirmek için tıklayınız. (FLA) Torus knot örneği için tıklayınız. (FLA)
3D ENGINE 2
DERS 036
Bir önceki konudan devam ederek segment meselesine giriş yapalım. Nokta koordinatlarımızı nasıl ayarlayacağımızı gördük. Şimdi tek yapmamız gereken bu noktaları birbirine bağlamak. Ben bunun için ciz adında basit bir function kullandım. Buraya bağlanacak 2 MC'in isimlerini gönderiyorum ve moveTo, lineTo kodlarıyla bağlantıyı sağlıyorum. "engine.as" isimli dosyamız yine aynı şekilde kalsın. (Daha sonra bunu geliştireceğiz.) Doğrudan frame'e şu kodları yazıyoruz; Bu konu hakkında açıklama yapmama pek gerek yok. Zaten çok kolaydı. Bundan sonraki yazıda surface (yüzey) konusunu ele alacağız. Ornek dosyayı indirmek için tıklayınız.
3D ENGINE
DERS 035
Uzun zamandır beklenen bir konuydu bu biliyorum. Ama ne yazık ki 3D engine konusunun mantığını anlatamayacağım. (Bu çok uzun olur, buraya asla sığdıramam.) Bunun yerine hazırladığım 3D engine prototype'in kullanımı ve geliştirilmesinden bahsedeceğim. "engine.as" isimli dosyadaki kodlar şu şekilde. Artık 3D kullanmak istediğimiz yerde bu kodları çağırıp dilediğimiz gibi kullanabiliriz. Mesela; küre şeklinde bir MC yapıp ismini m_mc olarak yazalım. Sonra şu kodları ana sahnedeki ilk frame'e yazalım; Görüldüğü gibi 3d olarak konumlandıracağımız herhangi bir MC'i "MC.k3d(x,y,z);" şeklinde çağırmamız yeterli oluyor. h3d() kısmında ise 3D konumlandırmayı yapmadan önce bir defa çalıştırıyoruz. Böylelikle k3d() function'ına her seferinde binmesi gereken yükü bir defada çözmüş oluyoruz. fare() kısmında ise kamera açılarını isteğimize göre yönlendiriyoruz. Ben mouse koordinatlarına göre yumuşak geçiş yaptım. Şu şekilde yazılarak da mouse'a göre sürekli dönüş elde edilebilir; Veya tam otomatik bir dönüş; Bu sadece MC'lerin yüzey mantığında 3D'ye oturtulmasını sağlar. Yani tam olarak küreler için geçerlidir. Tabi diğer objeler için de kısmen kullanılabilir. Mesela "3D papatya saat" çalışmamda arıları bu mantıkla oluşturdum. Papatya kısmında ise boş MC'ler kullanıp bunları birbirine lineTo, curveTo kodlarıyla bağladım. Yüzeyler için de fill kullandım. Asıl konumuza dönelim. Genel olarak 3D engine basamaklarını şöyle sıralayabiliriz; 1) Vertex //Noktalama (_x, _y ile koordinatlandırma) 2) Segment //Cizgilerle kafes oluşturma (lineTo, curveTo ile çizim) 3) Surface //Yüzey oluşturma (beginFill, beginGradientFill ile dolgu) 4) Material //Kaplama (_rotation, _xscale ile geliştirilen skew mantığıyle resimleri triangle olarak bükme) 5) Light //Işıklandırma (colorMatrix vb. kodlar ile yüzeyin brightness değerini değiştirme) ... Bunun devamı yansıma, kırılma vs. şeklinde gelebilir. Ama biz şu an için flashta ancak 5. kademeye kadar 3D engine oluşturabiliriz. (Bazı tekniklerle bu durum kısmen aşılabilir.) Burada anlattığım konu ise 3D'nin sadece 1. basamağı yani vertex mantığıydı. Bundan sonraki konuları segment, surface.. şeklinde devam ettireceğiz. Ornek dosyayı indirmek için tıklayınız.
SNAP
DERS 034
Daha önce anlattığım özel drag konusu üzerine devam ederek drop esnasında snap(mıknatıs etkisi) yapmayı anlatacağım. Normal drag kodları da kullanılabilir. Bazen taşınan objelerin bırakıldığında istediğimiz merkeze oturmasını isteriz. Bunu yapmanın en kolay yolu; objenin bırakıldığı koordinatlar ve oturmasını istediğimiz koordinatlar arasındaki mesafeyi hesaplamaktır. Bu mesafe vereceğimiz tolerans değerinden az ise taşınan nesneyi istenilen kordinatlara getiririz. Obje ve merkez arasındaki mesafeyi pisagor teoremi ile hesaplarız. Kodlar şu şekilde; Ornek: snap.rar
İZOMETRİK 3D
DERS 033
İzometrik 3D için basit bir teknik: Bir dikdörtgen çizin ve bunu bir mc yapın, sonra tekrar mc yapın. İçteki mc'i bir kaç derece çevirin ve dıştakinin yscale oranını küçültün. Görüldüğü gibi içteki rotate sadece içteki mc'i etkiledi. Dıştaki mc bu durumdan etkilenmedi. Biraz daha detaylı düşünüp baktığımızda dıştaki mc'in yscale oranını düşürdükçe mc'e 3d olarak daha yandan bakıyormuş gibi olacağız. Bu oran %100 durumunda iken tam tepeden bakıyorsak %0 olduğunda tam yandan bakıyoruz demektir. İçteki mc'nin rotate değeri de kameranın 360 derecelik turuna eşit olur. Peki bunun gibi bir çok mc'i üst üste eklesek ve hepsini aynı şekilde kontrol etsek ne olur? Cevabımız çok basit, kısa yoldan izometrik 3D elde etmiş oluruz. Biz bu tekniği biraz daha kullanışlı hale getirmek için sadece bir mc yapıp diğer katmanları bu mc'in frame'lerine dizeriz. Dıştaki mc için "d_mc" içteki için de "i_mc" isimlerini verdikten sonra şu kodları yazarız; 100){//100 değerini geçmemesi için engelledik. yg=100; } bu._yscale=yg;//Scale'i dış mc'e uyguladık. bu.i_mc._rotation=_xmouse;//İçteki mc'in rotate değerini xmouse değerine bağladık. } };]]> Ornek dosyayı indirmek için tıklayınız.
ÖDÜL SİTELERİ*
LNKLER 032
Yeni bir bölüm ile karşınızdayım. Linkler bölümünde arşiv yaptığım bazı adreslerin listesini sunacağım. Mesela bugün ödül sitelerinin adreslerini yazdım. ---08.02.07 - designlicks.com - Design Licks - bestwebgallery.com - Best Web Gallery - bwdow.com - Best Web Design Of the World ---03.02.07 - flashforwardconference.com - Flashforward - fcukstar.com - Fcuk Star Awards - standoutawards.com - Stad.Out Awards - ultrashock.com - Bomb Shock - flashkit.com/sites - Flash Kit - kirupa.com - Kirupa ---26.01.07 - thefwa.com - Favourite Website Awards - dopeawards.com - Dope Awards - style-awards.com - Style Awards - newwebpick.com - New Web Pick - netculture.gr - Net Culture - pagecrush.net - Page Crush - gouw.nu - Graphic Orgasm - bestflashanimationsite.com - Best Flash Animation Site - kingforaweek.com - King for a Week - internettinyawards.com - Internet Tiny Awards - zeroin.gr - Zero in - e-creative.net - E-Creative - mows.sk - Mowsnet Web Awards - screenspire.com - Screen Spire - res72.com - Web Design Resources - moluv.com - Moluv - strangefruits.nl - Strange Fruits - digitalrefueler.com - Digital Refueler - killersitesdesign.com - Killer Site Design Araştırmaya devam ediyorum. Yeni siteleri buldukça buraya yazacağım. Eğer siz de bulursanız, lütfen yazın.
ÖZEL DRAG*
DERS 031
Actionscript'in kendi drag metodunu kullandığımızda taşıdığımız mc'in kordinatları mouse kordinatlarına direkt eşitlenir. Ama biz mouse kordinatlarına göre ease, bounce veya başka bir tween ile hareket etmesini istiyorsak kendimiz özel bir drag function'ı ya da prototype'i yazmalıyız. İşte özel drag prototype'i: Yeni düzenleme [5 Mart 2007] $r){//Eğer x konum sağ sınırdan büyükse this._x=$r;//x konum sağ sınır değerine eşitlenir hx=-Math.abs(hx);//Hız eksi yöne çevrilir } if(this._y<$t){//Eğer y konum üst sınırdan küçükse this._y=$t;//y konum üst sınır değerine eşitlenir hy=Math.abs(hy);//Hız artı yöne çevrilir } if(this._y>$b){//Eğer y konum alt sınırdan büyükse this._y=$b;//y konum alt sınır değerine eşitlenir hy=-Math.abs(hy);//Hız eksi yöne çevrilir } //onEnterFrame'in silinmesi if (Math.round(hx*10) == 0 and Math.round(hy*10) == 0 and !this.$tb) {//Eğer hız x ve y sıfıra eşit ve tıklama yoksa delete this.onEnterFrame;//onEnterFrame'i sil! } }; }; MovieClip.prototype.birak = function() { this.$tb = false;//Tıklama bırakıldı }; //Kullanımı m_mc.onPress = function() {//Mouse sol tuşuna basıldığında this.tasi(false,0,0,550,400);//Taşıma prototype'i çağırılıyor //this.tasi(true);//Bu şekilde kullanılırsa lockcenter(merkeze kilitlenme) aktif olur. }; m_mc.onRelease = m_mc.onReleaseOutside=function () {//Obje üzerinde ya da obje dışında mouse sol tuşu bırakıldığında this.birak();//Bırakma prototype'i çağırılıyor };]]> Ben burada tutup fırlatma ve köşelere çarpma hesaplamaları yaptım. Ornek olarak şöyle bir iş yapmıştım: esse.com.tr/indirimgazetesi Ust kısımda "gönder", "not al" gibi butonlara tıkladığınızda açılan pencereleri tutup taşıyın, fırlatın, köşelere çarptırın. Yukarıdaki tween'i bounce olarak ayarladım. Siz istediğiniz tween'i kullanabilirsiniz. Hatta hazır tween engine'lerinden birini mesela Fuse'u kullanabilirsiniz. Ornek: drag.rar
WINTER BELLS
ELENCE 030
Bazen Orisinal daki oyunları incelerim. Kodlamaları, oyun mantıkları ve görselleriyle gerçekten başarılı bir sitedir. Şimdi de winter bells adında yeni bir oyun yapmışlar. Oyun mantığı çok iyi olmuş. Farklı ve eğlenceli bir oyun olmuş. Sizin de beğeneceğinizi düşünüyorum. Ben bir kaç deneme sonunda 1043900 puan almayı başardım. Bu yüzden oyun hakkında bazı taktikler vereceğim. Farkettiğiniz gibi ilk ziller pek puan vermiyor ama yükseldikçe zil puanı onar onar artıyor. Bu yüzden tüm zilleri toplamaya çalışmayın. Mümkün olduğunca hızlı şekilde yukarıya çıkmaya ve kuşları kaçırmamaya çalışın. Bu şekilde oynarsanız kısa sürede yüksek puan kazanabilirsiniz. İyi eğlenceler... Winter bells
PRELOAD
DERS 029
Büyük boyutlardaki swf dosyalarını web ortamında sunarken bağlantı hızı sebebiyle kullanıcıları bekletmiş oluruz. Bu bekleyişte kullanıcıları bilgilendirmek veya cansıkıntısını önlemek için preload tekniğini kullanırız. Bugün basit bir preload yapımını ve preload yaparken karşılaştığımız bazı sorunların çözümünü anlatacağım. Preload'ı ister frame, isterse byte türünden yapabiliriz. Biz byte tipini basit olarak yapacağız. Yüzdelik değeri dynamic text'e yazarak gösterebiliriz. Yalnız virgülden sonrası görünecektir. Biz bunun olmasını istemediğimiz için yuvarlatma (Math.round) yaptırırız. Bazen virgülden sonraki basamakları da kullanmak isteyebiliriz. Bunun için basit bir yuvarlama tekniği kullanabiliriz. Hatta bu yuvarlama tekniğini function olarak yazıp çok yönlü bir kullanım sağlayabiliriz. Şöyle: Calışma mantığı kısaca şöyle; Yuvarlayacağımız sayıyı(98.3452) ve yuvarlayacağımız basamak sayısını(2) alıyoruz. Basamak sayısını Math.pow ile 10'nun kuvveti olarak hesaplıyoruz.(10^2=100) Yuvarlayacağımız sayıyı önce bu onluk değer ile çarpıyoruz.(98.3452*100=9834.52) Sonra bu sayıyı yuvarlıyoruz (9835) ve onluk değere bölüyoruz. (9835/100=98.35) Sonuç olarak istediğimiz yuvarlatma işlemini yapmış oluyoruz. ;) Bu yuvarlatma function'ını pozitif sayılarda kullanabildiğiniz gibi negatif sayılarda da kullanabilirsiniz. Basamak değerini de negatif yazabilirsiniz. Preload'ı dışardan import ettiğimiz swf,jpg. vb. dosya türlerinde de kullanabiliriz. Bazen resim yüklediğimizde bunun yüklendiği anda gizlenmesini isteyebiliriz. loadMovie'den sonra hemen visible=false yaparsak bu gerçeli olmaz. Cünkü resim yükleme işlemi tam olarak bittiği anda otomatik olarak visible=true olur. Bunun için tam yükleme bittiği anda visible=false yapmalıyız. Mesela; 4){//Eğer yuzde değişkeninin değeri 100'e eşitse //yükleme bittikten sonra çalıştırılması istenilen kodlar delete onEnterFrame;//sürekli çalışan frame function'ını sil! //my_mc._visible=false;//Yüklendiği anda görünmemesini istiyorsak bu kodu kullanmalıyız. } }]]> Dikkat ettiyseniz if kısmında tp>4 şeklinde bir sınama yaptık. Dışarıdan yükleme yaparken yükleme yapacağımız dosyanın geç bulunması durumunda kodun yanlış çalışmasını önlemek için bu kodu kullandık. Düşünün import ettiğimiz dosya bir kaç milisaniyelik gecikme yapacak olursa, mc boş kalır ve bilgisayar, toplam byte ve yüklenen byte'ı birbirine eşitlenmiş olarak kabul eder ve onEnterFrame amacına ulaşmadan silinir. İşte bunu önlemek için tp>4 sınamasını kullanırız. 4 dememizin sebebi ise boş bir mc'nin kapladığı alanın 4 byte olmasıdır. Yani tp>4 demek, bir nevi mc boş değilse demektir. Eğer mc içerisine shape çizdiyseniz, mc boyutu 12 byte olacaktır. (Ne çizerseniz çizin bu yük _root'a kalır mc yükü sayılmaz!) Bu durumda tp>12 sınamasını kullanmalısınız. Sorunlar ve Cözümleri - Eğer publish settingsde compress movie seçeneğini işaretlediyseniz movie boyutunuz düşer ama preload hesaplamalarında bazı bozukluklara (Sıkıştırılan bazı kısımları hızlıca geçmek vb.) sebep olabilir. Yine de compress yapmak daha iyidir. - Linkage yapılırken "Export in first frame" seçeneği seçili ise önce export edilen dosyalar download edilir preload daha sonra çıkar. Bu da preload'ın %0 dan değilde %18 gibi geç noktalardan başlamasına sebep olur. Eğer bu seçeneği kullanmamız şart ise hesaplamalarımızdan bu boyutun değerini çıkarıp preload'ı sadece görüntü olarak %0 dan başlatabiliriz. - Linkage kullanılmadığı halde preload geç noktalardan başlıyor olabilir. Bunu engellemek için preload'ı ayrı bir scene içine koyup, bu scene'i en üste taşırız. Preload frame'ini ilk frame olarak yaparız. Yine de gecikme oluyorsa en köklü çözüm yolu şudur; Yükleme için ayrıca bir swf yapılır ve ana swf bu swf içerisine yükletilir. (Ana swf'deki target'ların bozulmaması için _lockroot=true; kodunu kullanırız.) Ornek dosyayı indirmek için tıklayınız.
SOUND
DERS 028
Bugün uygulayacağımz ders çok basit. Yani herkes yapabilir. :) Basit bir şekilde bir mp3 dosyasını flash içerisine kodlarla alıp çalıştıracağız. Sonra play, pause, stop ve mute butonları ekleyeceğiz. Ornek dosyayı indirmek için tıklayınız. *swf dosyasının bulunduğu yere "muzik.mp3" isminde bir mp3 dosyası koymayı unutmayın!
PALM TREO
WEB 027
Bugün göstereceğim site diğerlerinden biraz farklı. Video üzerine çok başarılı bir siteyi tanıtacağım. :) Siteye girdiğinizde gezmek için bir menünün olmadığını göreceksiniz. Sadece ileri geri butonlarıyla platformu değiştirebileceksiniz. Geçişler ve tekrar eden video o kadar iyi olmuş ki hiç tıkanma olmuyor. Sadece izleyin; ontreo.com Video üzerine bir site daha; julianred.com
WM TEAM
WEB 026
Belki bu sitenin eski versiyonunu görmüşsünüzdür. Yenisi de en az eskisi kadar etkileyici olmuş. Sitede gezmek çok eğlenceli. İnce detaylarsa mükemmel. Mesela her bölümü gezdiğinizde o bölümden bir parça en altta kalıyor. Bir nevi o bölümü ziyaret ettiğinize dair bir işaret. Ama benim en çok sevdiğim kısmı; yukarıda resmini gösterdiğim "awards & press" bölümündeki çılgın geyik. Geyiğin hemen altındaki adamın elindeki kupaya tıkladığınızda geyik kupaya tükürüyor. (İğrenç) Sonra adam da onu bi güzel siliyor. :) Siteyi mutlaka gezin, çok seveceksiniz. wmteam.com
PEMBE GEZEGEN
HABER 025
Ablam sonunda projesini gerçekleştirdi ve pembegezegen.com'u açtı. Hayırlı olsun. :)
MATHIEU BADIMON
WEB 024
Usta bir actionscript programcısı daha. Lab bölümünü tamamen 3D yapması müthiş olmuş. lab.mathieu-badimon.com
CODESIGNIST BLOG
KSEL 023
Yeni adresi blog.codesignist.com şekilde değiştirme kararı aldım. Planım; iş ile ilgili tüm konuları codesignist.com adresine taşımak ve yunuses.com adresini kişiselleştirmek. Bu arada, blog için bir kaç ufak yenilik yaptım. Tabi bununla beraber bir kaç bug da oluştu ama eskisine oranla biraz daha kullanışlı oldu. İlerisi için, proje ağırlıklı işler yapmayı planlıyorum. Bu da blog ile daha çok ilgileneceğim anlamına geliyor. :) Sağlıcakla kalın...
FLASH 3D
WEB 022
İşte flash'ın gücünün bir ispatı daha. Programlanan flash 3D engine'ler arasından en iyisi diyebileceğim bir çalışma. Bundan daha önce izometrik 3d'de kaplama olayını görmüşsünüzdür. Ama bu arkadaş perspektif 3d ye kaplama giydirerek flash'ı bir adım daha öteye götürmüş.3d rhino - noventaynueve.com Bu denemeyi geçen sene yapmıştım. 3d kutu Fakat üzerine gitmedim ve çalışma bu şekilde kaldı. Ama Carlos gerçekten 3D engine konusunu çok ileri götürmüş. Sitesine girip tebrik yazdım. :) Bir güzel 3d engine de burada: 3d skull - polyaktiv.de Actionscript'in en iyi programcılarından Andre Michelle'in de 3D engine çalışmaları çok etkileyici. Ozellikle flash 8 ile birlikte gelen displacement map filter özelliğini kullanarak yazdığı 3D engine çalışmasında nefesim kesildi. Bu çalışmalardan görüldüğü gibi flash'ın geleceği çok parlak. Başka bir programın flash'ın yerini alması çok zor. Bol flash'lı günler... :)
V2.5
KSEL 021
Bundan 2 hafta önce V2.5 in gelişinden bahsetmiştim. Normalde 2 hafta önce tamamlayabilirdim ama araya tatil programları girdi. İlk haftalık programı tamamladıktan sonra pazartesi günü bitirebilirim diye düşünmüştüm ama yine yetişmedi. Geçen haftaki planıda tamamladıktan sonra gelir gelmez V2.5 in yarım kalan kısımlarını tamamladım ve dün siteye upload ettim. Birçok kişi soruyor neden V3 değilde V2.5? Sebebi şu; Bu yeni bir web sayfası değil, sadece yeni bir giriş sayfası. Yani V2 ve V3 arasında bir köprü. Zaten V2.5 i yaptığım son 5 çalışmayı sunmak için hazırladım. Şimdiki planım blog'u yenilemek. Yeni bir tasarım yeni bir kullanım şekli ve yeni makaleler... Tüm bunlardan sonra vaktim olursa V3 üzerine çalışmayı planlıyorum. Tahminen kış sonunda yapmaya başlarsam yazın başlangıcında bitmiş olur.
THOMAS EDISON
WEB 020
thefwa da gördüğüm harkika site. Tasarımı sade yapıp kodlamalara ağırlık vermişler. İçerik çok fazla olmasına rağmen karmaşa yapmadan sunmayı başarmışlar. Thomas Edison
BEATBOX MIXER
WEB 019
Bir kaç gün önce thefwa da görmüþtüm. Sadece insan sesleriyle kendi mix'inizi yapýyorsunuz. Birbirinden baþarýlý 5 artist var. Birtanesi lead olmak üzere toplam 3 artist seçip mix'i oluþturmaya baþlýyorsunuz. Ancak þöyle bir sorun var;
Artistler tek baþlarýna söylediklerinde kulaða daha hoþ geliyorken, mix yapýnca bir uyumsuzluk söz konusu oluyor... Verizon Beatbox Mixer
HOPE GARDEN
WEB 018
Hope garden (Umit bahçesi) isimli bu çalışmayı thefwa da gördüm. Bahçede basit 3d engine kullanılmış ve oldukça hoş bir görünüm elde edilmiş. Bunun yanında fikirleri de çok güzel. Herkes bahçeye bir çiçek dikiyor ve ismini yazıp, ne ümit ettiğini, kimin için ümit ettiğini yazıyor. Diğer kullanıcılarda onun mesajını okuyor ve ona göre o çiçeği güzel mesajlarla suluyor. :)
YUSUF EŞ
HABER 017
3d modeler, ikiz kardeşim Yusuf web sayfasını açtı. Ne diyelim, hayırlı olsun. :) Ben, en çok otobüs modelini sevdim. Bir de diğer çalışmalarını bitirsede onları da web sayfasında görsek. Calışmalarında başarılar diliyoruz... yusufes.com
NUMBER
DERS 016
Numara girilmesini istediğimiz bir input box yaptık. En fazla 3 karakter ve sadece rakamların geçerli olmasını istediğimiz için; kodunu yazdık. Şimdi en önemli noktaya geldik. Biz kullanıcımızdan doğal sayılardan herhangi birisini girmesini istiyoruz. Fakat kullanıcı "005" şeklinde beklemediğimiz bir numara girdi. Bu durumda; kodu ile string olan "005" yazısını, number olarak 5'e çevirdik. İşte bombanın patladığı yer burası. Cünkü Number tam olarak istediklerimizi karşılayamıyor. Mesela gelen değer "021" şeklinde olunca Number bunu 8 tabanında hesaplayıp 17 değerini bize verir. Taban hesaplamalarındaki en önemli kural; Tabanı hesaplanacak sayının basamaklarındaki sayı değerlerinin her birinin taban sayısından küçük olması gerekir. Bu durumda, "092" yazdığımızda Number bunu 10 tabanında çevirip bize 92 değerini verecektir. Cünkü 9, 8'den büyüktür. Bu sayı 8 tabanında hesaplanamaz, tanımsızdır. "21" yazdığımızda yani sayının başına herhangi bir sıfır gelmediğinde Number bunu her zaman 10 tabanında çevirir. Biz her zaman sayımızın 10 tabanında hesaplanmasını istediğimiz için iyi bir çözüm bulmalıyız. 1.yol: Sayının başındaki sıfırlardan kurtuluruz; Bu uzun bir yol. Daha kısa bir yol ise şöyle; 2.yol: Yazılan değeri her zaman 10 tabanında çevirmek. denemek Ornek dosyayı indirmek için tıklayınız.
HAPPY TREE FRIENDS
ELENCE 015
Cizgifilmlerde karakterler yüksek tepelerden, binalardan yere düşerler biraz yamulurlar sonra hiç bişey olmamış gibi eski hallerine geri dönerler. Sonra da çocuklar bu çizgifilmi izleyip, kendileride o binadan düşünce birşey olmayacak zannederler. Ben pikaçuyum diyip balkondan atlayan çocukları sizde biliyorsunuz. İşte HTF bu gerçekleri birebir çizgifilmlerine yansıtmış. :D Cizgifilm olduğuna bakmayın, aslında çocuklar için yapıldığını zannetmiyorum. :D O kadar kanlı ki bazen bakamıyorsunuz. :D Ama ne kadar kanlı olsada, öyle manyak senaryoları var ki izlediğinizde gülmeden edemiyorsunuz. :D Bazen merak ediyorum bu çizgifilmleri yapan adamlar normal insan mı diye... :D 2 sene önce bu çizgifilm serisinin müptelası oldum. Bütün çizgifilmlerini izliyordum ve sitesini takip ediyordum. Ama şu son 3 aydır web sayfasına hiç bakmamıştım. Bugün bir baktım ki yeni çizgi film yapmışlar. Cocuk gibi sevindim. :D Buddhist Monkey in "Enter the Garden" isimli yeni çizgifilmde yeni bir karakter yapmışlar ve mükemmel olmuş. :) Eski bölümleride izlemelisiniz; Happy Tree Friends - Episodes
CHRIS ERICKSON
WEB 014
İlk önce fcukstar da görmüştüm ve buraya yazmayı düşünmüştüm ama site çok sade olduğu için vazgeçtim. Daha sonra dope awards , best flash animation site , fwa gibi başarılı sitelerin yayınlandığı sitelerde görünce hata yaptığımı anladım. Site gerçekten çok sadeydi ama bu sadelik siteyi basit ve sıradanlıktan ziyade kullanım kolaylığına ve rahat anlaşılabilirliğe yönlendiriyordu. Bu yüzden site çok başarılı. Tüm bunların yanında site ismide çok güzel; kindnessandhumility.com
GOLDEN DRAGON
KSEL 013
2 gün önce akşam öylesine karalama yaparken bir ejder çizdim. Gölgelendirmeler vs. ekledikten sonra güzel olduğunu görünce, kuru boya ile renklendirdim. Bu halini aldı. (Görüldüğü gibi kareli deftere çizmişim :D ) Daha sonra bilgisayara aktarıp devam etmeye karar verdim. Tabi scanner çalışmayınca, mecburen telefonla foto çekip bilgisayara aktardım. Flash'da üzerinden vektörel olarak çizim yaptım. Sonra photoshop ta gölgelendirmeler ekledim ve bu halini aldı.
BÜYÜK KÜÇÜK HARF
DERS 012
Yazdığımız yazıları türkçe olarak büyütüp küçültmek istiyorsak bunun için özel kod yazmalıyız. Şöyle basit bir deneme yapalım; Sonuç: "TURKCE OZEL HARFLER: ÐUŞIOCI ÐUŞİOCI" şeklinde olacaktır. Görüldüğü gibi i harfinin haricindeki bütün harfler düzün şekilde büyütüldü. "i" harfinin sorunlu olmasının sebebi ise ingilizcede "i" harfinin büyük halinin "I" şeklinde olmasıdır. Bu yüzden biz de türkçe için özel bir büyütme kodu yazmalıyız; indexOf kodu ile i harfinin konumunu bulduk sonra buradaki i harfinin yerine büyük İ harfini yazdık. while döngüsü ile bu durumu stringde i harfi kalmayıncaya kadar devam ettirdik. Böylelikle;"Türkçe özel harfler: ğüşİöçı ÐUŞİOCI"; sonucunu elde etmiş olduk. Yani yazımızdaki sadece küçük i harflerini büyüttük. Son olarak return kısmında tüm stringe toUpperCase() kodunu uygulayınca türkçe büyütme olayını tamamlamış oluyoruz. Harfleri küçültmede aynı mantıkta; Büyük harf AS dosyasını indirmek için tıklayınız. Küçük harf AS dosyasını indirmek için tıklayınız. Ornek dosyayı indirmek için tıklayınız.
DEF2SHOOT
WEB 011
İlk önce Fwa da daha sonra ise DOPE Awards da gördüğüm sıradışı bir web sayfası. Kullanım tarzı ve tasarımı çok ilginç. Kullanım konusunda; mesela butonları tutup sürükleyip kendi zevkinize göre dizebilirsiniz. Diğer web sayfalarından farklı olarak menü için sayfanın yarısından fazlasını, çalışmaları göstermek için ise geri kalan kısmını kullanmışlar. Söylediğim gibi değişik ve başarılı bir web sayfası olmuş...
ÇEMBER
DERS 010
Cember çizmek için, curveTo çizim API olayını kullanarak geliştirdiğim prototype; Kullanımı şu şekilde; Bu kodda çizgi kalitesi default değeri 16 dır. Ama istediğiniz sayıyı yazıp istediğiniz kalitede yapabilirsiniz. AS dosyasını indirmek için tıklayınız. Ornek dosyayı indirmek için tıklayınız.
DİZİLİM
DERS 009
DUZENLİ DİZİLİM Hazırladığımız bir mc'i kopyalayıp dizdirmek için for veya while döngülerini kullanırız. Mesela bir m_mc isimli mc'i 10 kopyasını alıp, 50px aralıklarla yanyana dizmek için; kodunu kullanırız. 4X3 şeklinde kartezyen bir dizilim yapmak için biraz modüler aritmetik bilmemiz yeterli. Actionscript'te mod hesaplarını % işaretini kullanarak yapıyoruz. Bu halde 4X3 şeklinde bir dizilim yapmak için şöyle bir kod yazmalıyız; xp değeri her zaman i serisinin 4'e bölümünden kalan değeri vereceği için, 0,1,2,3,0,1,2,3... şeklinde olacaktır. yp değeride her zaman i serisinin 4'e bölümü ile elde edilen sonucun tam sayı kısmını (Mesela 6/4=1,5 olduğu için tam sayı kısmındaki 1 değeri) vereceği için 0,0,0,0,1,1,1,1.... şeklinde olacaktır. Bu değerleride verdiğimiz aralık değerleriyle çarpınca istediğimiz dizilimi yapmış olduk. Biraz daha dinamik bir dizlim yapmak için şöyle bir kod yazmalıyız;

DAİRESEL DİZİLİM Dairesel dizilim düzenli dizilimden daha kolaydır. Dairesel dizilim yapmak için biraz trigonometri bilmemiz yeterli; 360 derece 2pi dir. Bu yüzden 2pi yi dizeceğimiz toplam mc sayısına bölüp her mc arasındaki açıyı bulduk. px için bulduğumuz açının cos değerini alıp yarı çapla çarptık. py için ise açının sin değerini yarı çapla çarptık. Düzenli dizilim örnek dosya indir. Dairesel dizilim örnek dosya indir.
PİSAGOR TEOREMİ
DERS 008
 Bildiğiniz gibi pisagor teoremi Şekil1 deki gibidir. Bu formülü sıklıkla kullanırız. Yalnız bu formül nerden gelmiştir? Pisagor bunu nasıl bulmuştur? Ben merak edipde bir gün sormuştum. Hatta birisi bu teorinin arada öyle denk geldiğini bile söylemişti. :) Düşünsenize pisagor geometri çalışırken arada tam bu formül denk geliyormuş, diyormuş ki; -Aaaa lan, hipotenüsün karesi diğer iki dik kenarın kareleri toplamına eşitmişşşş. :) Tam Yiğit Ozgürün anlattığı durum :) Böyle bir durumun olma olasılığ nedir? :) Tabiki pisagor bu formülü bu şekilde bulmamıştır. Şekil 2 pisagor teoremini anlatıyor. Pisagor'un formülü bu şekilde bulup bulmadığını bilmiyorum. Ama şunu biliyorum ki; bu tablo, bu teoremi açıklamaya yeterli.
MTV CODEHUNTERS
3D 007
CGSOCIETY de gördüğüm 3d animation. İzlerseniz ne kadar çok emek harcandığını rahatlıkla farkedebilirsiniz. Video'nun her bir karesi sanat eseri. Görseller, sesler beni derinden etkiledi. Sizi de etkileyeceğine eminim. Codehunters
Link için teşekkürler abi. ;)
ENIGMIND
WEB 006
Fwa da gördüğüm ve hayran olduğum web sayfası. Kodlamalar ve görseller çok başarılı. Sıradışı butonlar, motion'lar kullanılmış. Ayın sitesi olmaya aday. Takdir edilesi. :)
MULTI TOUCH
HABER 005
Hayran olduğum teknoloji. Dokunmatik ekran bilgisayarları görmüşsünüzdür. İşte onu geliştirerek aynı anda birden fazla dokunuşu algılayabilen bilgisayar yapmışlar. Bu bilgisayarları görünce "acaba bizim kullandıklarımız hesap makinesi mi" diyorum.:) İzleyin bana hak vereceksiniz. Düşünsenize bu bilgisayarlarda strategy oyunları ne güzel oyanır. :) İşte bakın, elemanın birisi warcraft oynuyor.
RPA
WEB 004
Fwa da gördüğüm ilgi çekici bir site. Basit 3d engine kullanılmış ama çalışma performansı ve görsellik yüksek seviyede tutulmuş. Birkaç küçük sorunun (bazı resimlerin üst üste gelmesi, pencere size değişikliğine çabuk senkronize olamaması...) haricinde site çok başarılı.
PROTOTYPE
DERS 003
Prototypei uzun kod yazdığımızda kolaylık sağlaması için kullanırız. Genelde objelere yeni özellik eklemede kullanırız. Ama bunun yanında, objelerin var olan özelliklerini değiştirerek stage deki bütün objelere etkili olmasınıda sağlayabiliriz. Mesela MovieClip ve Buttonların üzerine gelince handCursor çıkmasını istemiyoruz. Her bir mc ve btn için tek tek üzerine kod yazıp engellemek uzun bir yol bunun yerine şu kısa yolu; kullanarak handCursor olayını engellemiş oluyoruz. Aynı şekilde, XML'i sık kullanıyoruz ve her seferinde ignoreWhite=true yapıyoruz. Bunun yerine; yapabiliriz. Prototypei bütün objelerde kullanabiliriz. Mesela TextFieldlerin tamamını autosize olarak ayarlamak istiyoruz. Kodunu yazmamız yeterli olur. Konunun başında, objelere yeni özellik eklemde kullanırız demiştim. İşte prototypein en mükemmel özelliği objelere yeni özellik eklemedir. Hazır prototype kodları bulabileceğiniz bir kaç site; proto.layer51.com - Eski ama mükemmel bir site. Müthiş prototype arşivi var.
actionscript.org - Cok sağlam prototype'ler var.
sephiroth.it - Geniş bir arşivi yok ama prototype'ler görmeye değer.
FLASH PLAYER 9
HABER 002
Adobe Flash Player 9 çıktı. Yalnız ilginçtir ki franto'nun blog sitesindeki AS 3.0 denemeleri flash player 8.5 sürümünde düzgün çalışırken flash player 9 sürümünde sorun yapıyor.
YUNUSES BLOG
KSEL 001
Uzun zamandır planladığım blog sitemi tamamladım. Tabi tam olarak bitti diyemeyiz, çalışmalarım devam ediyor. Daha çok projem var, daha çook çalışmam lazım. :)