Ders 8 ( Ekim 2005 )
Konu : Flash 8 ile BitmapData sınıfının ( class ) ve getPixel , setPixel komutlarının basit kullanımı.
Gerekenler : Flash 8
Çalışan örnek görmek için tıklayın !
Çalışan fla 'nın ücreti : 5 YTL 'dir !
- Yeni bir Flash dosyası açalım. İsmi pixel.fla olabilir. Bunu kaydedelim.
- Sahnemizin boyutunu 300 pixel genişlik, 400 pixel yükseklik yapalım.
- 300x400 boyutlarında bir resmi File/Import/Import to Library ile kütüphaneye ekleyelim.
- Library Panel'in sağ üst köşesini tıklayarak yeni bir symbol tanımyalım. Nasıl mı ? , tıkla seyret...
- Şimdi kütüphanede 300,400 boyutlarında bir jpeg veya gif resmi ve boş bir Movie clip symbol (ismi de 'Symbol 1' ) olmalı.
-
Library 'deki 'Symbol 1' 'i çift tıklayalım ve açılan 'Symbol 1' ekranınına Library 'den resmimizi sürükleyip bırakalım. Sonra da ekrandaki resmin sıfır noktasını sol üst köşe olarak ayarlayalım. Nasıl mı ? , tıkla seyret...
- Ana sahnemize döndükten sonra, Library 'deki 'Symbol 1' movie clip 'ini sahnemizin dışına sürükleyelim ve bırakalım. Çalışma anında bunu görmeyeceğimiz için sahnemizin dışına bir yere bırakıyoruz 'Symbol 1' 'in bu kopyasını. Şu anki görünüm için tıklayınız.
- Bu kopyanın ismini : reco yapalım.
- Sahnemizin ilk frame 'ine şu kodları ekleyelim:
pixelBoyut = 10;
//Resmimizi sahnede gösterecek bir movie clip yaratıyoruz.
yerTutucu = _root.createEmptyMovieClip( "yerTutucu", 1 );
yerTutucu._y = 0;
//yeni bir BitmapData oluşturup ( değişken ismi bitmapData ) parametre olarak genişlik,yükseklik ve saydamlık değerlerini veriyoruz.
bitmapData = new flash.display.BitmapData( 300, 400, false );
//bu BitmapData 'ya draw metodu ile reco movie clip 'in görüntüsünü transfer ediyoruz. Oluşturulan BitmapData herhangi bir movie clip 'e attach yapılmadığı sürece sadece hafızada kalmaya devam eder, sahnede görünmez.
bitmapData.draw( reco );
//Sahnede görünecek BitmapData 'yı tanımlıyoruz. Değişken ismi olarak asil dedik.
asil=new flash.display.BitmapData(300,400,false);
//en başta yarattığımız movie clip 'e asil BitMapData 'sını attach ediyoruz.
yerTutucu.attachBitmap(asil,3);
//Sahnemizin onEnterFrame özelliğini tanımlıyoruz.
this.onEnterFrame=function(){
//hafızada olan bitmapData 'yı adım adım tarayıp getPixel komutu ile o pixelin reng bilgilerini pixelRGB değişkenine atıyoruz. pixelBoyut değişkenimiz azaldıkça 2 tarama arasındaki mesafe de azalıyor.
for ( var x=0; x<300/pixelBoyut; x++)
{
for ( var y=0; y<400/pixelBoyut; y++ )
{
var pixelRGB = _root.bitmapData.getPixel( x*pixelBoyut, y*pixelBoyut );
//okunan pixelRGB bilgisini hedef BitmapData 'ya setPixel komutu ile atıyoruz.
for ( var a=0; a<pixelBoyut; a++)
{
for ( var b=0; b<pixelBoyut; b++ )
{
_root.asil.setPixel( x*(pixelBoyut)+a, y*pixelBoyut+b, pixelRGB );
}
}
}
}
//her adımdan sonra pixelBoyut 'u 1 azaltıyoruz.
pixelBoyut--;
// ve sonuda da onEnterFrame fonksiyonunu iptal ediyoruz.
if(pixelBoyut<1)
{
this.onEnterFrame=null;
}
}
-
Bu kadar. Herşeyi doğru yaptıysanız fotoğraf kareli durumdan netliğe doğru gider. Aslında aynı efekti yapmanın daha iyi bir yolu var ama maksat getpixel , setPixel komutlarını görmek idi. Bir daha ki Flash 8 dersinde o yolu gösteririm belki. Kırmızı yazılar bilgi amaçlıdır, kodlara eklemeyin.
|
Kırmızı yazılar sadece bilgi amaçlı, eklemeyin kodlara.
Not: Çalışması için Publish Settings -> Player 8 olmalı (AS 2)
Bu ders hakkında sorularınızı hakan@FlashDersi.com 'a Ders8 konusuyla yollayabilirsiniz.
yukarı git |