BitmapData Nesnesini Kullanarak Piksel Renklerini Elde Etmek


Flash8 ile gelen yeni bir nesne olan Bitmapdata nesnesi ile fare imleçinin üzerinde olduğu piksel renk kodlarını elde ederek bir klibin rengini değiştiren bir örnek hazırlıyoruz. Alttaki resmin üzerinde fareyi dolaştırdığınızda o an üzerinde olduğu piksel rengi yandaki klibin üzerinde gözlenmektedir.

DOSYAYI İNDİR   

Uygulama:

1- 400*300 piksellik bir resim dosyası hazırlayalım. Aslında boyut önemli değil.Üstteki çalışmaya dikkat ederseniz rengi değişen klip ile resim klibi yanyana duruyor. Bu görselliği sağlamak için bu boyut ve altta anlatılacak klip yerleşim koordinatları yazılmıştır.siz daha farklı uygulamalar yapabilirsiniz.

2- Flash programını açalım. Ana menüden File-->Import-->ımport to stage seçeneğini tıklayalım. Az evvel hazırladığımız resim dosyasını kütüphane içine alalım. Sahne halen boş durmaktadır. Biz resmi doğrudan sahnede değil attach ederek kütüphaneden kullanacağız.

3- Kütüphaneyi açın ve buradaki resim dosyası üzerine sağ klik yapın. Linkage seçeneğini tıklayın. Açılan paneldeki Export for Actionscript kutusunu işaretleyelim. identifier alanına resmimiz yazalım. Bu ID ismini daha sonra çağırmak amacı ile kullanacağız.

4- Şimdi hala boş olana anasahneye dönelim. Buraya 50*300 piksellik bir dikdörtgen çizelim. Bu dikdörtgeni seçerek F8 tuşuna basalım ve açılan panelden film klibi seçeneğini işaretleyelim. Rengi değiştirmek amacı için kullanacağımız bu klibe resim_mc instance name`ini atayalım. Oluşturduğumuz bu klibi tek tıklama ile seçip properties paneline bakalım. Klibin x değerini 400 y değerini 0 yapalım. giriştede belirttiğim gibi burada yazılan rakamlar yukarıdaki örnekteki düzenli görselliği sağlamak içindir.farklı değerler kullanabilirsiniz.

5- yeni bir layer ekleyip buradaki 1.kareye şu kodları atayalım:

//BitmapData sınıfı resimlerin playerın çalışma anında gözlenmesini sağlar
import flash.display.BitmapData;

//Gerekli olan resmi alacak bir değişken oluşturulur
var imaj:BitmapData = BitmapData.loadBitmap("resmimiz");

//İmaj tutucu bir film klibi oluşturulur
this.createEmptyMovieClip("hedef_mc",1);

//Bu klibe imaj tutturulur
hedef_mc.attachBitmap(imaj,1);

//resim_mc klibi için bir color nesnesi oluşturulur
var piksel_rengi:Color = new Color(resim_mc);

//Fare hareketleri takip edilir
this.onMouseMove = function(){

/*fare ile resim üzerine gelip gelinmediği hitTest
ile denetlenir ve buradaki piksellerin mevcut renkleri alınır
ve resmin yanındaki klibin renkleri(resim_mc) değiştirilir*/


if(hedef_mc.hitTest(_xmouse,_ymouse)){
piksel_rengi.setRGB(imaj.getPixel(_xmouse,_ymouse));
}
}