Craft Dincolo de Noțiuni de bază Mouse și Evenimente Touch

În ultima serie Crafty, ați învățat despre modalități diferite de a muta elemente în jurul valorii de folosind tastatura. În timp ce o tastatură vă poate ajuta să creați o varietate de jocuri, unele situații necesită controlarea diferitelor evenimente ale mouse-ului pentru a face jocul mai plăcut. De exemplu, luați în considerare un joc în care baloanele apar în locuri aleatorii pe ecran. Dacă utilizatorul trebuie să facă clic pe baloane pentru a câștiga puncte, cu siguranță aveți nevoie de o componentă a mouse-ului.

În mod similar, Tastatură componenta nu va fi folositoare atunci când dezvoltați jocuri pentru dispozitive mobile. În acest caz, va trebui să vă bazați pe componenta Touch pentru a vă crea jocurile. În acest tutorial, veți afla despre componentele Mouse și Touch de la Crafty.

Componenta mouse-ului

Șoarece componentă este utilizată pentru a adăuga evenimente de bază ale mouse-ului la entități. Iată o listă a tuturor evenimentelor incluse în această componentă:

  • Mouse-ul peste: Acest eveniment este declanșat când mouse-ul intră în interiorul unei entități.
  • MouseOut: Acest eveniment este declanșat când mouse-ul părăsește o entitate.
  • MouseDown: Acest eveniment este declanșat când butonul mouse-ului este apăsat pe o entitate.
  • MouseUp: Acest eveniment este declanșat când butonul mouse-ului este lansat în interiorul unei entități.
  • Clic: Acest eveniment este declanșat când butonul mouse-ului este dat în interiorul unei entități.
  • Dublu click: Acest eveniment este declanșat atunci când butonul mouse-ului este dublu-clic pe o entitate.
  • MouseMove: Acest eveniment este declanșat când mouse-ul se mișcă în interiorul unei entități.

Rețineți că evenimentele mouse-ului vor fi declanșate pe o entitate numai dacă ați adăugat Șoarece pentru ele. Iată câteva coduri care leagă MouseMove la caseta din demo de mai jos:

var Box = Crafty.e ("2D, Canvas, Color, Mouse") .attr (x: 200, y: 100, w: 200, h: 200 ") .bind ('MouseMove', funcția () this.rotation + = 1;);

După ce caseta a fost legată de MouseMove eveniment, fiecare mișcare a mouse-ului peste cutie îl va roti cu 1 grad. .origine() metoda a fost utilizată pentru a seta punctul de rotație al cutiei noastre în centru. Poate lua și alte valori, cum ar fi "stânga sus", "dreapta-jos", etc. 

Încercați să mutați cursorul în și din cutie în demo. Ținerea unui buton al mouse-ului în interiorul casetei va declanșa MouseDown și schimbați culoarea casetei în roșu.

MouseEvent obiect este, de asemenea, trecut ca un parametru pentru funcția de apel invers al tuturor acestor evenimente mouse-ului. Acesta conține toate datele referitoare la acel eveniment specific mouse-ului. 

De asemenea, puteți verifica pe ce buton al mouse-ului a fost făcut clic de către utilizator utilizând butonul mouseButton proprietate. De exemplu, un clic stâng poate fi detectat prin utilizarea Crafty.mouseButtons.LEFT. În mod similar, un clic pe butonul din mijloc poate fi detectat prin utilizarea Crafty.mouseButtons.MIDDLE.

Componenta MouseDrag

MouseDrag oferă o entitate cu diferite evenimente de mouse drag-and-drop. Cu toate acestea, adăugarea acestor evenimente nu va avea sens dacă entitatea însăși nu poate fi trasă și abandonată. Puteți adăuga abilități de drag-and-drop la o entitate utilizând draggable componentă. Această componentă ascultă evenimentele din MouseDrag componentă și mută respectiva entitate în consecință. MouseDrag componentă este adăugată automat la orice entitate cu draggable component. 

draggable componenta are trei metode: .enableDrag (), .disableDrag (), și .dragDirection (). Primele două metode permit și dezactivează tragerea la o entitate respectiv. A treia metodă este folosită pentru a seta direcția de tragere. 

În mod implicit, entitatea se va deplasa în orice direcție se mișcă cursorul. Cu toate acestea, puteți restricționa mișcarea entității într-o direcție verticală utilizând this.dragDirection (x: 0, y: 1). În mod similar, puteți forța o entitate să se deplaseze numai în direcție orizontală utilizând thisdirectional (x: 1, y: 0)

De asemenea, puteți specifica direcția direct în grade. De exemplu, pentru a muta un element de 45 de grade, puteți pur și simplu utiliza this.dragDirection (45) in loc de această direcție de direcție (x: 1, y: 1).

În afară de tragerea și detașarea elementelor în jurul valorii de, este de asemenea necesar să știți când a pornit și a oprit tragerea. Acest lucru poate fi realizat prin utilizarea StartDrag și StopDrag evenimente. Este deasemenea o glisarea eveniment care este declanșat în timp ce o entitate este trasă.

Iată codul pentru a trage caseta roșie în demo-ul de mai jos:

var hBox = Crafty.e ("2D, Canvas, Culoare, Draggable") .attr (x: 50, y: 50, w: 50, h: 50) .color .bind ('Dragging', funcția (evt) this.color ("negru");) .bind ('StopDrag', funcția (evt) this.color ("roșu");

După ce am setat lățimea, înălțimea și poziția cutiei, am folosit .dragDirection (0) pentru a restricționa mișcarea casetei noastre în direcția orizontală. Am folosit de asemenea .lega() - metoda de legare a entității la glisarea și StopDrag metodă. 

Modificarea culorii în negru oferă utilizatorului indicația că entitatea este în prezent trasă. Ați putea folosi și StartDrag eveniment în loc de glisarea deoarece culoarea entității trebuie schimbată o singură dată. glisarea evenimentul este mai potrivit atunci când trebuie să modificați sau să monitorizați în mod continuu o proprietate a entității trase. De exemplu, puteți utiliza următorul cod pentru a dezactiva tragerea pe cutie după ce a ajuns la locația dorită.

hBox.bind ("Dragging", funcția (evt) this.color ("negru"); dacă (this.x> 300) this.disableDrag (););

Componenta tactilă

Dacă aveți nevoie să accesați evenimente legate de atingere pentru o entitate, puteți utiliza funcția Atingere componentă. Această componentă vă oferă acces la patru evenimente diferite:

  • TouchStart: Acest eveniment este declanșat când o entitate este atinsă.
  • touchmove: Acest eveniment este declanșat atunci când un deget este mutat peste o entitate.
  • touchcancel: Acest eveniment este declanșat atunci când ceva întrerupe evenimentul tactil.
  • TouchEnd: Acest eveniment este declanșat atunci când un deget este ridicat peste o entitate sau îi părăsește entitatea.

Primele trei evenimente au acces la TouchEvent obiect, care conține toate informațiile despre atingere.

Unele jocuri sau proiecte ar putea necesita detectarea mai multor atingeri. Acest lucru se poate realiza prin activarea multi-touch Crafty.multitouch (true). Trecerea acestei metode Adevărat sau fals activează și dezactivează funcția multi-touch.

Înainte de a utiliza funcția Atingere componentă în proiectele dvs., trebuie să știți că este în prezent incompatibilă cu draggable component.

Concluzie

După ce ați terminat acest tutorial, acum ar trebui să puteți gestiona cu ușurință diferite evenimente ale mouse-ului sau să creați cu ușurință jocuri bazate pe drag-and-drop. Rețineți că am folosit Crafty versiunea 0.7.1 în acest tutorial și că demo-urile ar putea să nu funcționeze cu alte versiuni ale bibliotecii. 

În tutorialul următor, veți învăța cum să utilizați foile de sprite pentru a anima diferite personaje de joc în Craft.

Cod