Aytib utganimizdek Java S da MouseDrag ‘odisasi yuk. Shuning uchun biz Drag va Drop mexanizmini xosil kilishda MouseDown, MouseMove va MouseUp xodisalaridan foydalanishimiz kerak. Navbatdagi misolimizda MouseMove yordamida sichkonchaning joriy koordinatalari xolatlar satrida namoyon buladi. namoyon buladi
Event.MouseMove ni yozishda siz MouseMove suzini bosh xarflar bilan yozishingiz kerakligiga e’tiborni karating. MouseMove xodisasi sodir bulganda kaysi funksiya chakirilishini kursatishga kelganda esa siz uni kichkina xarflar bilan yozishingiz kerak buladi:
Window.on mousemove = …
Endi biz oxirgi 2 ta misolni birlashtirishimiz mumkin. Biz foydalanuvchi sichkonchani tugmachasini bosganda uning koordinatasi paydo bulishini xoxlaymiz. Misolning kodi kuyidagi kurinishda buladi:
1 chi dan biz window obyektini MouseDown va MouseUp xodisasi xakida sichkonchani kabul kilishga majbur kilamiz.
Window.CaptureEvents ( Event.MouseDown/Event.MouseUp ) ;
Kurib turganingizdek biz / (yoki) belgisidan window obyekti kursatilgan xodisalardan bir nechtasini kabul kilish kerak degan maksadda foydalanamiz. Kursatilgan xodisalar joyga ega bulsa unda nima sodir bulishini kuyidagi 2 ta satr orkali tavsiflanadi.
Wihdow.On MouseDown = StartDrag;
Wihdow.On MouseUp = EndDrag;
Kuyidagi satrda MouseMove xodisasi ruy berib window obyekti signal kabul kilganda nima sodir bulishi anik bulgan.
Wihdow.On MouseMove = MoveIt;
Lekin tuxtang axir biz Event.MouseMove ni window.captureEvents ( ) da aniklamadikku! Bu shuni anglatadiki joriy xodisa window obyekti tomonidan kamrab olinmaydi. Unda nimaga agar window obyekti bu xodisa xakida xech nimaga ega bulmasa, biz window obyektiga MoveIt ( ) funksiyasini kursatamiz! Bu savolga javobni MouseDown xodisasi sodir bulgandan sung chakiriladigan StartDrag ( ) funksiyasida topishingiz mumkin:
function StartDrag (l) {
Window.CaptureEvents ( Event.MouseMove);
Bu shuni bildiradiki sichkoncha tugmachasi bosilgandan darrov window obyekti MouseMove xodisasini kamirab oladi. Va agar MouseUp xodisasi sodir bulsa biz MouseMove xodisasini tuxtatishimiz kerak. Bu EndDrag ( ) funksiyasida ReleaseEvents ( ) usuli yordamida bajariladi.
MoveIt ( ) funksiyasi sichkonchani koordinatalarini xolatlar satriga yozadi. Endi bizda Drag va Drop mexanizmini amalga oshiruvchi skriptning barcha elementlari bor. Va biz endi obyektlarimizni ekranda chizishni boshlasak xam buladi.