


Ausführliche Erläuterung der Umsetzung von Rubbelspielen auf dem mobilen Endgerät mit js+HTML5
In diesem Artikel werden hauptsächlich die Implementierungsmethode und der Implementierungscode von Scratch Lottery auf dem mobilen Endgerät vorgestellt. Hat einen sehr guten Referenzwert. Werfen wir einen Blick darauf mit dem Editor unten
Programmierer haben die Angewohnheit zu denken, das heißt, wenn sie etwas sehen, das sich bewegt (etwas mit ein bisschen Technologie, vergessen Sie Katzen oder Hunde), haben sie es immer getan Um zuerst darüber nachzudenken, wie wird dieses Ding durch Code gesteuert? Beispielsweise wurden Aufzüge, Neonlichter am Straßenrand, Fernbedienungen, Kinderspielzeug usw. von Programmierern als „obszön“ eingestuft.
Manchmal habe ich das Gefühl, dass Programmierer die Welt klarer sehen können.......
Ich glaube, jeder hat Rubbellose gespielt. Hier ist eine Einführung. Eine mobile Möglichkeit, Rubbellose zu implementieren Spiele! Verwenden Sie canvas
1. Verwenden Sie das HTML 5-Canvas-Attribut globalCompositeOperation, um das Rubbeln zu implementieren
Idee:
(1) Zuerst müssen Sie ein Kästchen positionieren, um zu bestimmen, wo Sie den Rubbelbereich platzieren möchten
(2) Im Positionierungsfeld gibt es ein Kästchen dafür der Inhalt, in dem die Preise platziert werden
(3) Decken Sie die obere Box mit einer Leinwand ab
(4) Wenn die Hand sie berührt und bewegt, können Sie einen Teil der Leinwand ausradieren Zeigen Sie den Preisbereich an
(5) Wenn genügend (3/4) gelöscht wurden, können Sie festlegen, dass die Leinwand automatisch verschwindet und langsam ausgeblendet wird (dieser Effekt ist optional)
Hauptsächlich der vierte Schritt: Wie lösche ich?
GlobalCompositeOperation wird hier ausgewählt, die Syntheseoperation in Canvas. Einfach ausgedrückt ist Composite (Kombination) der kombinierte Anzeigeeffekt zwischen den Grafiken, die Sie später zeichnen, und den Grafiken, die Sie zuerst zeichnen. In der chinesischen Malerei zeichnen Sie beispielsweise zuerst einen roten Strich, dann einen grünen Strich und dann Schnittpunkt Der Teil ist eine Mischfarbe, und beim Ölgemälde überdeckt das Grün das Rot des Schnittpunkts. Die Verarbeitung in der Programmzeichnung ist Composite, die entsprechende Funktion in Canvas API Es ist globalCompositeOperation.
Es gibt einen Attributwert in globalCompositeOperation, der „destination-out“ ist, was bedeutet, dass er transparent ist, wenn sich die Bilder überlappen. Wenn wir es hier verwenden, können wir auf der Leinwand kritzeln. Die überlappenden Bereiche werden transparent und zeigen, was sich unter der Leinwand befindet, was den gewünschten Effekt darstellt.
HTML-Code lautet wie folgt:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <link rel="stylesheet" type="text/css" href="css/guaguale.css" rel="external nofollow" /> </head> <body> <!-- 大的背景盒子--> <p id="main"> <!-- 定位的盒子--> <p class="canvasBox"> <!-- 放内容的盒子--> <span id="prize"> 恭喜发财,红包拿来 </span> <!-- 蒙版画布--> <canvas id="canvas"></canvas> </p> </p> </body> <script type="text/javascript"> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext('2d'); /* 画布偏移量,下面用到的时候再介绍*/ var arr = getOffset(canvas); var oLeft = arr[0]; var oTop = arr[1]; /* 初始化画布*/ ctx.beginPath(); ctx.fillStyle = '#ccc'; ctx.fillRect(0,0,canvas.width,canvas.height); ctx.closePath(); /* 增加触摸监听*/ document.addEventListener("touchstart",function(){ /* 初始化画笔*/ ctx.beginPath(); /* 画笔粗细*/ ctx.lineWidth = 30; /* 设置组合效果*/ ctx.globalCompositeOperation = 'destination-out'; /* 移动画笔原点*/ ctx.moveTo(event.touches[0].pageX-oLeft,event.touches[0].pageY-oTop); },false) document.addEventListener("touchmove",function(){ /* 根据手指移动画线,使之变透明*/ ctx.lineTo(event.touches[0].pageX-oLeft,event.touches[0].pageY-oTop); /* 填充*/ ctx.stroke(); }) /* 之所以会用到下面的那个函数getOffset(obj) * 是因为event.touches[0].pageX、pageY获取的是相对于可视窗口的距离 * 而lineTo画笔的定位是根据画布位置定位的 * 所以就要先获取到画布(canvas)相对于可视窗口的距离,然后计算得出触摸点相对于画布的距离 * */ /* 获取该元素到可视窗口的距离*/ function getOffset(obj){ var valLeft = 0,valTop = 0; function get(obj){ valLeft += obj.offsetLeft; valTop += obj.offsetTop; /* 不到最外层就一直调用,直到offsetParent为body*/ if (obj.offsetParent.tagName!='BODY') { get(obj.offsetParent); } return [valLeft,valTop]; } return get(obj); } </script> </html>
CSS-Code lautet wie folgt:
*{ margin: 0; padding: 0; } #main{ width: 100%; padding: 20px 0; background-color: red; } .canvasBox{ width: 78%; height: 160px; border-radius: 10px; background-color: #FFF; margin-left: 11%; line-height: 160px; text-align: center; position: relative; } #canvas{ width: 96%; height: 96%; position: absolute; left: 2%; top: 2%; background-color: transparent; }
Der fünfte Schritt wird verwendet. Erfassung von Leinwandpixeln (beachten Sie, dass Vorgänge auf Pixelebene in einer Serverumgebung geöffnet werden müssen)
getImageData(int x, int y, int width, int height): Diese Methode ruft die Leinwandpixel ab (x, y) Punkt, die Daten des Bildbereichs mit Breite, Breite und Höhe. Diese Methode gibt ein CanvasPixelArray-Objekt zurück, das Breite, Höhe, Daten und andere hat Attribute. Das Datenattribut ist ein Array und alle 4 Elemente des Arrays entsprechen einem Pixel.
(Sie können dies auch tun, um das Bild umzukehren und den RGBA-Wert zu ändern)
Das von getImageData(int x, int y, int width, int height) zurückgegebene Objekt. Daten Was darin gespeichert wird, sind die Pixelinformationen
Wir drucken dann die Daten aus. Das Datenattribut ist ein Array und alle 4 Elemente entsprechen einem Pixel (gespeichert). in Form von RGBA-Informationen jedes Pixels).
Wir können also anhand des Opcity-Werts des Pixels beurteilen, ob das Pixel transparent ist. Ist dieser gleich 0?
Anzahl der transparenten Pixel/Gesamtzahl der Pixel = Löschverhältnis
JS-Code:
document.addEventListener("touchend",function(){ /* 获取imageData对象*/ var imageDate = ctx.getImageData(0,0,canvas.width,canvas.height); /* */ var allPX = imageDate.width * imageDate.height; var iNum = 0;//记录刮开的像素点个数 for(var i=0;i<allPX;i++){ if(imageDate.data[i*4+3] == 0){ iNum++; } } if(iNum >= allPX*3/4){ // disappear里面写了缓慢清除的css3动画效果 canvas.setAttribute('class','disappear'); } },false)
" .disappear " CSS Stil, CSS3-Animation zum Verschwinden
.disappear{ -webkit-animation: disa 2s 1; animation: disa 2s 1; -webkit-animation-fill-mode: forwards; -moz-animation-fill-mode: forwards; -o-animation-fill-mode: forwards; animation-fill-mode: forwards; } @keyframes disa{ 0%{opacity:1;} 100%{opacity: 0;} }
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Umsetzung von Rubbelspielen auf dem mobilen Endgerät mit js+HTML5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

Dreamweaver Mac
Visuelle Webentwicklungstools