ACTIONSCRIPT BILAN ISHLASH
Buning uchun F9 tugmasini bosib Actions oynasini ochib kerakli kodlarni kiritamiz.
Actionscript tili ancha murakkab va
imkoniyatlari keng boplgan til, sintaksisi C,
Java tillariga
opxshab ketadi.
Dasturlash paytida kodlarni grafik komponentlarga yoki kadrlarga bog’lab qo’yish
mumkin. Virtual dunyoni yaratish va boshqarish dasturi algoritmi.
Biz yuqorida Macromedia Flash dasturi imkoniyatlarini o’rganib chiqdik. Endi o’yin yaratish
nazariyasini eslab olamiz. Mahlumki o’yin yaratish xam oson ish emas. Bunda xisobga olinadigan
bir necha murakkab talablar mavjud.
O’yin yaratishda birinchi bo’lib “poyga” opynidan boshlash maqsadga muvofiq. CHunki
shu soddagina o’yin misolida barcha o’yinlarni tashkil etadigan elementlarni kamroqmexnat qilib
kuzatish mumkin. Bundan tashqari alohida
rassomlikni talab qilmaydi, tasvirlar unchalik xam
talabchan boplmaydi. Mashinalar va atrof dunyoni chizish kopp vaqt olmaydi.
Poyga opynida
deyarli barcha o’yinlar uchun umumiy boplgan komponentlar mavjud.
1. O’yin tugamaguncha qayta qayta bajariladigan jarayon.
2. Kirish mahlumotlarini o’qish.
3. Mahlumotlarni qayta ishlash.
4. O’yin elementlarini yangilash.
5. Yutuq yoki yutqazish shartini tekshirish.
Xar bir yaratiladigan o’yin shu ishlardan iborat bopladi. SHuning uchun bu jarayonlarni
yaxshi o’rganib chiqib amaldi oshirish zarur. CHunki shu ishlarni biror marta oxirigacha amalga
oshirmagan odam bular xaqida tassavurga ega bulmaydi. Va nixoyat boshqa loyxalarni baxolashda
o’z mezonlaringizga ega boplasiz.
Bunda tashqari bu o’yin virtual darsliklarni yaratish negizi bo’lib xizmat qiladi.
CHunki talaba darsni kopradi, eshitadi va boshqarishi mumkin. O’tgan mavzuni o’zlashtira
olmagan talaba navbatdagi mavzuga optishini opqituvchi emas balki mana shu soddagina “Poyga”
o’yini boshqaradi.
Virtual dunyomiz komponentlarini tartib bilan joylashtiramiz. Bunda iloji boricha xar bir
komponent aloxida
Layer
larda joylashgan boplishi maqsadga muvofiq. Biz ularni quyidagicha
joylashtirdik.
CHiziqqa beriladigan xarakatni xam boshqarish mumkin.
Buning uchun uning xarakatlanash kadriga kirib borib uch qismga boplamiz. Va xar bir qismni
boshiga turli nomdagi label lar qopyib chiqamiz. Bizning misolda quyidagicha.
Ko’rinib turibdiki uchta boplim biri biridan vakt davomiyligi bilan ajralib turibdi. Yahni
bu yerda uzunroq kesmada kopp vakt ketib xarakat sust, tezlik past bopladi. Keyingisida tezroq,
oxirgisida esa juda tez almashinish natijasida tezlik ortib ketadi. Xar bir kesmani oxiriga kiska kod
yozib qopyamiz u kod joriy kesmani boshiga qaytishni tahminlab turadi.
Aks xolda tartibsiz
xarakat vujudga keladi. Umuman olganda animatsiya dasturlarida dasturlashda shuni xisobga olish
kerak agar bir kod topliq bajarilishi kerak bulsa dasturchi shu kadrda topxtashni buyurib qopishi
kerak.
Dasturiga esa quyidagi kodni yozamiz.
Birinchi kadrga
stop();
Xar bir kesmani oxirigi kadriga esa
gotoAndplay("run1");
yoziladi. Bu yerda run1 mos kesmani birinchi kadr metkasi.
Mos ravishda navbatdagi kesmalar bilan shu ishlar bajarilgandan keyin stsena qayitib chiziqni
belgilab uning kodiga shunday dastur kiritamiz.
on (keypress "
"){
_global.space+=1;;
//trace(_global.space);
if (_global.space==1) {gotoAndplay("run1");}
if (_global.space==2) {gotoAndplay("run2");}
if (_global.space==3) {gotoAndplay("run3");}
if (_global.space>3) {_global.space=0; gotoAndplay("run1");}
}
Bu yerda probel tugmasini bosganimizda bajariladigan xodisani boshqarish buyruqlari keltirilgan.
_global.space global o’zgaruvchisi umumiy dasturimizda mashinamiz tezligini anglatadi. Xar bir
probel bosilishida tezlik birga ortadi.
Mos ravishda chiziqni xarakatlanish boshqaruvi avval gapirilgan mos kesmalarga optib boradi.
gotoAndplay( ) buyrug’i mos metkaga optib borishni tahminlaydi. SHart tekshirish operatori S++
dasturlash tilidagi singari ishlaydi.
SHunday qilib chiziq va uylarni xarakatlanishini probel tugmasiga bog’lab qopydik. Bu
bilan biz mashinamiz tezligini boshqargan boplamiz.
Bizning mashinamiz boshqarilishi yahni maydon bopylab chapga, opnga, pastga va
yukoriga erkin xarakatlanishi.
Buning uchun mashinani tanlab action kodiga quyidagi kodni kiritamiz.
onClipEvent(enterFrame){
//trace("x");
if (Key.isDown(Key.LEFT))
{if (this._x<203 ) {this._x=this._x} else { this._x-=5; this.gotoAndplay("bl");}}
if (Key.isDown(Key.RIGHT))
{if (this._x>357 ) {this._x=this._x} else { this._x+=5; this.gotoAndplay("br");}}
if (Key.isDown(Key.Up))
{this._y-=5;}
if (Key.isDown(Key.DOWN))
{this._y+=5;}
}
Bu yerda onClipEvent(enterFrame) funktsiyasi keltirilgan uning
bajaradigan ishi joriy
klip xodisalarini boshqarish. Bizning misolda enterFrame xodisasi yahni negizi animatsiya
boplgan flesh dasturining kadrlar freymlar yuklanishi xodisasi. Bu xodisa takrorlanish teziligini
boshqarish mumkin. Buninng uchun kadrlar almashinishini frame rate ni oshirish yetarli bizning
misolda uni 120 ga oshirib qopyilgan.
Key.isDown funktsiyasi qaysi tugma bosilishini kuzatib beradigan funktsiya.
Navbatdagi satrda esa.
{if (this._x<203 ) {this._x=this._x} else { this._x-=5;
Joriy klip x koordinatasi 203 dan kamaysa o’z qiymatini saqlab qolishini aks xolda 5
birlikka kamayib borishini tahminlab beradi.
Mos ravishda quyidagi kod xam opng tomondan chegaranishni tahminlaydi.
{if (this._x>357 ) {this._x=this._x} else { this._x+=5;
bl, br metkalari mashina klipini tarkibida joylashgan metkalar
va mashina tasviri shu
metkalar qopyilgan kadrlarda mos ravishda chapga yoki opnga burilib qopilgan. Xar bir tugma
bosilishida mos ravishda chapga, opnga burilish effektini yaratib beradi.
this.gotoAndplay("bl");}}
this.gotoAndplay("br");}}
Raqib tomonidan boshqariladigan mashinalar xarakati.
Uning kodi 2 chi freymda joylashtirilgan va tarkibi quyidagicha.
203>203>