Html
V tomto návodu se podíváme na vytvoření objektu plátna, kreslení jednoduchých vizuálů na něm a animovat tyto vizuály.
Canvas je zásadně prvkem HTML, který umístíte na stránce, měřítko pro pokrytí oblasti, kterou chcete, a pak můžete čerpat. Chcete-li začít, musíme vytvořit jednoduchou stránku s objektem plátna.
Doctype HTML & GT;
& lt; html & gt;
& lt; hlava & gt;
& lt, meta charset = 'utf-8' / gt;
& lt, titul & gt; html canvas demo & lt; / titul & gt;
& lt, link rel = 'styl styl' href = 'custom.css' / gt;
& lt; scénář src = "canvas.js" & gt; & lt; / script & gt;
& lt; / hlava & gt;
& lt; tělo & gt;
& lt; canvas id = "html-canvas" & gt;
& lt; / tělo & gt;
& lt; / html & gt;
Chcete-li nám dát spoustu místa hrát, chceme, aby naše plátno naplní celou obrazovku. Dáme to také černé pozadí, takže víte, že je to určitě tam. To může být skutečně trochu složitější, aniž by skončil s posuvníky nebo bílým prostorem. Níže uvedený CS by se měl postarat o to.
plátno {
Výška: 100VH;
šířka: 100vw;
Pozice: absolutní;
Barva pozadí: # 000000;
}
marže: 0;
Polstrování: 0;
}
Dále potřebujeme přidat nějaký JavaScript, který nastavit plátno připravené k použití. Budeme mít zavěšení události DomContentLloaded, aby se zajistilo, že skript se nepokouší spustit před provedením prvku plátna. Budeme také nastavit rozlišení plátna tak, aby odpovídalo oblasti, kterou pokrývá - jinak se plátno zmiře bez zvyšování rozlišení, což vede k rozmazané nebo pixelované grafice.
Document.addeventListener ("DomContentLoaded", funkce () {
var canvas = dokument.getElementbyid ("html-canvas");
var kruhy = [];
var poloměru = 50;
canvas.width = canvas.Clientwidth;
canvas.Height = plátno.ClientHeight;
var kontext = canvas.getContext ("2d");
}, false);
Všimnete si, že v posledním kroku jsme si přálili něco nazvaného "kontext". To je, jak nastane výkres na plátně. Je nejjednodušší myslet na kontext jako štětec, který můžeme použít k čerpání různých linií, oblouků a základních tvarů.
To, co nyní můžeme udělat, je dát náš kontext, který bude používat psaní funkce drawcircle, která vytvoří oblouk 360 stupňů - to je kruh. Děláme to tím, že řeknete kontextu definovat oblouk, nastavit styly pro hranici a vyplnění, pak vzrůstá funkce výplň () a zdvih (), abyste mohli skutečně nakreslit tvar (zdvih přitahuje ohraničení).
Funkční drawcircle (X, Y, Radius, Border, Border_Colour, Fill_Colour)
{
kontext.beginhpath ();
kontext.Arc (x, y, poloměr, 0,2 * math.pi);
kontext.strokestyle = border_colour;
kontext.fillStyle = fill_colour;
kontext.Linewidth = hranice;
kontext.ClosePath ();
kontext.Fill ();
kontext.stroke ();
}
Skvělý. Máme funkci, která může kroužit kruhy. Nyní potřebujeme něco k čerpání. Rozšiřme kód z kroku 3 a vytvořte pole popisující kruh objekty. Bude ukládat koordináty X a Y X a Y, barvu a hodnotu směru.
Vytváříme tuto strukturu pole spíše než jen kreslicí kruhy hned, protože nám umožní oživit kruhy tím, že znovu vypracují obsah pole později.
pro (var i = 0; i
V posledním kroku jsme použili několik nových funkcí, které ještě nebyly definovány. Začněme s randomcolour (). To bude užitná funkce, která vrátí randomizovaný hexadecimální řetězec představující barvu. Je poměrně jednoduché k realizaci.
Funkce RandomColour () {
var chars = '0123456789Abcdef';
var color = '#';
pro (var i = 0; i
Teď jsme připraveni přinést věci společně implementací funkce Draw (). To bude dělat dvě klíčové věci. Za prvé vymaže plátno pomocí funkce ClearRect (). To bude důležité, když přijdeme na oživení našich kruhů, abyste se vyhnuli kreslení nového rámu přes vrchol staré. Poté se iteruje přes pole, které jsme postavili a nakreslili každý kruh na plátně za sebou pomocí naší funkce DrawCircle.
Funkce Draw () {
kontext.Clearrect (0, 0, canvas.width, plátno.Height);
Circles.foreach (funkce (kruh) {
Drawcircle (Circle.x, Circle.y, poloměr, 5, Circle.Colour, Circle.Colour);
}); }
Pokud to zkusíte teď, uvidíte některé statické kruhy namalované na stránce. Ale chceme je oživit. Chcete-li to udělat, musíme rozšířit funkci Draw () v několika způsoby. Za prvé, použijeme hodnotu Circle.direction, kterou jsme tlačili na pole pro výpočet změn v poloze X a Y pro kruh.
Dále použijeme vestavěnou funkci s názvem RequestanimationFrame, která rekurzivně volá funkci Draw (). ReceptSanimationFrame umožňuje prohlížeči rozhodnout, kdy znovu volat funkci, vyhnout se potřebu implementovat časovače pro výpočet kdy pro kreslení dalšího snímku.
Funkce Draw () {
kontext.Clearrect (0, 0, canvas.width, plátno.Height);
Circles.foreach (funkce (kruh) {
circle.x = circle.x + math.cos (kruh.direction);
circle.y = circle.y + math.sin (kruh.direction);
Drawcircle (Circle.x, Circle.y, poloměr, 5, Circle.Colour, Circle.Colour);
});
RequestanimationFrame (remíza);
}
Je tu ještě jedna věc stále chybí. Kruhy nyní zmizí z okraje obrazovky. Udělejme, aby se odrazili. Chcete-li to provést, přidáme volání na novou funkci, odraz (kruh), v rámci Formuádní smyčky funkce Draw ().
Funkce odrazu bude určovat, když je kruh na okraji obrazovky a odpovídajícím způsobem upravte jeho hodnotu.
Funkce Bounce (kruh) {
if ((((circle.x - poloměr) & lt; 0) || ((circle.y - poloměr) <0) || (circle.x + poloměr) & gt; canvas.width) || ((kruh. Y + RADIUS) & gt; canvas.height) {
kruh.direction + = (math.pi / 2);
}
if (kruh.direction & gt; (2 * math.pi)) {
kruh.direction - = (2 * math.pi);
}
}
Tento článek se původně objevil Web Designer. Vydání 266. Kupte si to tady.
Související články:
(Image Credit: budoucnost) V současném webu a aplikaci design jsou často časy, kdy interakce neotevře zcela novo..
S velikostí 3D průmyslu Rostoucí rok v roce, je to důležitější než kdy jindy, aby se ujistil, že vaše práce vyniká z davu. Bez ohledu na úroveň dovedností jako 3D umělec, exi..
Rámy, jako je reagovat, posílat pouze JavaScript na klienty, který se pak používá k vytvoření prvků na obrazovce. HTML, ..
Chcete-li nakreslit ruce, musíte se podívat kolem složitosti anatomie rukou a rozpoznat jednoduchá pravidla, která vám pomo..
Tento obraz Brunel's Great Eastern Paní z roku 1858 je na trvalém zobrazení na novém muzeu ve výši 7 milionů liber v Brist..
Při vybavení vašeho 3D modely Použití kostí může být velmi účinná, někdy tato metoda prostě není vhodná - a výrazy obličeje je jedním z těchto..
Jsem pevný věřící, že byste neměli čistě spoléhat na software, abyste mohli dělat práci pro vás. Dobrý umělec by m..
Posadil jsem se, hrál nějakou hudbu, stmívali světla a otevřela svůj notebook. Měl jsem spoustu. Ve snaze předvolání in..