package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.ui.Mouse; import flash.events.Event; import flash.text.TextFormat; import flash.text.TextField; public class nesnevur extends MovieClip { public function nesnevur() { var level:int=1; var speed:int=1; var dizilis:int=30; var crosshair:MovieClip = new cls_crosshair; // croshair adında movieclip nesnesi tanımladım. Tanımladığım nesnenin cls_crosshair film klibime eşit olduğunu belittim crosshair.mouseEnabled = false; //croshairime windows imleçi ile tıklanmasını engelliyorum. addChild(crosshair); //oluşturduğum crosshairimi sahneye koyar. Mouse.hide(); //mouse imlecimi kaldırdım stage.addEventListener (MouseEvent.MOUSE_MOVE,gap_crosshair); //mouse harekterimi dinlettirdim. Mouse her hareket ettiğinde bir fonksiyon tanımladım(gap_crosshair) function gap_crosshair(s:MouseEvent):void // s parametreme aldığım mouse olaylarıdır. { crosshair.x =s.stageX; //stage olaylarıyla mousumun komunu aldım crosshair.y =s.stageY; // crosshair.y ile sahnemdeki mousu crosshairime aldım } function scrolldown(a:int, b:int):int //scrolldown değişkenime a ve b olarak 2 adet rastgele değer döndürüyorum { return Math.floor(Math.random()*((b-a) +1)+a); } stage.addEventListener(Event.ENTER_FRAME,letstart); function letstart(s:Event):void //bu fonksiyon her framde çalışacak { var aktifnesne:MovieClip; var NesneID: int = scrolldown(1,8) //nesne sayıma göre 7 sayısı değişir switch(NesneID) { case 1 : aktifnesne = new cicek; //case sayısı nesne çoğaldıkça artar //sayı 1 geldiğinde cicek gelir vb. break; case 2 : aktifnesne = new copkutusu; break; case 3 : aktifnesne = new damlacik; break; case 4 : aktifnesne = new igne; break; case 5 : aktifnesne = new ilkyardim; break; case 6 : aktifnesne = new yildiz; break; case 7 : aktifnesne = new cls_papatya; break; case 8: aktifnesne = new cls_uyarıtrafik; break; } dizilis++; //herseferinde dizilişimi arttırır. Üstte tanımladığım sayının bir üstüne koyarak ilerler var çap:int = scrolldown(20,50); // oluşturduğum moviekliplerin standart boyutlarını kullanmak istemiyorum. Oluşturduğum bütün nesneler 100 ile 150 arasında rastgele boyut alacak. //moviekliplerimin orjinal boyutu çok fazla olduğu için 20 ve 30 aralığını kullandım aktifnesne.scaleX = çap/60; //her iki çapımın aynı boyutlarda olmasını istemiyorum. O yüzden farklı değerler verdim aktifnesne.scaleY = çap/60; aktifnesne.speed = speed +scrolldown(0,2) + level; //speedden değer geliyor + 1 ile 2 arasında değer geliyor. Bu değerlerim levelım arttıkça değişiklik gösterecek. Daha fazla level daha fazla hız. // moviekliplerim sahnemde daha stabil bir şekilde yer almaları için hız tanımlaması yapmamız gerekir. aktifnesne.name = "nesnem" + dizilis; // üstte tanımladığım dizilis değişkeninin aldığı rakama göre dizilis yapacak. aktifnesne.y = scrolldown(30,200); aktifnesne.addEventListener(Event.ENTER_FRAME,safewordcoming); // fonksiyonum nesnelerin köşelerden gelmesini sağlayacak. addChild(aktifnesne); aktifnesne.addEventListener(MouseEvent.CLICK,readyyyyfireee); //nesnelere ateş etmem için burada fonksiyon tanımlıyorum } function safewordcoming(s:Event):void { var aktifnesne:MovieClip = s.currentTarget as MovieClip; aktifnesne.x += aktifnesne.speed; if(aktifnesne.x > stage.stageWidth) // nesnelerin sahnemizin boyutunu aşmamasını yapıyorum. Yani sahneden çıkan nesneleri kaldıracağım. { giden++; //formdan silinen nesneleri tutucak aktiflik(); //nesnelerin sayılarını düzenleyecek removeChild(aktifnesne); //sahneden siliyorum aktifnesne.addEventListener(Event.ENTER_FRAME,safewordcoming); //nesneler sahnemden çıktıktan sonra dinlemeyi bırakıyorum. } } //textbox tanımlama var text1:TextFormat =new TextFormat; //metin kutusu tanımladım text1.bold = true; //yazı stilini kalın yaptım text1.font = "Comic Sans MS"; //yazı stilini değiştirdim text1.size = 15; //yazı boyutunu ayarladım text1.color = 0xFF00FF; var text_current:TextField = new TextField; text_current.x = 7; text_current.y = 0; text_current.width = stage.width //sahnenin genişliği kadar ayarladım text_current.height = 22; //yüksekliğini ayarladım addChild(text_current); text_current.defaultTextFormat = text1; text_current.selectable = false; var giden:int=0; var fire:int=0; var hit:int=0; // textbox tanımlamadan ve bu ana kadar yaptığım şey sahneye alan koydum. function aktiflik() { var vuramamaoran:int=Math.round(((hit / (hit + giden)) * 100)); var isabetoran:int=Math.round(((hit / fire) * 100)); if(isNaN(vuramamaoran)) // vuramama oranlarımda herhangi bir değer dönmemesi durumda otomatik olarak 0 değeri verdim. { vuramamaoran=0; } if(isNaN(isabetoran)) // isabet oranlarımda herhangi bir değer dönmemesi durumda otomatik olarak 0 değeri verdim. { isabetoran=0; } text_current.text = "Atış sayısı:" + fire + "\t" + "Vurulan:" + hit +"\t" + "Vuramadığın:" + giden + "\t" + "Vuramadığın oran:" +vuramamaoran + "%" + "isabetoran:" + isabetoran + "%" + "Seviye:" + level ; } function readyyyyfireee(s:MouseEvent): void //ateşleme fonksiyonunu yazıyorum { var aktifnesne:MovieClip = s.currentTarget as MovieClip; hit++; // nesneye vurduğu zaman hit değerimi arttırdım. Bu sayede vurulan değerim artacak. if(((hit% 20==0))) // Oyundaki level zorluğunu ayarlıyorum { level++; } aktifnesne.addEventListener(Event.ENTER_FRAME,ateşlendi); aktifnesne.removeEventListener(MouseEvent.CLICK,readyyyyfireee); aktifnesne.removeEventListener(Event.ENTER_FRAME,safewordcoming); } function ateşlendi(s:Event):void { var aktifnesne:MovieClip = s.currentTarget as MovieClip; var yer :int=20; var asagidus:int =aktifnesne.y + yer; //değerimi arttırarak nesnelerimin aşağıya doğru düşüşünü arttırdım aktifnesne.rotation +=20 // nesnemin kaç derece döneceğini ayarlıyorum aktifnesne.x += speed; // nesnem sağa doğru hizalandırma yapıyorum aktifnesne.y = asagidus; // nesnem şimdi aşağı doğru gidecek if(aktifnesne.x > stage.stageWidth) { removeChild(aktifnesne); aktifnesne.removeEventListener(Event.ENTER_FRAME,ateşlendi); //aşağı düştüğünde nesneyi silmesini ve dinlemeyi bırakmasını sağladım. } } } } }