


パーティクルを描画するための数式と組み合わせた HTML5 での Canvas の使用に関するチュートリアル motion_html5 チュートリアル スキル
最近、Web ページを作成し、HTML5 を学習する過程で作成したデモをいくつか並べてコレクションを作成したいと考えています。しかし、Web ページを作成してすべてのデモを 1 つに並べるのはあまりにも醜すぎます。 1つずつ。 Canvas を学習したので、ブラウザをいじって小さなオープニング アニメーションを作成してみようと思いました。
オープニングアニメーションの効果を少し考えた結果、パーティクルの方が楽しいと思い、パーティクルを使用することにしました。私が最初に書いた技術的なブログ投稿は、テキストと画像のパーティクル化に関するものであったことを今でも覚えています。テキストと画像のパーティクル化 その時は、線形モーションのみを実行し、少し 3D 効果を追加しました。練習方法はシンプルです。そこで、このオープニング アニメーションをよりダイナミックなものにしたいと思いました。
まずデモにアクセスしてください: http://2.axescanvas.sinaapp.com/demoHome/index.html
効果は直線運動よりも動的ですか?それはとても簡単です。このブログ投稿のタイトルを忘れないでください。ちょっとした公式ですが、とても楽しいものです。このような効果を実現するために必要なのは中学校です。 。あるいは高校の物理の知識、加速運動と減速運動の公式。つまり、それは実際には小さなドロップ式です。元の投稿者は、仕事では使用しないかもしれませんが、クールなものをいじるのが好きで、その楽しさは本当に魅力的です。さらに、これを行うことで、プログラミング的思考スキルを強化することもできます。
早速、本題に入りましょう。原理を簡単に説明しましょう~~~
パーティクル モーションのコア コードは次のとおりです:
- update:function(time){
- this.x = this.vx*time;
- this.y = this.vy*time;
- if(!this.globleDown&&this.y>0){
- var yc = this.toy - this.y;
- var xc = this.tox - this.x;
- this.jl = Math.sqrt(xc*xc yc*yc);
- var za = 20;
- var ax = za*(xc/this.jl),
- ay = za*(yc/this.jl),
- vx = (this.vx ax*time)*0.97,
- vy = (this.vy ay*time)*0.97;
- this.vx = vx;
- this.vy = vy;
- }else {
- var 重力 = 9.8;
- var vy = this.vy 重力*時間;
- if(this.y>canvas.height){
- vy = -vy*0.7;
- }
- this.vy =
- }、
- var Dot = function(x,y,vx,vy,tox,toy,color){
- これ.x=x;
- これ.y=y; この
- .vx=vx; これ
- .vy=vy; これ
- .nextox = tox; これ .nextoy = おもちゃ;
- この.color = color;
- this.visible = true ;
- this.globleDown = false;
- this.setEnd(tox, おもちゃ); }
- setEnd:function(tox, toy){
- .y; .x;
- }、
-
x と y は粒子の位置、vx は粒子の水平方向の速度、vy は粒子の垂直方向の速度です。 nexttox などを知っているかどうかは関係ありません。これらは単なる一時的な変数です。 。 tox および toy はパーティクルの宛先位置です。
まず、すべてのパーティクルに目的地を与えます。これについては以下で説明します。つまり、粒子をその場所に到達させたい場合は、変数 za を加速度として定義し、さらにテストを行うことでおおよそのパラメーターを取得します。それはほぼ同じように感じます。 za は粒子と目的地の間の線の加速度であるため、この段落
では、粒子の位置と目的地の位置を通じて粒子の水平加速度と垂直加速度を計算できます。JavaScript コードコンテンツをクリップボードにコピーします- var ax = za*(xc/this.jl),
- ay = za*(yc/this.jl),
水平加速度と垂直加速度を取得した後、次のステップはさらに簡単です。水平速度と垂直速度の増分を直接計算し、それによって水平速度と垂直速度の値を変更します。
XML/HTML コードコンテンツをクリップボードにコピー- vx = (this.vx ax*time)*0.97,
- vy = (this.vy ay*time)*0.97;
速度を計算したら、パーティクルの位置を更新するだけです。
XML/HTML コードコンテンツをクリップボードにコピー- this.x = this.vx*time this.y = this.vy*time
これが運動の原理です、とても簡単ですね。
動きの原理について説明したので、次は上記のアニメーションの具体的な実装について説明します。アニメーションの初期化、オフスクリーン キャンバス上で目的の文字や絵を描画し、オフスクリーン キャンバスのピクセルを取得します。 getImageData メソッドによる画面キャンバス。次に、ループを使用してオフスクリーン キャンバス内の描画領域を見つけます。imageData のデータ値は rgba 配列であるため、最後の値、つまり透明度が 128 より大きい場合、その領域が描画されたことを意味すると判断します。描かれた。次に、領域の xy 値を取得します。パーティクル オブジェクトが多すぎるとページ ラグが発生するのを防ぐため、ピクセルを取得するたびにパーティクルの数を制限し、x 値と y 値を 2 ずつ増やします。粒子。
XML/HTML コードコンテンツをクリップボードにコピー- this.osCanvas = ドキュメント.createElement("canvas");
- var osCtx = this.osCanvas.getContext("2d");
- this.osCanvas.width = 1000;
- this.osCanvas.height = 150;
- osCtx.textAlign = "センター";
- osCtx.textBaseline = "中";
- osCtx.font="70px 微软雅黑,黑体 bold";
- osCtx.fillStyle = "#1D181F"
- osCtx.fillText("ようこそ", this.osCanvas.width/2, this.osCanvas.height/2-40);
- osCtx.fillText("wAxesのHOMEへ", this.osCanvas.width/2, this.osCanvas.height/2 40);
- var bigImageData = osCtx.getImageData(0,0,this.osCanvas.width,this.osCanvas 。身長);
- ドット = [];
- for(var x=0;xbigImageData.width;x =2){
- for(var y=0;ybigImageData.height;y =2){
- var i = (y*bigImageData.width x)*4;
- if(bigImageData.data[i 3]>128){
- var ドット = 新しい ドット(
- Math.random()>0.5?Math.random()*20 10:Math.random()*20 Canvas.width-40,
- -Math.random()*canvas.height*2,
- 0、
- 0、
- x (canvas.width/2-this.osCanvas.width/2),
- y (canvas.height/2-this.osCanvas.height/2),
- 「rgba(" bigImageData.data[i] "," bigImageData.data[i 1] "," bigImageData.data[i 2] ",1)」
- );
- dot.setEnd(canvas.width/2,canvas.height/2)
- dots.push(dot);
- }
- }
- }
循環によってパーティクルの位置 xy 値を取得した後、その位置がパーティクルの目的となります。その後、アニメーションが開始され、文字画像のパーティクル化の効果が得られます。

Web標準とテクノロジーは、これまでにHTML4、CSS2、および単純なJavaScriptから進化し、重要な開発を受けてきました。 1)HTML5は、CanvasやWebstorageなどのAPIを導入し、Webアプリケーションの複雑さと互換性を高めます。 2)CSS3はアニメーション関数とトランジション関数を追加して、ページをより効果的にします。 3)JavaScriptは、矢印関数やクラスなど、node.jsおよびES6の最新の構文を通じて開発効率とコードの読みやすさを向上させます。これらの変更により、パフォーマンスの最適化とWebアプリケーションのベストプラクティスの開発が促進されました。

H5はHTML5の略語だけでなく、より広い最新のWeb開発テクノロジーエコシステムを表しています。1。H5にはHTML5、CSS3、JavaScript、および関連するAPIおよびテクノロジーが含まれます。 2.より豊かでインタラクティブでスムーズなユーザーエクスペリエンスを提供し、複数のデバイスでシームレスに実行できます。 3. H5テクノロジースタックを使用して、レスポンシブWebページと複雑なインタラクティブ機能を作成できます。

H5とHTML5は、同じこと、つまりHTML5を参照します。 HTML5はHTMLの5番目のバージョンであり、セマンティックタグ、マルチメディアサポート、キャンバスとグラフィックス、オフラインストレージ、ローカルストレージなどの新しい機能をもたらし、Webページの表現力と互換性を向上させます。

H5ReferStoHtml5、apivotaltechnologyinwebdevelopment.1)html5introduceSnewelementsandapisforrich、dynamicwebapplications.2)Itupp ortsmultimediawithoutplugins、endancingurexperiencecrossdevices.3)semanticelementsimprovecontentstructurendseo.4)H5'srespo

H5開発で習得する必要があるツールとフレームワークには、Vue.JS、React、Webpackが含まれます。 1.Vue.jsは、ユーザーインターフェイスの構築に適しており、コンポーネント開発をサポートします。 2.複雑なアプリケーションに適した仮想DOMを介したページレンダリングを最適化します。 3.Webpackは、モジュールのパッケージングに使用され、リソースの読み込みを最適化します。

html5hassificlytransformdedwebdeveverment byintroducingsingingelements、endincemultimediasupport、およびrequrovingperformance.1)itmadewebsitesmoreaccessibleandseo-frendlywithsemantelementslike、and.2)

H5は、セマンティック要素とARIA属性を介して、WebページのアクセシビリティとSEO効果を改善します。 1.使用などを使用して、コンテンツ構造を整理し、SEOを改善します。 2。ARIA-LabelなどのARIA属性はアクセシビリティを強化し、支援技術ユーザーはWebページをスムーズに使用できます。

「H5」と「HTML5」はほとんどの場合同じですが、特定の特定のシナリオでは異なる意味を持つ可能性があります。 1。「HTML5」は、新しいタグとAPIを含むW3C定義標準です。 2。 "H5"は通常、HTML5の略語ですが、モバイル開発では、HTML5に基づくフレームワークを参照する場合があります。これらの違いを理解することは、プロジェクトでこれらの用語を正確に使用するのに役立ちます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
