Uma uxhuma isilawuli, uphihliza izinkinobho, unyakazisa izinti, udonse okokuqalisa… futhi njengonjiniyela, awuboni lutho. Isiphequluli siyayithatha, impela, kodwa ngaphandle uma ufaka izinombolo kukhonsoli, ayibonakali. Lelo yikhanda elibuhlungu nge-Gamepad API. Sekuyiminyaka ikhona, futhi empeleni inamandla kakhulu. Ungafunda izinkinobho, izinti, ama-triggers, imisebenzi. Kodwa abantu abaningi abayithinti. Kungani? Ngoba akukho mpendulo. Alikho iphaneli kumathuluzi kanjiniyela. Ayikho indlela ecacile yokwazi ukuthi ngabe isilawuli siyakwenza yini lokho okucabangayo. Kuzwakala sengathi ukuphuphutheka endizayo. Lokho kungiphathe kabi ngokwanele ukwakha ithuluzi elincane: I-Gamepad Cascade Debugger. Esikhundleni sokugqolozela okukhiphayo kwekhonsoli, uthola ukubuka okubukhoma, okusebenzisanayo kwesilawuli. Cindezela okuthile bese isabela esikrinini. Futhi nge-CSS Cascade Layers, izitayela zihlala zihlelekile, ngakho-ke kuhlanzekile ukulungisa iphutha. Kulokhu okuthunyelwe, ngizokukhombisa ukuthi kungani izilawuli zokulungisa iphutha kuwubuhlungu obunjalo, ukuthi i-CSS isiza kanjani ukuyihlanza, nokuthi ungakha kanjani isilungisi sephutha esisebenziseka kabusha samaphrojekthi akho.

Ngisho noma ukwazi ukuzifaka zonke, uzogcina usunogaxekile wekhonsoli ongafundeki. Isibonelo: [0,0,1,0,0,0.5,0,...] [0,0,0,0,1,0,0,...] [0,0,1,0,0,0,0,...]

Ungakwazi ukusho ukuthi iyiphi inkinobho ecindezelwe? Mhlawumbe, kodwa kuphela ngemva kokucindezela amehlo akho futhi ulahlekelwe okokufaka okumbalwa. Ngakho-ke, cha, ukulungisa iphutha akufiki kalula uma kukhulunywa ngokufakwa kokufunda. Inkinga 3: Ukuntuleka Kwesakhiwo Ngisho noma uphonsa ndawonye isibonisi esisheshayo, izitayela zingase zimosheke ngokushesha. Izimo ezizenzakalelayo, ezisebenzayo, nezisusa iphutha zingadlulana, futhi ngaphandle kwesakhiwo esicacile, i-CSS yakho iba nzima futhi kube nzima ukunweba. Izendlalelo ze-CSS Cascade zingasiza. Bahlanganisa izitayela zibe "izendlalelo" ezihlelwa ngokubalulekile, ukuze uyeke ukulwa nokucaciswa nokuqagela, "Kungani isitayela sami sokususa iphutha singabonisi?" Kunalokho, ugcina ukukhathazeka okuhlukene:

Isisekelo: Okujwayelekile kwesilawuli, ukubukeka kokuqala. Kuyasebenza: Okugqamile kwezinkinobho ezicindezelwe nezinti ezinyakazayo. Ukulungisa iphutha: Izimbondela zonjiniyela (isb., ukufundwa kwezinombolo, imihlahlandlela, nokunye).

Uma besingachaza izendlalelo ku-CSS ngokwalokhu, besizoba: /* okuphansi kuya kokubaluleke kakhulu */ @isisekelo sendlalelo, siyasebenza, lungisa iphutha;

@isendlalelo { /*... */ }

@ungqimba uyasebenza { /*... */ }

@layer ukulungisa iphutha { /*... */ }

Ngoba ungqimba ngalunye lunqwabelanisa ngokubikezela, uhlale wazi ukuthi yimiphi imithetho ephumelelayo. Lokho kubikezela kwenza ukulungisa iphutha kungabi lula nje, kodwa kulawuleke. Siyihlangabeze inkinga (okungabonakali, okokufaka okungcolile) kanye nendlela (isilungisi esibonakalayo esakhiwe nge-Cascade Layers). Manje sizohamba ngesinyathelo ngesinyathelo sokwakha isilungisi sephutha. I-Debugger Concept Indlela elula yokwenza okokufaka okufihliwe kubonakale ukuvele ukudwebe esikrinini. Yilokho okwenziwa yilo mlungisi. Izinkinobho, izingcipho, nezinduku zokudlala konke kuthola okubonakalayo.

Cindezela A: Umbuthano uyakhanyisa. Gudluza uthi: Indingilizi iyashelela. Donsela i-trigger phakathi: Ibha igcwala uhhafu.

Manje awubhekile ko-0 no-1s, kodwa empeleni ubuka isilawuli senza bukhoma. Kunjalo, uma usuqale ukunqwabelanisa ezifundeni ezifana nokuzenzakalelayo, ucindezelwe, ulwazi lokususa iphutha, mhlawumbe nemodi yokurekhoda, i-CSS iqala ukuba nkulu futhi ibe yinkimbinkimbi. Yilapho izingqimba ze-cascade zisiza khona. Nasi isibonelo sokukhishwa: @isendlalelo { .inkinobho { ingemuva: #222; I-radius yomngcele: 50%; ububanzi: 40px; ubude: 40px; } }

@ungqimba uyasebenza { .inkinobho.cindezelwe { ingemuva: #0f0; /* okuluhlaza okukhanyayo */ } }

@layer ukulungisa iphutha { .inkinobho::ngemuva { okuqukethwe: i-attr(inani ledatha); usayizi wefonti: 12px; umbala: #fff; } }

Uhlelo lwesendlalelo lubalulekile: isisekelo → esisebenzayo → ukulungisa iphutha.

isisekelo sidonsa isilawuli. izibambo ezisebenzayo izimo ezicindezelwe. ukulungisa iphutha kokuphonsa phezu kwembondela.

Ukuyihlakaza kanje kusho ukuthi awulwi nezimpi ezingaqondakali. Isendlalelo ngasinye sinendawo yaso, futhi uhlale wazi ukuthi yini ewinayo. Ukwakha It Out Ake sithole okuthile esikrinini kuqala. Akudingi ukubukeka kukuhle - kudinga nje ukuba khona ukuze sibe nokuthile esizosebenza ngakho.

I-Gamepad Cascade Debugger

A
B
X

Isinyathelo 1: Dala Umsizi Wokulanda Okokuqala, sidinga umsebenzi womsizi ophatha ukulandwa kwamafayela esipheqululini: // =================================== // IFAYELA LANDA USIZI // ===================================

umsebenzi downloadFile(igama lefayela, okuqukethwe, uhlobo = "umbhalo/ithafa") { // Dala ibhuloho kusuka kokuqukethwe const blob = Ibhuloho elisha ([okuqukethwe], {uhlobo}); const url = URL.createObjectURL(blob);

// Dala isixhumanisi sokulanda sesikhashana bese usichofoza const a = document.createElement("a"); a.href = url; a.download = igama lefayela; a.chofoza();

// Hlanza i-URL yento ngemuva kokulanda setTimeout(() => URL.revokeObjectURL(url), 100); }

Lo msebenzi usebenza ngokwakha i-Blob (into enkulu kanambambili) kusuka kudatha yakho, ukukhiqiza i-URL yesikhashana yayo, futhi ngokuchofoza ngokuhlelekile isixhumanisi sokulanda. Ukuhlanza kuqinisekisa ukuthi asivuzi inkumbulo. Isinyathelo sesi-2: Phatha i-JSON Export I-JSON ilungele ukulondoloza ukwakheka kwedatha ephelele:

// =================================== // KHIPHA NJENGOBA JSON // ===================================

document.getElementById("export-json").addEventListener("chofoza", () => { // Hlola ukuthi kukhona yini ongathumela ngaphandle uma (!frames.length) { console.warn("Akukho ukurekhoda okutholakalayo okungathekeliswa."); buyela; }

// Dala umthwalo okhokhelwayo ngemethadatha namafreyimu i-const payload = { idalweNge-: new Date().toISOString(), amafreyimu };

// Landa njengefomethi ye-JSON downloadFile( "i-gamepad-log.json", JSON.stringify(payload, null, 2), "isicelo/json" ); });

Ifomethi ye-JSON igcina yonke into ihlelekile futhi ihlukaniseka kalula, iyenze ilungele ukuphinda ilayishelwe kumathuluzi e-dev noma ukwabelana nozakwethu. Isinyathelo sesi-3: Phatha Ukuthunyelwa Kwe-CSV Ngokuthunyelwa kwe-CSV, sidinga ukucaba idatha ye-hierarchical ibe imigqa namakholomu:

//=================================== // KHIPHA NJENGE-CSV // ===================================

document.getElementById("export-csv").addEventListener("chofoza", () => { // Hlola ukuthi kukhona yini ongathumela ngaphandle uma (!frames.length) { console.warn("Akukho ukurekhoda okutholakalayo okungathekeliswa."); buyela; }

// Yakha umugqa wesihloko se-CSV (amakholomu esitembu sesikhathi, zonke izinkinobho, zonke izimbazo) const headerButtons = ozimele[0].buttons.map((_, i) => btn${i}); const headerAxes = ozimele[0].axes.map((_, i) => i-eksisi${i}); const unhlokweni = ["t", ...headerButtons, ...headerAxes].join(",") + "\n";

// Yakha imigqa yedatha ye-CSV const rows = frames.map(f => { const btnVals = f.buttons.map(b => b.value); buyisela [f.t, ...btnVals, ...f.axes].join(","); }).joyina("\n");

// Landa njenge-CSV downloadFile("gamepad-log.csv", unhlokweni + imigqa, "umbhalo/csv"); });

I-CSV ihlakaniphile ekuhlaziyweni kwedatha ngoba ivula ngokuqondile ku-Excel noma ku-Google AmaSpredishithi, ikuvumela ukuthi udale amashadi, uhlunge idatha, noma ubone amaphethini ngokubonakalayo. Manje njengoba izinkinobho zokuthekelisa sezingenile, uzobona izinketho ezimbili ezintsha kuphaneli: Khipha i-JSON kanye nokuthekelisa i-CSV. I-JSON yinhle uma ufuna ukujikijela ilogi eluhlaza kumathuluzi akho e-dev noma uzulazule esakhiweni. I-CSV, ngakolunye uhlangothi, ivula iqonde ku-Excel noma ku-Google AmaSpredishithi ukuze ukwazi ukushadi, ukuhlunga, noma ukuqhathanisa okokufaka. Umfanekiso olandelayo ubonisa ukuthi iphaneli libukeka kanjani ngalezo zilawuli ezengeziwe.

3. Isifinyezo System Kwesinye isikhathi awudingi ukurekhodwa okugcwele, "isithombe-skrini" esisheshayo sezifunda zokufaka. Kulapho inkinobho ethi Thatha Isifinyezo isiza khona.

Futhi iJavaScript:

// =================================== // THATHA ISIFINYEZO // ===================================

document.getElementById("snapshot").addEventListener("chofoza", () => { // Thola wonke ama-gamepad axhunyiwe const pads = navigator.getGamepads(); const activePads = [];

// Vula futhi uthwebule isimo se-gamepad ngayinye exhunyiwe okwe (const gp of pads) { uma (!gp) kuqhubeka; // Yeqa izikhala ezingenalutho

activePads.push({ id: gp.id, // Controller name/model isitembu sesikhathi: performance.now(), izinkinobho: gp.buttons.map(b => ({ icindezelwe: b.cindezelwe, inani: b.value })), izimbazo: [...] }); }

// Hlola ukuthi akhona yini amaphedi omdlalo atholakele uma (!activePads.length) { console.warn("Awekho amaphedi egeyimu axhunywe isifinyezo."); isixwayiso("Asikho isilawuli esitholiwe!"); buyela; }

// Ngena futhi wazise umsebenzisi console.log("Isifinyezo:", activePads); isixwayiso(Isifinyezo sithathiwe! Kuthathwe isilawuli(izi)${activePads.length}); });

Izifinyezo zimisa isimo esiqondile sesilawuli sakho ngesikhathi esisodwa. 4. Ghost Input Dlala kabusha Manje okujabulisayo: i-ghost input replay. Lokhu kuthatha ilogi bese kuyibuyisela emuva ngokubukeka sengathi umdlali we-phantom usebenzisa isilawuli.

I-JavaScript yokudlala futhi: // =================================== // I-GHOST REPLAY // ===================================

document.getElementById("replay").addEventListener("chofoza", () => { // Qinisekisa ukuthi sinokurekhodwa okumele sikudlale futhi uma (!frames.length) { isixwayiso("Akukho ukurekhoda okuzodlalwa futhi!"); buyela; }

console.log("Iqala ukudlala kabusha isipoki...");

// Landelela isikhathi sokudlala okuvunyelanisiwe let startTime = performance.now(); vumela i-frameIndex = 0;

// Dlala kabusha iluphu yopopayi umsebenzi step() { const manje = performance.now(); Const elapsed = manje - startTime;

// Cubungula zonke izinhlaka okufanele ngabe zenzekile manje ngenkathi (i-frameIndex < frames.length && frames[frameIndex].t <= idlulile) { const frame = ozimele[frameIndex];

// Vuselela i-UI ngenkinobho eqoshiwe ithi btnA.classList.toggle("active", frame.buttons[0].cindezelwe); btnB.classList.toggle("active", frame.buttons[1].cindezelwe); btnX.classList.toggle("active", frame.buttons[2].cindezelwe);

// Buyekeza isibonisi sesimo vumela icindezelwe = []; frame.buttons.forEach((btn, i) => { uma (btn.cindezelwe) icindezelwe.push("Inkinobho" + i); }); uma (cindezelwe.ubude > 0) { status.textContent = "Ghost:" + pressed.join(", "); }

frameIndex++; }

// Qhubeka iluphu uma kukhona amafreyimu amaningi uma (i-frameIndex < frames.length) { requestAnimationFrame(isinyathelo); } okunye { console.log("Dlala kabushakuqediwe."); status.textContent = "Ukudlala kabusha kuqedile"; } }

// Qala ukudlala kabusha isinyathelo(); });

Ukwenza ukulungisa iphutha kusebenze kancane, ngengeze ukudlala kabusha kwesipoki. Uma usuqophe iseshini, ungashaya futhi futhi ubuke i-UI ilingisa, cishe njengokungathi umdlali we-phantom egijima iphedi. Inkinobho entsha ye-Replay Ghost ivela kuphaneli yalokhu.

Shaya Rekhoda, hlukumeza isilawuli kancane, yima, bese udlala futhi. I-UI ivele inanela konke okwenzile, njengesipoki esilandela okokufaka kwakho. Kungani uzihlupha ngalokhu okungeziwe?

Ukurekhoda/ukuthekelisa kwenza kube lula kubahloli ukukhombisa lokho okwenzekile. Izifinyezo ziba yiqhwa isikhashana ngesikhathi, ziwusizo kakhulu uma ujaha izimbungulu eziyinqaba. I-Ghost replay ilungele okokufundisa, ukuhlola ukufinyeleleka, noma ukuqhathanisa ukusetha kokulawula eceleni.

Kuleli qophelo, akuseyona nje idemo ehlanzekile, kodwa into ongayisebenzisa ngempela. I-Real-World Use Cases Manje sinalesi sici sokulungisa iphutha esingenza okuningi. Ibonisa okokufaka okubukhoma, irekhoda amalogi, iwathumele kwamanye amazwe, futhi iphinde idlale izinto. Kodwa umbuzo wangempela uwukuthi: ubani ngempela obakhathalelayo? Lokhu kuwusizo kubani? Umdlalo Onjiniyela Izilawuli ziyingxenye yomsebenzi, kodwa ziyawasusa amaphutha? Ngokuvamile ubuhlungu. Cabanga ukuthi uhlola inhlanganisela yegeyimu yokulwa, njengokuthi ↓ → + punch. Esikhundleni sokuthandaza, uyicindezele kabili ngendlela efanayo, uyiqophe kanye, bese uyidlala kabusha. Kwenziwe. Noma ushintshanisa amalogi e-JSON nozakwenu ukuze uhlole ukuthi ingabe ikhodi yakho yabadlali abaningi isabela ngendlela efanayo emshinini wabo. Kukhulu lokho. Abasebenzi bokufinyelela Lokhu kuseduze kwenhliziyo yami. Akuwona wonke umuntu odlala ngesilawuli "esijwayelekile". Izilawuli eziguquguqukayo zikhipha amasignali ayinqaba ngezinye izikhathi. Ngaleli thuluzi, ungabona kahle ukuthi kwenzekani. Othisha, abacwaningi, noma ubani. Bangakwazi ukubamba izingodo, baziqhathanise, noma baphinde badlale okokufaka ngapha nangapha. Ngokungazelelwe, izinto ezingabonakali ziba sobala. Ukuhlolwa Kokuqinisekisa Ikhwalithi Abahloli bavamise ukubhala amanothi afana nokuthi “Ngiphihlize izinkinobho lapha futhi kwaphuka.” Akusizi kakhulu. Manje? Bangakwazi ukuthwebula umshini wokunyathelisa oqondile, bakhiphe ilogi, futhi bayithumele. Akukho ukuqagela. Othisha Uma wenza okokufundisa noma amavidiyo e-YouTube, ukudlala kabusha okuyisipoki kuyigolide. Ungasho ngokuqondile ukuthi, "Nakhu engikwenzile ngesilawuli," kuyilapho i-UI ibonisa ukuthi kuyenzeka. Wenza izincazelo zicace kakhudlwana. Ngaphandle Kwemidlalo Futhi yebo, lokhu akukhona nje ngemidlalo. Abantu basebenzise izilawuli kumarobhothi, amaphrojekthi wobuciko, nezindawo zokufinyeleleka. Inkinga efanayo ngaso sonke isikhathi: empeleni sibonani isiphequluli? Ngalokhu, awudingi ukuqagela. Isiphetho Ukususa iphutha kokufaka kwesilawuli bekulokhu kuzwakala njengokungaboni kahle. Ngokungafani ne-DOM noma i-CSS, asikho isihloli esakhelwe ngaphakathi samaphedi omdlalo; izinombolo ezingavuthiwe ku-console, ezilahleka kalula emsindweni. Ngemigqa engamakhulu ambalwa ye-HTML, CSS, ne-JavaScript, sakhe okuthile okuhlukile:

I-debugger ebonakalayo eyenza okokufaka okungabonakali kubonakale. Isistimu ye-CSS enengqimba egcina i-UI ihlanzekile futhi ilungiseka. Isethi yezithuthukisi (ukurekhoda, ukuthumela, izifinyezo, ukudlala kabusha kwesipoki) eziphakamisa ukusuka kudemo kuya ethuluzini lonjiniyela.

Le phrojekthi ibonisa ukuthi ungahamba ibanga elingakanani ngokuxuba amandla e-Web Platform ngobuciko obuncane ku-CSS Cascade Layers. Ithuluzi engisanda kulichaza lilonke liwumthombo ovulekile. Ungakwazi ukuhlanganisa i-repo ye-GitHub futhi uzame yona. Kodwa okubaluleke nakakhulu, ungazenza ngokwakho. Engeza izendlalelo zakho. Yakha eyakho i-logic ye-replay. Ihlanganise ne-prototype yegeyimu yakho. Noma ngiyisebenzise ngezindlela engingazicabangi. Okokufundisa, ukufinyeleleka, noma ukuhlaziywa kwedatha. Ekupheleni kosuku, lokhu akukhona nje ukulungisa iphutha le-gamepads. Imayelana nokukhanyisa okokufaka okufihliwe, kanye nokunika abathuthukisi ukuzethemba ekusebenzeni ngezingxenyekazi zekhompyutha iwebhu namanje engakazamukeli ngokugcwele. Ngakho-ke, xhuma isilawuli sakho, vula umhleli wakho, bese uqala ukuhlola. Ungase umangale ukuthi isiphequluli sakho kanye ne-CSS yakho ingakufezani ngempela.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free