Inhaltsverzeichnis
1. Erstellen Sie Triggerbedingungen (Schaltflächen)
2. Erstellen Sie JS-Ereignisse ( Eigenschafteneinstellungen)
4. Bezier-Kurve zeichnen
Heim Web-Frontend H5-Tutorial Teilen Sie einen mit HTML5 erstellten Welleneffektcode

Teilen Sie einen mit HTML5 erstellten Welleneffektcode

May 05, 2017 pm 02:47 PM

Ich habe vorhin kurz über Canvas in HTML gesprochen. Dieses Mal habe ich den „Welleneffekt“ (aufsteigende Wasserwellen) basierend auf Canvas fertiggestellt.

(O(∩_∩)O hahaha~ Autor, ich kann mir diese Animation den ganzen Nachmittag ansehen)

Teilen Sie einen mit HTML5 erstellten Welleneffektcode

Rising Water Wave.gif

  • Animationsanalyse
    Zusammensetzung: Bezier-Kurve
    Leinwand: Leinwand
    Effekt: Wellenabebben (steigend, schwankend)
    Auslöser Bedingung: Klicken Sie auf die Schaltfläche

Teilen Sie einen mit HTML5 erstellten Welleneffektcode

Bezier-Kurve.gif


Algorithmusimplementierung Analyse: Ausgehend von der sin()Funktion gilt: Je größer sin(), desto größer die Fluktuation der Welle. Einfach ausgedrückt wird die Welleneffektanimation durch ständige Änderung des sin()-Werts realisiert

Lassen Sie uns beginnen:

1. Erstellen Sie Triggerbedingungen (Schaltflächen)

<button type="button"
        onclick="Beisizer()"//点击时触发JS事件
        onmouseover="bcd()"//鼠标经过时JS事件
        onmouseleave="out()"//鼠标离开时JS事件
        id="Anniu">确  &nbsp &nbsp  &nbsp  &nbsp  &nbsp  &nbsp &nbsp  &nbsp  &nbsp  &nbsp  定</button>
Nach dem Login kopieren

2. Erstellen Sie JS-Ereignisse ( Eigenschafteneinstellungen)

  <canvas id="Theback"></canvas>
Nach dem Login kopieren

4. Bezier-Kurve zeichnen

//获取画布
 var beisizer = document.getElementById("Theback");
 var ContenofBeisizer = beisizer.getContext("2d");

 //设置波浪海域(海浪宽度,高度)
 var beisizerwidth = beisizer.width;
 var beisizerheight = beisizer.height;
 var beisizerlinewidth = 2;

//曲线
 var sinX = 0;
 var sinY = beisizerheight/2.0;
//轴长
 var axisLenght = beisizerwidth;
//弧度宽度
 var waveWidth = 0.014;
//海浪高度
 var waveHeight = beisizerheight / 15.0;
ContenofBeisizer.lineWidth = beisizerlinewidth;
Nach dem Login kopieren

Dieser Code hat das Zeichnen einer
   var drawSin = function (xofspeed) {
        ContenofBeisizer.save();
        //存放贝塞尔曲线的各个点
        var points = [];
        ContenofBeisizer.beginPath();
        //创建贝塞尔点
        for (var x = sinX;x < sinX +axisLenght;x+=80/axisLenght){
           // var y = -Math.sin((sinX+x)*waveWidth);  测试请解开注释,注释下一行
            var y = -Math.sin((sinX+x)*waveWidth+xofspeed);

            // points.push([x,sinY + y * waveHeight]); 测试请解开注释,注释下一行
            points.push([x,rand+y*waveHeight]);      

          //  ContenofBeisizer.lineTo(x,sinY + y * waveHeight);  测试请解开注释,注释下一行
         ContenofBeisizer.lineTo(x,rand + y * waveHeight);   
        }

        ContenofBeisizer.lineTo(axisLenght,beisizerheight);
        ContenofBeisizer.lineTo(sinX,beisizerheight);
        ContenofBeisizer.lineTo(points[0][0],points[0][1]);
        ContenofBeisizer.stroke();
        ContenofBeisizer.restore();

       //贝塞尔曲线样式设置
        ContenofBeisizer.strokeStyle = "#3bc777";
        ContenofBeisizer.fillStyle = "#3bc777";
        ContenofBeisizer.fill();
    };
Nach dem Login kopieren
statischen
Bezier-Kurve abgeschlossen, die das kann durch Lösen gelöst werden. Öffnen Sie die folgende Anweisung und versuchen Sie, sie auszuführen, um den Effekt zu sehen.


var y = -Math.sin((sinX+x)*waveWidth);
points.push([x,rand+y*waveHeight]);Run-Methode führt drawSin() aus
var y = -Math.sin((sinX+x)*waveWidth+xofspeed);

Teilen Sie einen mit HTML5 erstellten WelleneffektcodeStatische Shell Searle Curve.png

Um den Welleneffekt zu erzielen

müssen Sie den Eigenschaften Code hinzufügen, um die Geschwindigkeit festzulegen

Je größer der Wert, desto schneller Geschwindigkeit


Der horizontale Versatz der Wellevar speed = 0.1;
Die Höhe der Wellevar xofspeed = 0;
var rand = beisizerheight;

erzeugt den Welleneffekt, indem er sich selbst dazu aufruft, unterschiedliche Höhen zu erzeugen. Die hier festgelegten Attributwerte können zusammen mit dem vierten Schritt des Zeichnens der Bezier-Kurve verstanden werden.
    var rendY = function () {
        ContenofBeisizer.clearRect(0,0,beisizerwidth,beisizerheight);

        //控制海浪高度
        var tmp = 0.1;
        rand-=tmp;
        var b = beisizerheight - rand;

        //控制循环涨潮
        if (parseInt(b)==beisizerheight){
            rand = beisizerheight;
        }

        drawSin(xofspeed);
        drawSinl(xofspeed);
        xofspeed += speed;
        requestAnimationFrame(rendY);
    };
Nach dem Login kopieren
Laufmethode rendY();


Zusammenfassung

Bezier-Kurven können auch Schallwellen, Herzfrequenzmesser usw. erzeugen. Sie können versuchen, den Frequenzwert zu ändern, um dies zu erreichen.

[Verwandte Empfehlungen]

1.

Kostenloses h5-Online-Video-Tutorial

2. HTML5-Vollversionshandbuch

3. php.cn Original-HTML5-Video-Tutorial

Das obige ist der detaillierte Inhalt vonTeilen Sie einen mit HTML5 erstellten Welleneffektcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles