Action Script 3 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Action Script 3 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Derslerdeki Kodları Göremeyenler Hakkında

Etiketler: , , 0 yorum

Bazı arkadaşlar derslerde bulunan kodları göremiyorlarmış. Sorun DNS adreslerinizden kaynaklanmaktadır. 

DNS Adreslerinizi 

8.8.8.8
8.8.4.4

veya 

4.2.2.1
4.2.2.2

yaparsanız sorun düzelecektir. Eğer nasıl DNS değiştirileceğini bilmiyorsanız aşağıdaki adreslerden bakabilirsiniz. 

AS3 Font Embedding

Etiketler: , 1 yorum

Öncelikle bu dersi anlatırken Flash Develop üzerinden gideceğim. Flash Develop için diğer derslere buradan ulaşabilirsiniz.


Action Script 3 ile yalnızca kod tabanlı çalışırken yazı eklediğinizde otomatik font neyse onu alır.
Fakat göze hoş görünmeyebilir veya siz başka fontlar da ekleyip, bu fontları kullanmak isteyebilirsiniz.

Başka fontları kullanmak için öncelikle o fontun elinizde bir dosyası bulunması gerekir. Örneğin ; ComicSansMS.ttf , bu ttf dosyası Comic Sans fontunun kaynak dosyasıdır.

Öncelikle kullanmak istediğiniz fontun dosyasını bulduktan sonra bu fontu oluşturmuş olduğunuz projenin lib klasörüne kopyalayın. Bildiğiniz gibi lib klasöründe proje için kullanacağımız kaynaklar (resimler, fontlar, swfler vs.) bulunur.

Fontu buraya koyduktan sonra fontun dosya ismini aklınızda tutun çünkü bu fontu sahneye Embed ederken bunu kullanacağız.

Font dosyasıyla işimiz bitti artık. Main.as (Ana Class) dosyamıza gelerek kodlarımızı yazalım ve fontumuzu kullanmak için içeri çekelim. İçeri Embed etmeden önce 2 tane TextField ve iki tane de TextFormat oluşturalım. Fontu TextFormat' a, TextFormat'ı da TextField için kullanacağız.

(Bu arada benim Embed edeceğim font ChickenButt isimli bir font (yazı tipi) ve bu fontu yazının en altındaki kaynak dosyadan elde edebilirsiniz. ).


Main.as için kodlar :



Kodların kısa açıklamaları üstlerinde yer almakta, o yüzden tekrar açıklamaya gerek duymadım.

Sonuç olarak test ettğimizde böyle bir şey çıkacak  :



AS3 ile Classlar Arası İletişim Kurmak ve Veri Aktarımı

Etiketler: , 0 yorum


Öncelikle AS3 kullanıcıları eğer OOP programlama ile uğraşıyorlarsa, buna mutlaka bir kere bile olsa ihtiyaç duyacaklardır. Başka bir Class içerisindekileri diğer bir Class' a aktarmak, aslında basit bir şey. Öncelikle OOP kurallarından iki şeye değinmek istiyorum.

Birincisi bütün değişken ve classların public,private değerleri vardır. Yani class içerisindekilerin diğer classlara (Türkçe olarak Sınıf) açık olup olmadığıdır. Public değerindekiler, diğer classlar tarafından kullanılabilir fakat private yalnızca kendi içerisinde barındırır.

İkincisi, import. Yani karşı tarafın içeri çağrılması gibi bir şey. Bu özellik kullanılmayan türler de olacağından, mesela bir .as dosyası içerisinde Sprite lar kullanılmaktadır ve MovieClipler kullanılmamaktadır; bu durumda yalnızca Spriteları import etmek daha akıllıcadır. İsraf yapmayın kısacası. Gerçi konumuzun bununla alakası yok ama importların şu özelliğinden yararlanacağız, başka bir  ( Public ) Class' ı diğer bir Class içerisine çağıracağız. Bu durumda onun tüm özelliklerine erişebileceğiz.

Kodlamaya başlamadan önce Flash Develop programını kullanacağımı belirtmek isterim. Ayrıca dersteki kodları görebilmeniz için DNS Adresini Değiştmelisiniz. 

Gerekli uyarı ve belirtmeleri yaptığıma göre artık başlayabiliriz. Öncelikle Main Class (Ana Class) ımızı oluşturduktan sonra yeni bir Class daha oluşturuyoruz, onun ismi de Degiskenler olsun. Buradan değişkenler oluşturup daha sonra Main Class' dan bu değişkenleri çekerek trace(); ile yazdıracağız.

Kodların hepsini verip genel anlatımı buradan yapacağım.

Main.as için Kodlar :





Degiskenler.as için Kodlar :





Publicler

Kodlarımızı açıklamaya geldi sıra. Öncelikle açmış olduğumuz Degiskenler isimli class' ın kodlarında, class tanımlarken kullandığımız "public class Degiskenler..." bu kodda en baştaki kelimemiz, diğer Class lardan ulaşabilmemiz için public olmalıdır.

Ayrıca bu Classta oluşturduğumuz ve daha sonra Main Class' a çekeceğimiz değişkenler de (veya bunlar sabitler de olabilirdi -public const.. şeklinde-) public değeri almalıdır. Aksi takdirde sadece class içerisi erişim olabilir, yani sadece kendi classında kullanılabilir.


Tanımlamalar

Degisken isimli Classımızda, constructor fonksiyon içerisinde değişkenlerimizi tekrar tanımlayıp, değerlerini verdikten sonra sıra geldi, bunlara Main (ana) Class' tan ulaşmaya.


Aktarıma Geçiş

Main Classımızda öncelikle public değer almış olan Degiskenler isimli Classımızı import ediyoruz. (5.satırda görüldüğü üzere.) Daha sonra yine ana Classımız içerisinde bir değişken oluşturuyoruz, bu değişken aslında Degiskenler isimli classımızın buradaki bir yansıması olacak. public var degiskenler dedikten sonra :Degiskenler diyerek bu değişkenimizin veri tipini Degiskenler classı olarak belirledik.

public var degiskenler:Degiskenler ;


Benzer Veri Tiplerinin Oluşturulması

Daha sonra bize lazım olan, yani diğer Class' ta da bulunan, değişkenleri içeri çekebilmek için o değişkenlere benzer veri tipi bulunduran dizi1, sayi1 ve boolean1 değişkenlerini oluşturuyoruz.


Yeni Verilerin, Diğer Classtan Çekilmesi

Main Classımızda bulunan Constructor fonksiyonuna gelerek veri tiplerini tekrar tanımlıyoruz. Fakat burada tanımlarken öncelikle degisken isimli değişkeni öncelikle tanımlamamız gerek. Daha sonra ise diğer değişkenlerimiz (sayi1, dizi1, boolean1) için bunun üzerinden erişim sağlayacağız. Tanımlarken şu şekilde tanımlıyoruz :

değişkenİsmi = new DeğişkenVeriTipi(degisken.benzerDiğerDeğişken);

mesela ;

sayi1 = new Number(degisken.sayi);

buradaki degisken.benzerDiğerDeğişken kısmı nokta(.) işareti ile onun içerisine, barındırdığı verilere erişmemizi sağlıyor.


Çekilen Verilerin Kontrolü

Artık verileri oluşturduğumuza göre geriye kalan bir tek bunları kontrol etmek kaldı. trace(); komutuyla verileri OutPut penceresinde yazdırıyoruz.

trace(dizi1);
trace(sayi1);
trace(boolean1);

Test ediyoruz ve görmek istediğimiz sonucu alıyoruz. :)





Drawing API Kullanarak Kod İle Çizim Yapmak

Etiketler: , 0 yorum

Bir önceki yazımda ( buradan ulaşabilirsiniz ) filtrelerin kullanımını işlerken Sprite üzerine Drawing API ile çizim yapmıştık. Bu tamamen apayrı bir konu olduğundan yeni bir yazıda ele almak istedim.

Öncelikle şunu söyleyeyim Shape ve Sprite sınıflarında Drawing API kullanabilirsiniz.

Drawing API ile basit şekiller, eğri çizgiler ve normal çizgiler çizebilirsiniz, çizdiğiniz şeklin içini doldurabilirsiniz ve o çizimi sadece ekranda çizim olarak yer tutmasını değil, buton gibi farklı işlevlerde de kullanabilirsiniz.


Öncelikle basit olarak Sprite' larla başlayalım ve bir sprite'ın içerisine çizim ekleyelim.

( Bunları yaparken Flash Develop programını kullanıyorum. Kodlar için basit bir program (NotePad++ gibi..) da kullanabilirsiniz fakat sonucu görebilmeniz için bir derleyici de gerekir. Flash Develop bunların hepsini barındırmakta. Ayrıca Adobe Flash' ı da kullanabilirsiniz. )

Çizimi eklerken şu komutları, çizimi kişiselleştirmek için kullanabiliriz (Kodları göremiyorsanız tıklayın.) :




Kullanacağımız kodlar bu kadar ve üzerlerinde açıklamaları mevcut. Bunun için artık yapacağımız asıl örneğe geçebiliriz.

Yapacağımız örneğin kodları :



Kodları tekrardan açıklamaya gerek duymuyorum. O yüzden direk sonucu vereceğim :



AS3 ile Filtre Efektleri - Filters

Etiketler: , 0 yorum

Flash üzerinde nesneleri göze daha iyi görünür hale getirmek ve bulunduğu ortama uyarlamak için filtreleri sıkça kullanabiliyorduk. Bunu Flash'ı kullanmadan, sadece kodlarla da yapabiliriz.

İlk önce bu efektlerin ne olduğundan bahsetmek istiyordum fakat onun yerine kullanarak sonucu görmek daha iyi ve benim için de anlatımı basit olacaktır.

--Bu örneği yaparken Flash Develop programını kullandım. Gayet iyi bir program, öneririm.



Öncelikle belirteyim, bu örneği yaparken nesneyi kod ile çizeceğiz, bu konuya daha önce blogumda yer vermemiştim fakat bundan sonraki yazımda ona deyineceğim. 

Kodları vereyim ve açıklayarak devam edelim. Kodlar bunlar (Eğer kodları göremiyorsanız şuradan nasıl açabileceğinizi öğrenebilirsiniz.) :




Kodların kabaca açıklaması kod satırlarının üstlerinde yer almakta fakat ben tekrardan açıklayarak anlatma gereği duyuyorum. Öncelikle nesne, bevel, glow ve blur gibi değişkenler oluşturduk. Bunlardan nesne, Sprite veri türüne sahip. Yani kod ile çizeceğimiz ve ekrana ekleyeceğimiz olan. Diğer kalan 3 tane ise nesneye ekleyeceğimiz efektler.

Değişkenleri belirledikten sonra nesneOlustur ve filtreAyarlari adında iki fonksiyonumuz var. nesneOlustur fonksiyonunda -daha sonra da deyineceğimi söylediğim- sprite ile nesne çizimini yaptık ve addChild komutu ile nesnemizi sahneye ekledik.

filtreAyarlari fonksiyonu ise şimdi asıl ilgilenmemiz gereken kısım. Öncelikle filtrelerimizin hepsini yeniden  (... = new ...) biçiminde tanımladık. Daha sonra ise onlara ait olan (hepsini bir defada kullanmadığım) ;

quality : Verilen efektin kalite değeri, çok fazla abartıldığında gözü alabiliyor. Aşırıya kaçmamak gerek.
blurX : Yatay bulanıklaştırma miktarı.
blurY : Dikey bulanıklaştırma miktarı.
distance : Verilen efektin ulaşacağı maksimum uzaklık.
alpha : Transparanlık değeri.
angle : Açı değeri.
inner : Boolean (true veya false) değeri alan ve efekti içeriye doğru uygulayan komut.
knockout : Boolean (true veya false) değeri alan ve efekti dışarıya doğru uygulayan komut.
color : Efekt içerisindeki gölgenin rengi.

özellikleri ayarladık. Eğer bu özellikleri teker teker belirtmezseniz, otomatik değerler sizin vereceğiniz değerlerin yerini alır.

Özellikleri belirledikten sonra bu efektleri çizdiğimiz nesneye aktarmak için şu komutu kullandık.

nesne.filters=[bevel,glow,bevel]

Burada parantez içlerine efektleri en başta değişken olarak eklediğimizde verdiğimiz isimleri kullandık. Daha sonra test ederek sonucu elde ettik.

Kaynak dosyayı indirmek için tıklayınız.  


Ayrıca daha fazla bilgi ve açıklama için şu siteye bakabilirsiniz.

Farklı Türden Değişkenleri Stringe Aktarma

Etiketler: 0 yorum



AS3 üzerinde, string olmayan çeşitli değişkenleri Textlere aktarmak veya başka türden değişkenlerle birleştirip bunu yazdırmak için kullandığımız bir tür metot var.



var bosText:TextField=new TextField();
var sayi1:Number=new Number(5);

addChild(bosText);
trace(sayi1);
bosText.text=sayi1;



Bu şekilde denediğimizde Flash' ın vereceği bir hata ile karşılaşırız. Çünkü buradaki fark karpuzu, elma poşetine sokmaya çalışmak gibi bir şey. Yani birbiriyle uyuşmayan türden şeyleri bir arada bulundurmaya çalışmak.

Bu problemi aşmak için de farklı bir değişkeni, Stringe aktaracağız. Bu değişkenimiz üstteki kodlarda bulunan sayi1 isimli Number türü değişkeni.

Bunu yapmak için ise String komutu içerisine değişkeni alacağız.



var bosText:TextField=new TextField();
var sayi1:Number=new Number(5);

addChild(bosText);
trace(sayi1);
bosText.text=String(sayi1);




Evet, bu şekilde oldu. Bir nevi bir dönüştürme uyguladık ve textimize Number türü bir değişken aktardık. 


AS3 ile Kar Efekti

Etiketler: 0 yorum



Bu uygulamayı aslında yılbaşı zamanlarında yapmam gerekliydi ama neyse. :D

Öncelikle bunu yapabilmek için bir adet kar tanesi çiziyoruz ve movieClip haline getiriyoruz. MovieClip haline getirirken Advanced sekmesinden Export for Action Script seçeğini işaretliyoruz ve Class ismine karTanesi yazıyoruz. Bu isim onu kod ile ekrana kolayca çekmemize yarayacak. Her kar tanesini teker teker çekmek sorunlu olurdu ve canını sıkardı insanın sanırım. :)

MovieClip' i oluşturduktan sonra bir kaç değişken oluşturmamız gerekecek, bunlar kodların 5 ve 10. satır aralığında bulunuyorlar.

Sanırım bu kadar açıklama yeterli, zaten çok fazla ek bir şeye gerek yok. Sonuç olarak şöyle bir şey çıkarttım :








Konu olarak burada zaten blogda da ararsanız bulabileceğiniz for each, function, addEventListener, TimerEvent ve Timer, addChild, Math.random, width-height, Array ve değişkenleri kullandım. Basit bir uygulama oldu, yorum yaparsanız sevinirim.


Mouse Hareketine Göre Dönen MovieClip

Etiketler: 0 yorum




Bir arkadaşın isteği üzerine yazıyorum bu dersi. Kutuları Vur oyunumdaki sistemi sormuş ve anlatayım dedim.


Bu işlevi gerçekleştirirken Math komutlarından atan2' den yararlanacağız.

Sistem şöyle işleyecek :

Bir movieClip olacak ve bu movieClip Mouse hareketlerine göre, yani mouse ile yaptığı açıya göre aynı konumda olacak.

Yapmadan önce hareket edecek olan mc içi bir şey söylemek istiyorum. Çizilen hareketli mc' ye çevirecekken Registration Point yani referans noktasını düzgün belirlemeniz. Eğer namlu biçimde olacak orta alt noktasını seçmeniz daha makul olur. Bu nokta sabit kalacak kısmı gösterir.

Instance name' i mcHareketli olsun hareket edecek nesnemizin. Tabi mesela bu sistemi mouse'a göre dönen göz örneklerinde de yapabilirsiniz.

Kodlar burada :











AS3 - İki Nokta Arası Uzaklığın Hesaplanması

Etiketler: 0 yorum



Action Script 3.0 da iki nesne arası uzaklığın (referans noktalarına göre) hesaplanmasını anlatacağım. Aslında çok basit, birazcık matematik bilgisi yeterlidir.

Sonuç olarak bunu elde edeceğiz (Uzaklığın gösterildiği kısım sığmıyor olabilir. Tıklayıp sağa doğru çekiniz.) :




Öncelikle lazım olanlar :

1 TLF Text (Dynamic olacak, kod ile Textfield olarak oluşturmak daha mantıklı gibi.)
2 farklı yerde bulunan nesne - Movie Clip olacak. (Tabi bunlardan birisini veya ikisini de mouse veya klavye ile etkileşimli hale getirip her harekette hesaplanma yapılmasını da sağlayabiliriz.)


Referans noktası yani MovieClip yaparken kullandığımız Registration Point ' i istediğiniz olarak belirleyebilirsiniz, uzaklık buna göre belirlenecektir. Ben orta olarak belirliyorum.

Nesnelerin instance name kısımlarını nesne1 ve nesne2 olarak belirliyoruz. Kodları geçiriyoruz (Açıklamalar mevcut) :

 


(Arrays) Diziler ve Dizi İşlevleri - 1

Etiketler: 1 yorum





Array (dizi) ler çeşitli elemanları içinde barındıran bir çeşit kümelerdir. Biraz uzun bir konu, o yüzden bölerek anlatacağım. Bu birinci kısmıdır.


Diziye örnek verecek olursak :


var sepet:Array=new Array();
sepet=["Elma","Armut","Karpuz"];
trace(sepet);


Trace ekranında sepet isimli dizimizin içerdiği elemanlar yani Elma,Armut,Karpuz yazdırılacaktır.

Gelelim bunun işlevlerine...


PUSH();

İlk işlev, diziye eleman eklemek manasına gelen "push" işlemi.

Bir örnek verecek olursak :



var sepet:Array=new Array();
sepet=["Elma","Armut","Karpuz"];
trace(sepet);

sepet.push("Muz");
trace(sepet);



Burada iki kere trace kullandık. İkincisinde dizinin yeni halini yani Muz elemanının sepete eklenmiş halini yazdıracaktır.


SHIFT();

Bu işlev ile dizide yer alan ilk elemanı diziden çıkartabilirsiniz. Örnekle :




var sepet:Array=new Array();
sepet=["Elma","Armut","Karpuz"];
trace(sepet);

sepet.shift();
trace(sepet);


İlk tracede 3 eleman, ikincisinde ise dizinin ilk elemanı yani Elma elemanının silinmiş halini yazdıracaktır.


REVERSE();

Bu işlev ile dizi elemanlarını terse çevirebilirsiniz. Örnekle :




var sepet:Array=new Array();
sepet=["Elma","Armut","Karpuz"];
trace(sepet);

sepet.reverse();
trace(sepet);


Sonuç olarak trace ekranının ikinci satırında eleman sırası ters çevrilecek yani Karpuz,Armut,Elma olarak yazdırılacaktır.


POP();

Bu işlev ile dizinin son elemanını diziden çıkarasiniz. Örnekle :


var sepet:Array=new Array();
sepet=["Elma","Armut","Karpuz"];
trace(sepet);

sepet.pop();
trace(sepet);


Trace ekranında ilk olarak 3 eleman yer alacak ancak ikinci satırda 2 eleman olacak. Yani sonuncu eleman olan Karpuz diziden çıkarılmış.


SLICE();

Bu işlev ile dizinin belirli bir aralıktaki elemanlarını ele alabilirsiniz. Örnekle :



var sepet:Array=new Array();
var ikinciSepet:Array=new Array();

sepet=["Elma","Armut","Karpuz","Muz","Kiraz","Vişne","Nar","Portakal","Çilek","Ayva","Erik"];
trace(sepet);

ikinciSepet=sepet.slice(3,8);
trace(ikinciSepet);



Buradaki 3,8 işlevi 3. ile 8. elemanları arasında kalan elemanları ele almanızı sağlar. Yani ikinci trace' de 3 ile 8 elemanları arası yazdırılacaktır (Muz,Kiraz,Vişne,Nar,Portakal). (3 dahil değil, 8 dahil.)




Tıklanan Yere Giden MovieClip Yapımı

Etiketler: , 0 yorum




Flash ile tıkladığınız yere giden MovieClip yapabilirsiniz. Bu derste hem AS2 hem de AS3 kodu vereceğim, ikisi de oldukça basit ve kolay.

Yapım için kodlar hariç tüm kısım aynıdır.

İlk önce hareket edecek nesneyi çizip onu bir movieClip haline getirelim, daha sonra seçili hale getirip Properties panelinden "instance name" özelliğine mcHareketli yazalım ve daha sonra bir boş movieClip oluşturup bunun ismine de mcBos yazalım. Kodları frame' e geçirelim :  (Eğer kodları göremiyorsanız buraya tıklayıp DNS değiştirin.)

AS3 İçin :




AS2 İçin :





Sonucumuz bu şekilde olacaktır (Ekranda herhangi bir yere tıklayın.).

getBounds(); ile Nesne Özelliklerini Öğrenme

Etiketler: 2 yorum



Bu komutla nesnenin aynı üst resimdeki gibi çevresini kaplayacak kadar oluşturulmuş bounding box dediğimiz  alan içerisindeki x,y,width ve height değerlerini elde edebiliyoruz.

Hemen bir deneme yapalım ve trace komutu ile ekranda bir nesnenin özelliklerini yazdıralım. Nesnemizin instance name' i  mcNesne olsun.


trace(mcNesne.getBounds(this));

//(x=nesnenin x değeri, y=nesnenin y değeri, w= nesnenin width değeri, h=nesnenin height değeri)


Bütün özellikleri değil, yalnızca bir özelliği yazdırmak isterseniz de şu şekillerde kullanabilirsiniz :


x değeri için :

trace(mcNesne.getBounds(this.x));


y değeri için :

trace(mcNesne.getBounds(this.y));


width değeri için :

trace(mcNesne.getBounds(this.w));


height değeri için :

trace(mcNesne.getBounds(this.h));









Math ile Matematiksel İşlemler

Etiketler: , 0 yorum


Matematik ile kullandığımız bir çok -hatta hemen hemen hepsi- özellik Action Script içerisinde de barıldırılmaktadır. Bunların kullanımını ve ne işe yaradığını anlatacağım.

abs();

Yazılan sayının (5.6 tarzı sayılarda dahil) mutlak değerini verir.

var sayi:int=5;
var sayi1:int=-5.5;

trace(Math.abs(sayi));
trace(Math.abs(sayi1));


acos();

Yazılan sayının ark cosinus değerini verir. 1 ile -1 arasında bir değer alır.


var sayi:int=0.6;
trace(Math.acos(sayi));


asin();

Yazılan sayının ark sinüs değerini verir. 1 ile -1 arası bir değer alır.


var sayi:Number=0.5;
trace(Math.asin(sayi));


atan();

Yazılan sayının ark tanjant değerini verir. 


var sayi:Number=0.5;
trace(Math.atan(sayi));

atan2();

Yazılan iki sayının ark tanjant 2 değerini verir.


var sayi:Number=2;
var sayi1:Number=6;

trace(Math.atan2(sayi,sayi1));

ceil();

Yazılan ondalıklı bir sayıyı bir üst tam sayıya çevirir.


trace(Math.ceil(0.5));
trace(Math.ceil(0.2));

cos();

Yazılan sayının kosinüs değerini verir.





trace(Math.cos(90));

floor();

Yazılan ondalıklı sayının ondalık kısmını atar ve tam sayıya çevirir.


trace(Math.floor(4.1));
trace(Math.floor(5.5));
trace(Math.floor(6.0));

max();

Yazılan iki sayının büyük olanını verir.


trace(Math.max(22,35));


min();

Yazılan iki sayının küçük olanını verir.


trace(Math.min(22,35));

pow();

Üslü işlemleri yapar. Parametre kısmında ilk sayı taban, ikincisi alacağı üs değeridir.


trace(Math.pow(3,3));






random();

Verilen değere göre rastgele sayı üretir.


trace(Math.random()*5);

round();

Yazılan ondalıklı sayıyı en yakın tam sayıya yuvarlar.


trace(Math.round(2.1));
trace(Math.round(2.5));
trace(Math.round(2.9));

sin();

Yazılan sayının sinüsünü verir.


trace(Math.sin(35));


sqrt();

Yazılan sayının karekökünü hesaplar.


trace(Math.sqrt(36));


tan();

Yazılan sayının tanjantını verir.


trace(Math.tan(22));


PI

Pi sayını verir.

trace(Math.PI);


Rotation Komutu ile Nesneleri Döndürme

Etiketler: 0 yorum




Ekrana eklediğiniz nesneleri derecelere bağlı olarak döndürmenizi sağlar. Nesnenin ilk konumu varsayılan yani sıfır olarak ele alınır. 360 dereceye kadar döndürme imkanı vardır.

Basit olarak bir nesnenin duruş açısını değiştirmek ve döndürmek için şu şekilde kullanabilirsiniz :


nesne.rotation+=5;

nesne.rotation=90;

nesne.rotation=180;


...

gibi. Bu komutu kullanarak basit bir örnek yapalım. Örneğimizde nesne sürekli dönsün ve bir text içerisinde nesneye ait olan açıyı yazdıralım.

Nesnemizi çizip MovieClip haline getirdikten sonra instance name kısmına mcNesne yazalım ve sahneye bir de TLF Text oluşturalım, bunun da instance name' ine txtAci yazın.

Daha sonra kodlarımızı ekleyelim :





Buradaki donusHizi değişkeni ile dönüş hızını belirledik. Bu değişkeni değiştirerek hızı da değiştirebilirsiniz.
addEventListener komutu ile de oluşturduğumuz işlevi gerçekleştirecek olan fonksiyonun sürekli işler hale gelmesini sağladık.


Sonuç olarak böyle bir şey elde edeceğiz :



Farkettiyseniz 180 ve -180 arası değişiyor açılar, bu şekilde toplamda 360 dereceye geliyor.


hitTestPoint(); Nokta Temas Kontrolü

Etiketler: 0 yorum

hitTestObject(); komutunun belirli noktalar ile çalışması denilebilir. Nesnenin belirlediğiniz yerlerine belirlenen bir nesnenin temas etmesi halinde işlem gerçekleştirilir.

Kullanım şekli ise yine hitTestObject gibi if komutu ile birliktedir. Örnek verecek olursak :


if(nesne.hitTestPoint(temas nesnesi.x,temas nesnesi.y,true))



 Alttaki resimde :




Resimde görüldüğü gibi kareye ait bazı noktaların koordinatlarını belirttik. hitTestPoint(); işlemini bu kare üzerindeki veya sahnedeki herhangi bir nokta üzerinde gerçekleştirebilirsiniz. 

Buna uygun bir örnek yapalım. Yuvarlak bir nesnemiz olsun ve imlecin buna temas edip etmediğini kontrol edelim. Yuvarlak nesne bir movieClip olsun ve instance name kısmına mcNesne diyelim. Bunun yanında bir de textimiz olsun. Bu text ise imleç ile nesne arasında bir etkileşim olup olmadığını göstersin. Texti ekrana ekledikten sonra Properties kısmından Classic olarak ayarlanmış olan bölümü TLF Text seçeneği ile seçili hale getirin ve instance name olarak txtKontrol yazın.

Üsttekileri oluşturduktan sonra kodlarımızı frame'e yazalım. ( Eğer derslerdeki kodları göremiyorsanız buraya tıklayın. )


   



Kodlar içerisinde anlaşılmayacak bir şey yok sanırsam. Eğer mouseX ve mouseY komutlarını bilmiyorsanız buradaki yazımdan yararlanabilirsiniz. Ayrıca sitedeki tüm AS3 derslerine ulaşabilmek için yandaki kategorilerden Action Script 3 kategorisine göz gezdirebilirsiniz.

Uygulamamız sonuç olarak şöyle bir şey çıkartacaktır ortaya :


for Döngüsü Kullanımı

Etiketler: 0 yorum





For döngüsü ile belirlenmiş iki değer arasında, yani döngü işlevini bitirene kadar işlemler yapılabilir. Bu aradaki değerler değişken ya da direk olarak sayı (int,uint,number.. farketmez.) olabilir. Örnek verecek olursak :



for (var i:int=0; i<5; i++)
{
trace("Merhaba Dünya!");
}


Burada i değişkenini döngü içerisinde tanımladık, i değişkeninin 5 ten küçük olması halinde i sayısının artmasını söyledik. Buradaki önemli kısım 5 değeri. Yani bu döngü sıfırdan başlayarak beş kere (5 dahil olmamak üzere) kendisine verilmiş işlemi yapacak, yani OutPut panelinde "Merhaba Dünya!" yazdıracaktır. 


Bunun yerine i sayısını da yazdırabiliriz. 



for (var i:int=0; i<5; i++)
{
trace(i);
}

Burada yine sıfırdan başlayarak 5 dahil olmamak üzere 5 kere bu işlemi gerçekleştirecek yani i sayısını 5 kere artıracaktır. Bunu 1 den başlayarak 5 dahil sayarak yapmasını istersek :



for (var i:int=1; i<=5; i++)
{
trace(i);
}


Buradaki küçük eşittir ( <= ) ifadesi bu işlemi sağlayacaktır. 






for döngüsü nerede kullanılabilir ki, derseniz de Action Script dillerinin bir çok alanında kullanabilirsiniz. Özellikle oyunlarda veya uygulamalarda toplu obje oluşturma da çok işinize yaracaktır. Aynen burada vermiş olduğumuz örnek gibi.  

Örnekte for döngüsü ile zeminlerin oluşturulduğunu göreceksiniz.

Bu kodlar ile ufak bir uygulama oluşturalım. Uygulamada 5 üyenin siteye giriş yaptığını varsayarak onlara selam verdirtelim. 


for (var i:int=1; i<=5; i++)
{
trace("Hoşgeldiniz sayın üye: "+i);
}

Sonucu test ederek görebilirsiniz. (OutPut panelinde.)



 


AS3 ile Ekrana Rastgele Gelen Zeminler Oluşturma

Etiketler: 3 yorum



Bu örnek geçen telefonda oynadığım Doodle Jump oyunundan geldi aklıma. Rastgele yerlerde aynı zemini tekrar farklı bir boyutta başka bir yere ekliyoruz. Uygulamanın sonucu olarak şöyle bir şey çıkacak ortaya ( Reset butonunu kullanarak örneğin yeniden oluşturulmasını yani mesela bir levelın yeniden başlatılması işlevini görebilirsiniz.  ) :




Gelelim yapımına. İlk olarak bir zemin çizelim ve bunu MovieClip' e çevirmek için F8' e basalım. Daha sonra açılan ekrandan "Advanced" düğmesine tıklayalım. Burada bu MovieClip'i sahneye libraryden çekmek için AS2' de bulunan Identify'a benzer bir özellik olan Class özelliğini kullanacağız.

Advanced butonuna tıkladıktan sonra Export for Action Script seçeneğini işaretleyelim ve açılan Class yazılı kutuya zemin yazalım. Sonra da reset butonu için bir buton yapıp instance name kısmına resetButton yazalım.

Kodları frame'e geçirelim. (Açıklamaları mevcut.):




Timer Sınıfı ile Fonksiyonların Süreye Bağlı Kontrolü

Etiketler: 0 yorum




Timer sınıfı bir nevi Action Script 2 deki setInterval ile aynı işlevi görür. Kullanımı oldukça basittir. Önce bir değişken oluşturulur ve sınıf olarak Timer' a ayarlanır.

var ilkTimer:Timer=new Timer(1000);

Burada ilk Timer değişkenimizi tanımladık. 1000 argümanı, 1000 milisaniyede bir yani saniyede 1 işlevin gerçekleşmesini sağlıyor.

var ilkTimer:Timer=new Timer(1000,3600);

Yeni bir parametre olarak da 3600 argümanı, yani ikinci argüman. İkinci argüman ise bu işlemin 3600 defa yani 60x60 dan 1 saat boyunca çalıştırılması manasına gelmekte.

Değişkenimizi bir fonksiyon ile ilişkilendirirken fonksiyonun event ismi TimerEvent olmalıdır.

function timerFn(e:TimerEvent):void
{
trace("a");
}

Fonksiyonu tanımladıktan sonra sıra addEventListener yani olay dinleyicisi ekleyerek fonksiyonu Timer değişkenine bağlamaya geldi.

ilkTimer.addEventListener(TimerEvent.TIMER,timerFn);

function timerFn(e:TimerEvent):void
{
trace("a");
}
ilkTimer.start();


ilkTimer.start(); komutu ilede fonksiyonun işlevini başlattık. Eğer o komutu yazmazsanız, fonksiyon işlemez.

Test ettiğiniz saniye başı OutPut panelinde "a" yazacaktır.

Bunları kullanarak ufak bir uygulama geliştirelim. Bu uygulamada bir sayaç olsun ve saniye başı 1 artsın. Bunun yanında Başlat ve Durdur butonları bulunsun. Bu butonlara göre sayaç başlasın veya dursun. Ayrıca bu sayaç en fazla 10' a kadar artsın. 10 olunca sayaç dursun.

Butonlardan birincisinin instance name'i btnStart diğerinin btnStop ( Butonları Flash programının kendisinde olan Components penceresinden bulabilirsiniz ), sayaçı gösterecek textin ise txtSayac olsun. Ve bir de artacak olan sayı yani sayi değişkeni olsun.




Sonuç bu olacaktır :



Ama şöyle bir sorun var, sayım bittikten sonra 10 da durunca Başlat'a her tıklayışınızda sayı artmakta. Bunu engellemek için de şöyle bir yol buldum. 
startTimer fonksiyonuna bir sayı kontrolü ekleyeceğiz, yani fonksiyonun yeni hali böyle olacak :

function startTimer(e:MouseEvent):void
{
if(sayi<10)
{
timer.start();
}
}



 
Action Script - Türkiye © 2012 | Designed by Meingames and Bubble shooter