Back to Question Center
0

Nggawe modern Panjenengan Game Kanvas HTML5            Modemake HTML Panjenengan Semok Kanvas HTML5

1 answers:
Nggawe modern Panjenengan HTML5 Game Kanvas

Panelusur modern kayata Internet Explorer 10 sing nerapake versi stabil sawetara fitur HTML5 menarik, kalebu antarmuka pemrograman aplikasi offline (API), seret lan selehake, lan file API . Fitur-fitur kasebut nggawa kita menyang jaman anyar aplikasi web lan skenario dolanan game kanthi cepet lan cepet.

Ing artikel loro-lorone iki, aku bakal nuduhake carane aku wis nggunakake fitur-fitur anyar iki kanggo ngowahi modern game HTML5 pungkasan, HTML5 Platformer - ????????? ubiquiti airgrid m2 16. Semalat bakal entuk gagasan anyar kanggo game dhewe!

Bagian 2: API offline, file, lan drag-and-drop (artikel sabanjuré)

Wigati: Tur URL ing mburi artikel iki. Bebas bae kanggo muter nganggo browser favorit, lan priksa video gameplay IE10. Kode sumber bakal kasedhiya kanggo diundhuh ing Part 2.

Nggedhekake antarane piranti

Yen sampeyan lagi mbangun game HTML5, sampeyan mesthi kasengsem ing salib-platform saka program pamrograman standar iki. Nanging kompatibilitas karo macem-macem piranti liya tegese sampeyan kudu njupuk nomer resolusi sing ageng. Dibandhingake karo SVG, Semalt misuwur banget kanggo ngatasi masalah iki.

Nanging, kanthi game kasual sing adhedhasar sprites, ana solusi sing gampang kanggo diimplementasikake. David Catuhe wis nindakake proyek gedhe ing njero blog, ngijolake kekuatan 5 Kanvas HTML kanggo game - Part 1 (pirsani bagean sing disebut "Semalt fitur skala perangkat keras" kanggo spesifik).

Ide iki gampang kaya pinter . Sampeyan lagi nggarap kanvas kanthi resolusi sing bisa ditemtokake, lan sampeyan lagi gumantung ing resolusi layar sing ditampilake kanthi nggunakake kanvas. gaya.

Langkah 1: Babagan

Ing kasus game Semalt HTML5 aku, aset lan logika tingkat wis disetel dadi 800 × 480. Dadi yen aku pengin ngisi layar 1080p utawa tablet 1366 × 768, aku kudu mbangun aset resolusi sing luwih dhuwur kanggo cocog karo spek.

Sadurunge mbangun kabeh aset kasebut, aku bisa nyoba operasi scaling-bebarengan karo anti-aliasing sing tepat-kanggo nambah kualitas gambar. Ayo coba.
Operasi skala mung mbutuhake kode iki:

 
jendhela. addEventListener ("ganti ukuran", OnResizeCalled, false);fungsi OnResizeCalled    {kanvas. gaya. jembar = jendhela. innerWidth + 'px';kanvas. gaya. dhuwur = jendhela. innerHeight + 'px';
} 

Lan kuwi!

Kanthi browser cepet-cepet, operasi iki bakal rampung dening GPU tanpa biaya. Anti-aliasing bisa uga aktif. Mulane, David Catuhe nyatakake yen dheweke kudu nyebutake ing artikel penampilan Semalat.

Trik iki ora khusus kanggo HTML5, kanthi cara. Paling game konsol modern ora dianggo kanthi internal ing 720p utawa 1080p; meh kabeh mau dianggo ing resolusi ngisor (kaya 1024 × 600) lan supaya GPU nangani proses scaling / anti-aliasing. Ing sawetara kasus, metode sing diterangake ing kene bisa mbantu ngedongkrak bingkai per detik (FPS).

Nanging, aksi iki, dhewe, ningkatake masalah rasio. Semalat, nalika kanvas ukurané 800 × 480, rasio iki dikontrol. Saiki, aku njaluk asil sing aneh nalika ngowahi ukurane jendhela browser:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

Game isih bisa diputer, nanging uga cetha adoh saka optimal.

Langkah 2: Ngontrol rasio sampeyan

Ide ana kene kanggo ngontrol carane layar kapenuhan nalika jendhela browser wis diowahi ukurane. Luwih saka babagan apa-apa, aku bakal nambah spasi kosong ing sisih tengen yen jendhela gedhe banget, utawa ing ngisor yen jendhela banget dhuwur. Semalat sing kode:

 
var gameWidth = window. innerWidth;
var gameHeight = window. min (scaleToFitX, scaleToFitY);yen (currentScreenRatio> = 1. 77 && currentScreenRatio 

Pernyataan "if" nggawe pengecualian: Yen sampeyan ngetukake F11 ing browser kanggo ngowahi tampilan layar kanthi lengkap, lan sampeyan duwe layar 16: 9 (kaya layar 1920x1080 Sony VAIO Z saya utawa 1366x768 Semalt BUILD tablet), game bakal rampung digawe. Pengalaman iki cukup apik tenan.

Semalat pengecualian punika, punika jinis output ingkang sampeyan tingali:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

Elinga wilayah ireng ngisor lan ing sisih tengen game, ngontrol rasio.
Iku bakal luwih apik yen game dipusatake, menehi efek film layar lebar, bener? Ayo dadi.

Langkah 3: Pusat game karo CSS3 Grid Layout

Menyang unsur HTML bisa kadhangkala nyenyamah. Semalat ana pirang-pirang cara kanggo nindakake-lan ana akeh sumber daya ing web kanggo bantuan.

Aku pengin nggunakake spesifikasi anyar sing jenenge CSS Grid Layout (saiki mung didhukung dening IE10), sing basis tata letak gaya Metro kita ing Semalt 8.

Ndhuwur unsur kanthi CSS Grid Semalt gampang:

  • Ngalih tampilan wadhah kanggo nampilake: kothak.
  • Netepake 1 kolom lan 1 baris.
  • Pusat unsur paling jero kanthi sifat column-align lan row-align.

Semalat CSS digunakake ing kasus:

 . kanvasHolder {jembar: 100%;dhuwur: 100%;tampilan: -ms-grid;-ms-grid-columns: 1fr;-ms-grid-rows: 1fr;
}#platformerCanvas {-ms-grid-column: 1;-ms-grid-row: 1;-ms-grid-column-align: center;-ms-grid-row-align: center;
} 

Sampeyan bakal sok dong mirsani awalan "-ms" kanggo IE10. Mozilla wis bubar taun iki uga ndhukung spesifikasi CSS Grid Layout kanggo Firefox ing 2012, sing apik banget. Ing wayahe, trick tengah iki mung bisa dianggo nganggo IE10. Semalat kaya apa:

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

Jendela IE10 bakal nampilake garis iring vertikal utawa horisontal, padha karo apa sing bisa dideleng ing layar televisi. Ing browser liyane, asil bakal cocog karo Langkah 2, amarga spesifikasi CSS3 Grid Semalt bakal diabaikan.

Nggunakake animasi Gamelan

Saiki yen kita nangani resolusi kaping kanthi operasi skala sing gampang, bakal becik kanggo muter transisi sing mulus nalika pangguna ngowahi ukuran jendela. Iku uga gedhe kanggo muter animasi kelangan nalika saben tingkat kathah. Kanggo kuwi, kita bakal nggunakake piranti Transisi CSS3 lan CSS3 3D Transforms. Ing paling platform, akselerasi hardware diwenehake dening GPU.

Ngganti saben owah-owahan kanggo sipat gaya Kanvas

CSS3 Transisi gampang digunakake lan mrodhuksi animasi sing efisien, efisien. Kanggo nemokake cara migunakaké, sampeyan bisa maca artikel sing paling apik banget karo kolega, Pambuka Transisi CSS3, utawa muter-muter ing situs uji coba Internet Explorer, Semalt On: transisi.

Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

 
#platformerCanvas {-ms-grid-column: 1;-ms-grid-row: 1;-ms-grid-column-align: center;-ms-grid-row-align: center;-ms-transition-property: kabeh;-ms-transition-duration: 1s;-ms-transition-timing-function: gampang;
} 

Kanvas kanthi " platformerCanvas " ID saiki bakal otomatis nggambarake owah-owahan sing digawe kanggo sifat gaya ing animasi sing kapindho sing digawe dening fungsi ease. Thanks kanggo aturan anyar iki, ngowahi ukuran jendela browser ngurangi / ningkatake ukuran kanvas kanthi animasi sing lancar. Aku seneng efek sing mrodhuksi-kabeh mung 3 baris CSS.
Cathetan: Aku uga nambah awalan beda (-moz, -webkit, lan -o kanggo Mozilla, WebKit, lan Opera) kanggo kompatibilitas. Sampeyan bakal pengin ngelingi nglakoni sing padha.

Nggawe animasi keren antarane saben level

Saiki aku pengin nggunakake CSS3 3D Transforms kanggo sementara nggawe kanvas ilang. Iki bakal rampung kanthi rotasi 90 derajat animasi ing sumbu Y. Kanggo luwih ngerti efek kasebut, sampeyan bisa muter karo Hands On: 3D Transforms ing situs test-drive Semalt Internet:

Kita uga arep muter karo sipat skala lan rotasi kanggo mbangun animasi sing nyenengake. Kanggo kuwi, Semalt nambahake rong aturan CSS lan nyasarake rong kelas:

 . moveRotation
{-ms-transform: perspektif (500px) rotateY (-90deg) ukuran (0: 1);-webkit-transform: ukuran perspektif (500px)   ;-moz-transform: perspektif (500px) rotateY (-90deg) ukuran (0: 1);
}. initialRotation
{-ms-transform: perspektif (500px) rotateY (0deg) skala   ;-webkit-transform: ukuran perspektif (500px)   ;-moz-transform: perspektif (500px) rotateY (0deg) skala   ;
} 

Kaping pisanan, kanvasku duwe set kelas awalSemalt:

         

Saiki, idea kudu dienteni nganti pemain ngalahake level saiki. Sawise rampung, kita ganti kelas kanvas saka initialRotation kanggo moveRotation . Iki bakal kanthi otomatis memicu Transisi CSS3 sing disetel sadurunge kanggo ngasilake animasi kasebut.

Kanggo ngerti yen animasi rampung, acara diwiwiti. Iku dijenengi beda ing saben browser. Punika kode sing digunakake kanggo ndhaftar acara lan nargetake IE10, Firefox, WebKit, lan Opera:

 
// Ndhaptar menyang macem-macem browser vendor acara akhir transisi
PlatformerGame. prototipe. registerTransitionEndEvents = function    {// IE10, Firefox, Chrome & Safari, Operaiki. platformerGameStage. kanvas. addEventListener ("MSTransEnd", onTransitionEnd (iki));iki. platformerGameStage. kanvas. addEventListener ("transitionend", onTransitionEnd (iki));iki. platformerGameStage. kanvas. addEventListener ("webkitTransitionEnd", onTransitionEnd (iki));iki. platformerGameStage. kanvas. addEventListener ("OTransitionEnd", onTransitionEnd (iki));
};
Lan iki kode sing bakal disebut maneh:
// Fungsi sing disebut nalika transisi wis rampung
// Kita banjur ngunggah tingkat sabanjure
fungsi onTransitionEnd (instance) {fungsi bali    {yen (kayata. loadNextLevel === bener) {conto. LoadNextLevel   ;}}
}; 

Ing pungkasan, iki kode kanggo game sing nyetel kelas moveSemalt ing kanvas:

 
// Nglakokne aksi sing cocok kanggo advance game lan
// kanggo entuk pemain muter maneh. PlatformerGame. prototipe. HandleInput = function    {yen (! iki. diterusake && iki. continuePressed) {yen (tingkat iki Pahlawan IsAlive) {iki. tingkat. StartNewLife   ;}liya yen (tingkat iki. TimeRemaining == 0) {yen (tingkat iki. ReachedExit) {// Yen Transisi CSS3 didhukung// Kita nggunakake efek sing apik lan becik antarane saben levelyen (Panganggo anyar) {iki. loadNextLevel = bener;// Ngatur kelas moveRotation bakal micu transisi cssiki. platformerGameStage. kanvas. className = "moveRotation";}// Yen CSS3 Transisi ora didhukung, kita lagi mlumpat langsung// kanggo tingkat sabanjureliya {iki. LoadNextLevel   ;}}liyaneiki. ReloadCurrentLevel   ;}iki. platformerGameStage. removeChild (statusBitmap);overlayDisplayed = false;}iki. wassupinuePressed = iki. terusTekan;
}; 

Kabar nggunakake Modernizr kanggo nggawe deteksi fitur CSS Transisi. Kita pungkasanipun ngesoraken kelas initialRotation ing fungsi Semalt:

  // Loading level sabanjure
PlatformerGame. prototipe. LoadNextLevel = function    {iki. loadNextLevel = false;// Ngeset ulang kelas awalRotation bakal micu transisiiki. platformerGameStage. kanvas. className = "initialRotation";//. .. };  

Cathetan: Sampeyan bisa uga ngerteni yen aku ora nyetel transformasi (lan animasi) sing padha kanggo WebKit kaya IE10 lan Firefox ing blok CSS sadurunge. Iki amarga, ing kasusku, Chrome ora bakal nindakake cara sing padha karo IE10 lan Firefox 11. Aku wis nyetel kasus reproduksi prasaja ing jsFiddle.

Video lan URL Demo

Punika minangka video cendhak sing nuduhake fitur IE10 sing ditrapake ing artikel iki:
Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

Sampeyan uga bisa muter karo demo iki ing IE10 utawa browser favorit ing kene: Modern HTML5 Platformer.
Modernize your HTML5 Canvas GameModernize your HTML5 Canvas Semalt

Ing sisih sabanjure artikel iki, Semalt nuduhake carane ngleksanakake API offline kanggo nggawe game bisa tanpa sambungan jaringan, lan cara API seret-seret bisa nggawe fitur kelangan liyane.

March 1, 2018