linkedin facebook linkedin facebook nod32

JavaScriptda multiplikatsiya

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2015-04-07

JavaScriptda multiplikatsiya

IMG konteyneridagi SRC atributi qiymatini almashtirish g’oyasining tabiiy davomi bu multiplikatsiya hisoblanadi, yani bu atribut qiymatini vaqt bo’yicha ketma-ket o’zgartirib boorish. Multiplikatsiyani amalga oshirish uchun Window ob’ektining setTimeout() metodidan foydalaniladi.
Hususan, multiplikatsiyani ishga tushirishning ikki xil usuli bor: ии:

  • onLoad();
  • onClick(), onChange() ...

Ko’proq qo’llaniladigani – onLoad dagi setTimeout().

onLoad() hodisasi

onLoad() hodisasi brauzer tomonidan dokumentni yuklash tugallangan vaqtda sodir bo’ladi.
Hodisani qayta ishlovchi BODY konteynerida ko’rsatiladi:

...

<BODY onLoad="JavaScript_code">

...

         Bisning holatda dokumentni yuklash vaqtida rasmlarni o’zgartirish tsikli boshlanishi kerak:

function movie()

{

eval("document.images[0].src='clock"+      i+".gif';");

i++;if(i>6) i=0;

setTimeout("movie();",500);

...

<BODY onLoad="movie();">

...

 Chekli sondagi almashtirishlarni ham bajarish mumkin bo’lsada, misolda cheksiz tsikldan foydalaniladi:

function movie()

{

eval("document.images[0].src='clock"+   i+".gif';");

i++;

if(i<7)

{

setTimeout("movie();",500);

}

}

...

<BODY onLoad="movie();">

         

Ikkala misolda ham setTimeout() metodning ishlatilishiga e’tibor berish kerak. Birinchi qaraganda u oddiy rekursiyadek ko’rinadi. Lekin amalda hammasi sal murakkabroq. JavaScript ko’p oqimli operatsion sistemalargacha ishlab chiqilgan, shuning uchun skriptlarning ishlashini quyidagicha tasvirlash to’g’ri bo’ladi:

  • Skript onLoad() hodisasida boshqaruvni o’z qo’liga oladi.
  • Rasmni o’zgartiradi.
  • Yangi skriptni vujudga keltiradi va uning bajarilishini 500 millisekundga kechiktiradi.
  • Joriy skript JavaScript-interpretator tomonidan yo’qotiladi.

Kechikish muddati tugagandan keyin bajarilish yana qaytariladi. Birinchi misolda (cheksiz takrorlanish) funktsiya o’zini-o’zi hosil qiladi va shu yo’l bilan o’zining uzuliksiz bajarilishini ta’minlaydi. Ikkinchi misolda (chekli sondagi iteratsiyalar) o’n marta takrorlashlardan keyin funktsiya yangidan hosil bo’lmaydi. Bu yangi rasmlarni namoyish qilishni tugatishga olib keladi.

Multiplikatsiyani boshlash va tugatish

Doimiy multiplikatsiyaga boshqa usullar bilan ham erishish mumkin, masalan, ko’p kadrli grafik fayllar orqali. Lekin sahifadagi harakat doimo ham yahshi emas. Ko’pincha foydalanuvchining talabi bo’yicha harakatni boshlash va to’xtatishni amalga oshirish istagi paydo bo’ladi. Oldingi misoldan foydalanib, bu hohish(multiplikatsiyani boshlash yoki to’htatish) ni bajaramiz:

var flag1=0;

function movie()

{

if(flag1==0)

{

eval("document.images[0].src='clock"+     i+".gif';");

i++;if(i>6) i=0;

}

setTimeout("movie();",500);

}

...

<BODY onLoad="movie();">

...

<FORM>

<INPUT TYPE=button VALUE="Start/Stop"

onClick="if(flag1==0) flag1=1; else flag1=0;">

</FORM>

         

Bu holatda biz faqatgina rasmning o’zgarishini chetlab o’tayapmiz, lekin yangi oqimning paydo bo’lishini to’xtatmayapmiz. Agar setTimeout() ni if() konstruktsiyasini ichiga joylashtirsak, u holda Start/Stop tugmasini bosgandan keyin oqim paydo bo’lmaydi va harakatni boshlash mumkin bo’lmay qoladi.
Multiplikatsiyani boshlash va to’xtatish muammosini yechishning yana bir usuli mavjud. U setTimeout() metodini qo’llashga asoslangan. Tashqaridan qaraganda hammasi oldingidagidek ko’rinadi, lekin jarayon butunlay boshqacha ketadi:

var flag1=0;

var id1;

function movie()

{

eval("document.images[0].src='clock"+      i+".gif';");

i++;if(i>6) i=0;

id1 = setTimeout("movie();",500);

}

...

<BODY onLoad="movie();">

...

<FORM>

<INPUT TYPE=button VALUE="Start/Stop"

onClick="if(flag1==0)

  { id1=setTimeout('movie();',500); flag1=1;}

  else {clearTimeout(id1); flag1=0;};">

</FORM>          

Ikki o’zgarishga e’tibor bering. Birinchidan, oqim identifikatori (id1) e’lon qilingan va foydalaniladi; ikkinchidan, clearTimeout() metodi ishlatiladi va, hususan, unga argument sifatida oqim identifikatori beriladi. movie() funktsiyasini qaytadan paydo bo’lishini to’xtatish uchun oqimni “o’ldirish” yetarli.

Tasvirlarni optimallashtirish

Grafikani dasturlashda sahifani namoyish qilishga va grafik tasvirlarning o’zgarish tezligiga ta’sir qiluvchi juda ko’p omillarni hisobga olish kerak. Bu yerda dasturni optimallashning oddiy dilemmasi – tezlik yoki egallagan hajm – faqatgina tezlikni oshirish hisobiga yechiladi. Hotira o’lchami to’g’risida o’lash JavaScriptda dasturlashda negadir qabul qilinmagan.
Rasmlarni tasvirlashni optimallashtirishning barcha usullaridan biz faqat bir nechtasiga to’xtalib o’tamiz:

  • Yuklash vaqtida tasvirlashni optimallash;
  • Oldindan yuklash hisobiga tasvirlashni optimallash;
  • Rasmni kesish hisobiga optimallash.

Agar dastlabki ikkisi statistik rasmlarni tasvirlashga ham, multiplikatsiyaga ham tegishli bo’lsa, uchunchisi asosan multiplikatsiyaga xarakterli usul hisoblanadi.

Yuklashdagi optimallash

Deyarli HTML-sahifalarni yaratishga oid barcha qo’llanmalarda shu narsa ta’kidlanadiki, HTML-sahifaning ichida IMG konteyneridan foydalanganda WIDTH va HEIGHT atributlarini ko’rsatish kerak. Bu narsa sahifa komponentalarini serverdan yuklash tartibi va HTML-parserining ishlash algoritmi tufayli kelib chiqadi. Eng avval разметки matni yuklanadi. Undan keyin parser matnni tahlil qiladi va qo’shimcha komponentalar, jumladan grafikani yuklashni boshlaydi. Bunda rasmlarni yuklash HTTP-protokolining tipiga ko’ra ketma-ket yoki parallel ravishda borishi mumkin.
Parser  yuklash parallel ravishda ishlashda davom etadi. Agar rasmlar uchun kenglik va balandlik parametrlari berilgan bo’lsa, u holda matnni formatlash va brauzer oynasida aks ettirish mumkin. Bu parametrlar aniqlanmaguncha matn namoyish qilinmaydi.
Shunday qilib rasmni kengligi va bo’yini ko’rsatish dokumentni rasmlar serverdan olinishidan avvalroq namoyish qilishga imkon beradi. Bu foydalanuvchida to’la yuklanib bo’lguncha dokumentni o’qishga yoki undagi gipermatnli o’tishlar bo’yicha harakat qilishga imkon beradi (load hodisasi).

JavaScript nuqtai-nazaridan qaraganda rasmlarning o’lchamlarini ko’rsatish dokument ichidagi grafikani tasvirlash oynasiga boshlang’ich parametrlarni beradi.  Bu esa to’la rasm bilan almashtirish uchun kichkina shaffof oynadan foydalanish imkoniyatini yaratadi. G’oya shundaki, talab qilinganda katta ob’ekt bilan almashtirish uchun kichkina ob’ekt uzatiladi.

639 marta o`qildi.

Foydalanuvchi ismi: 101-g/ Ergashev Safarali
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: 101-g/ Ergashev Safarali
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: Dilmurod Xolmurodov 202-gurux
Qo`shilgan sana: 2015-04-24

yaxshi

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama

testing

masalalar.zn.uz/

Turli xil mavzuda, internet mavzular, faqat masalalar.zn.uz saytda.


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений