Erol Demirer

barata

Graphic Designer | Adobe Publishing Expert

Çoğu zaman uygulamamızda kullandığımız metin alanlaır için Components panelinde bulunan TextArea ya da UIScrollBar bileşenlerini kullanırız. Kullanımları olukça pratik olmasına rağmen bu bileşenler genellikle uygulamamızın tasarımlarına pek uymazlar. Bu uygulamamızda metin alanları için scrollbarımızı oluşturacağız. Böylece metin alanları için hem yerden tasarruf etmiş olacağız hem de scrollbarımız uygulamamızın tasarımına uygun olacak.

Uygulamamızda metnimizi harici bir text dosyasından alacağız. Uygulamamızı kaydedeceğimiz dosyanın içerisine yazilar isimli bir klasör oluşturalım. Buraya kaydedeceğimiz text dosyasının adı da yazi.txt olsun. Dosyayı kaydederken kodlama bölümünde UTF-8 kodlama dilini seçelim. Yoksa Türkçe karakterlerde sorun yaşarız. Flash programına geçerek uygulamada kullanacağımız nesneleri hazırlamaya başlayabiliriz.

Sahneye bir tane dinamik metin alanı oluşturalım ve Instane Name kısmına metin_txt yazalım. Scroll’da kullanmak için 3 nesneye daha ihtiyacımız olacak.İki tanesi metni hangi yöne kaydıracağımızı gösteren yön tuşları bir tanesi de ortada hareket eden küçük bir kare olacak. Nesneleri oluşturduktan sonra Instance Name kısımlarına yön tuşları için yukari_mc ve asagi_mc, diğer nesnemiz içinse scroll_mc olarak adlandıralım.

actionScript 3.0 Metin alanları için scroll yapımı


Nesnelerimizi oluşturduktan sonra kodları yazmak için Actions isimli yeni bir katman oluşturalım ve Actions panelini açarak aşağıdaki kodları yazalım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//bir URLLoader nesnesi tanımlıyoruz.
var metinYukle:URLLoader = new URLLoader();
//dosya yolunu belirmek için bir URLRequest nesnesi tanımlıyoruz.
var adres:URLRequest = new URLRequest("yazilar/yazi.txt");
metinYukle.load(adres);

//metinYukle isimli nesneye olay dinleyici atayarak yükleme işleminin
//bitip bitmediğini kontrol ediyoruz.
metinYukle.addEventListener(Event.COMPLETE, tamamlandi);
function tamamlandi(e:Event) {
    //yükleme bitmiş ise text dosyasınaki veriyi
    //sahnedeki dinamik metin alanına yazdırıyoruz.
    metin_txt.text = metinYukle.data;
}

//film klibine tıklandığında metni yukarı kaydırmak için olay dinleyici ve
//fonksiyonu yazıyoruz.
yukari_mc.addEventListener(MouseEvent.CLICK, scrollYukari);
function scrollYukari(e:MouseEvent) {
    //scrollV metodu ile metin alanını aşağı yukarı kaydırabiliriz.
    metin_txt.scrollV--;
}

//film klibine tıklandığında metni aşağı kaydırmak için olay dinleyici ve
//fonksiyonu yazıyoruz.
asagi_mc.addEventListener(MouseEvent.CLICK, scrollAsagi);
function scrollAsagi(e:MouseEvent) {
    metin_txt.scrollV++;
}

//scroll_mc'yi sürüklerken kullanılacak alanı belirliyoruz.
//buradaki 200 değeri oluşturduğunuz metin kutusunun yüksekliğine göre değişebilir.
//örneğin uygulamanızda metin alanının yüksekliği 50 piksel ise
//200 yerine 50 piksel yazmalısınız.
var scrollAlan:Rectangle=new Rectangle(scroll_mc.x,scroll_mc.y,0,200);

//scroll_mc'nin sürüklenmesi için olay dinleyiciyi ve fonksiyonu yazıyoruz.
scroll_mc.addEventListener(MouseEvent.MOUSE_DOWN,scrollSurukle);
function scrollSurukle(e:MouseEvent) {
    //startDrag metodundandan sonra parantez içerisine parametleri girerek
    //sürükleme eyleminin belirlediğimiz alanda gerçekleşmesini sağlıyoruz.
    scroll_mc.startDrag(true,scrollAlan);
}

//surukleme eylemini bitirmek için olay dinleyicimizi sahneye atıyoruz.
//Böylece sahne üzerinde fareyi nerede bırakırsak bırakalım sürükleme eylemi bitecektir.
stage.addEventListener(MouseEvent.MOUSE_UP, scrollBirak);
function scrollBirak(e:MouseEvent) {
    scroll_mc.stopDrag();
}

//dinamik metin alanına olay dinleyicimizi atıyoruz.
metin_txt.addEventListener(Event.SCROLL,scrollHareket);
function scrollHareket(e:Event) {
    //scroll_mc'nin y değerini belirliyoruz.
    //bunu işlemi gerçekleştirirken scrrol_mc'nin y değerine
    //metin_txt'nin şu andaki V değerini, maksimum V değerine bölüp,
    //belirlediğimiz hareket alanının yüksekliği ile çarpıyoruz.
    //trace ile scrollV ve maxScrollV değerlerini alırsak buradaki olayı
    //daha iyi anlayabiliriz.
    //buradaki 200 metin alanının yüksekliğine göre değişebilir.
    scroll_mc.y=scrollAlan.y+(metin_txt.scrollV/metin_txt.maxScrollV*200);
}

//scroll_mc hareket ettiğinde metninde hareket etmesini sağlamak için
//olay dinleyimizi sahneye atıyoruz.
stage.addEventListener(Event.ENTER_FRAME,scrollHareket2);
function scrollHareket2(e:Event) {
    metin_txt.scrollV=Math.round((scroll_mc.y-scrollAlan.y)*metin_txt.maxScrollV/200);
}

VN:F [1.8.1_1037]
Rating: 10.0/10 (3 votes cast)
ActionScript 3.0 İle Metin Alanlarına Scroll Eklemek10.0103

Popularity: 100% [?]

Yorumlar

Bu yazı için 4 yorum yapılmış.

  1. erdem on Ocak 19, 2010 12:21 am

    hocam elinize sağlık bende boyle bire ders ariyordum. ama bi sorun var yapamadim. acaba text dosyasinin içine sadece yazi mi koycaz yoksa yazi = gibi bişiden sonra mi yazimiz olacak. neden calismadi cozemedim.

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
  2. Erol Demirer on Ocak 19, 2010 7:26 pm

    Uygulamayı çalıştırdığında verdiği hata nedir? Söylersen daha net yardımcı olabilirim.

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
  3. erdem on Ocak 19, 2010 11:41 pm

    Hocam sorun herzamanki gibi öğrencideymiş :D tekrar kontrol edince götdüm. ben hep as2.0 ariyordum scroll. bunuda buldum gazıyla yapınca as2 olarak acmisim calismayi. ondan calismiyormus…kusura bakmayin gereksiz yere meşgul ettim sizide…

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)
  4. Erol Demirer on Ocak 19, 2010 11:58 pm

    @erdem  Olur öyle şeyler :) Sorununun hallolmasına sevindim.

    UN:F [1.8.1_1037]
    Rating: 0.0/5 (0 votes cast)

Yorumunuz

Lütfen neler düşündüğünüzü yazın.