canvas 像素级碰撞
demo地址http://06wjin.sinaapp.com/html5/hitTest/ 用鼠标拖动
1首先先判断两个图片的矩形区域有无碰撞
判断两个矩形的中心距离即可
2如果矩形区域有碰撞则检测上图红色矩形区域的像素,这里有两种方法
a 直接判断,循环检测两位图在红色矩形内是否有一点像素的alpha点都不为0,如果有则说明碰撞
- context.drawImage(img1, x1, y1);//画第一张位图
- var data1 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取第一张位图红色矩形内像素
- context.clearRect(x1, y1,img1.width,img1.height);//清除第一张位图
- context.drawImage(img2, x2, y2);//画第二张位图
- var data2 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取第二章位图红色矩形内像素
- for(var i = 3; i
- {
- if(data1 > 0 && data2 > 0) return true;//循环判断alpha值,这里可以设置透明阙值,比如把0改为0.2,意味着透明度为0.2时就认为不碰撞了
- }
- return false;
b将绘图模式改为xor(xor是指相交部分透明,具体见站长上篇教程),也可以判断
- context.drawImage(img1, x1,y1);//画第一张位图
- context.globalCompositeOperation = 'xor';//改绘图模式为xor
- context.drawImage(img2, x2,y2);//画第二张位图
- var data = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取位图红色矩形内像素
- context.globalCompositeOperation = 'source-over';//把绘图模式改回去
- for(var i = 3; i
- {
- if(data == 0 ) return true;//若有透明像素,则碰撞
- }
- return false;
下面是一个2d精灵类,碰撞直接用sprite1.hitTest(sprite2)就好
- function Sprite(x, y, img, width, height)
- {
- this.x = x;
- this.y = y;
- this.img = document.getElementById(img);
- this.width = width;
- this.height = height;
- this.halfWidth = this.width/2;
- this.halfHeight = this.height/2;
- this.angle = 0;角度
- this.scaleX = 1;//水平缩放
- this.scaleY = 1;//竖直缩放
- this.alpha = 1;//透明度
- this.isDrug = false;//是否拖到
- }
- Sprite.prototype.draw = function()
- {
- context.save();
- context.translate(this.x + this.halfWidth, this.y + this.halfHeight);
- context.globalAlpha = this.alpha;//修改透明度
- context.rotate(this.angle);//旋转角度
- context.scale(this.scaleX, this.scaleY);//缩放
- context.drawImage(this.img, -this.halfWidth, -this.halfHeight);
- context.restore();
- }
- Sprite.prototype.hitTest = function(sprite)
- {
- var minx = this.x > sprite.x ? this.x :sprite.x;
- var maxx = this.x + this.width
- var miny = this.y > sprite.y ? this.y : sprite.y;
- var maxy = this.y + this.width
- if (minx >= maxx || miny >= maxy) {return false;}
- var canvas = document.createElement('canvas');
- canvas.setAttribute('width', 550);
- canvas.setAttribute('height', 400);
- var context = canvas.getContext('2d');
- /*第一种方法*/
- context.drawImage(this.img, this.x, this.y);
- var data1 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- context.clearRect(0, 0, 550, 400);
- context.drawImage(sprite.img, sprite.x, sprite.y);
- var data2 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- for(var i = 3; i
- {
- if(data1 > 0 && data2 > 0) return true;
- }
- return false;
- /*第二种方法
- context.drawImage(this.img, this.x, this.y);
- context.globalCompositeOperation = 'xor';
- context.drawImage(sprite.img, sprite.x, sprite.y);
- var data = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- context.globalCompositeOperation = 'source-over';
- for(var i = 3; i
- {
- if(data == 0 ) return true;
- }
- return false;*/
- }

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

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie Uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreichen kann, erfordert spezifische Codebeispiele. Mit der Entwicklung des mobilen Internets und der Popularität von Smartphones sind Miniprogramme und H5 zu unverzichtbaren Anwendungsformen geworden. Als plattformübergreifendes Entwicklungsframework kann Uniapp die Konvertierung zwischen kleinen Programmen und H5 basierend auf einer Reihe von Codes schnell realisieren und so die Entwicklungseffizienz erheblich verbessern. In diesem Artikel wird vorgestellt, wie Uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreichen kann, und es werden konkrete Codebeispiele gegeben. 1. Einführung in uniapp unia

Beim Vergleich der beiden Versionen von win1121h2 und 22h2 ist die letztere Version 22h2 stabiler und 22h2 verfügt über mehr Funktionen. Im Vergleich zur vorherigen Version 21h2 wurden viele Funktionen verbessert. Welches ist stabiler, win1121h2 oder 22h2: Antwort: 22h2 ist stabiler. Im Vergleich zu win1121h2 und 22h2 ist 22h2 stabiler. 22h2 fügt viele Funktionen hinzu und die Probleme von 21h2 wurden auch in 22h2 verbessert. 22h2-Update-Funktion: Anwendungsordner im Startmenü. Einstellbarer fester Bereich im Startmenü. Ziehen Sie es per Drag & Drop in die Taskleiste. Focus Assist ist in das Benachrichtigungscenter integriert. Neue Hintergrundfunktion „Spotlight“. neu

Windows 101909 gilt derzeit als eine der stabilsten und zuverlässigsten Versionen. Leider wurde der Service-Support für diese Version kürzlich eingestellt. 21H2 ist eine relativ stabile Version. Tatsächlich sind beide eine sehr gute Wahl. Was ist besser, win101909 oder 21h2? Antwort: 1909 ist stabiler und 21h2 ist sicherer. Im aktuellen Umfeld gilt 1909 immer noch allgemein als eine der stabilsten und zuverlässigsten Versionen. Die Bereitstellung der Version Win101909 wurde jedoch am 11. Mai 2021 offiziell eingestellt. WindowsServer21h2 ist bestrebt, der Mehrheit der Benutzer professionellere IT-Funktionsunterstützung zu bieten. 1. Nach tatsächlichen Tests durch viele Benutzer,

Anwendbare Szenarien: 1. Der Projektumfang ist nicht sehr groß, und die Anforderungen an die Parallelität sind nicht hoch. 3. Es gibt keine dedizierten Betriebs- und Wartungskräfte regelmäßige Projekte oder Einheiten, bei denen die Aufteilung der Verantwortlichkeiten nicht ganz klar ist. Oft reicht ein System von den Anforderungen über Design, Entwicklung und Tests bis hin zur endgültigen Einführung, dem Betrieb und der Wartung. Oftmals werden 80 % der Aufgaben vom Entwicklungsteam erledigt. Daher müssen Entwickler neben der Implementierung der Systemfunktionen auch Kunden beraten, Fragen beantworten und Produktionsprobleme lösen. Stellen Sie sich vor, dass es nach dem Start einer Anwendung keine Überwachungsmaßnahmen gibt. Genau wie beim Autofahren ohne Armaturenbrett fühlt sich niemand auf der Straße so sicher. Es lohnt sich, darüber nachzudenken, wie man Einfachheit und Effizienz in Einklang bringt. 1. Springb

Die 23h2-Version und die 22h2-Version im Windows 11-System werden im Jahr 2023 bzw. 2022 veröffentlicht. Generell werden die Systemupdates immer besser. Der Herausgeber ist auch der Meinung, dass die 23h2-Version besser ist als die 22h2-Version. Was ist besser, win1123h2 oder 22h2? Antwort: win1123h2 ist besser. Berichten zufolge handelt es sich bei win1123h2 um ein kumulatives Versionsupdate von 22h2 auf die nächste Version, und es handelt sich bei allen um dieselbe Plattform. Dies bedeutet, dass es keine Kompatibilitätsprobleme zwischen den beiden Versionen gibt. Es wird empfohlen, sie rechtzeitig zu aktualisieren. Die win1123h2-Version bringt uns viele praktische Features, wie zum Beispiel den Never-Merge-Modus für Taskleisten-Fensteranwendungen. Da sind mehr

Jeder möchte kürzlich die 23H2-Version von Win11 aktualisieren, aber eine kleine Anzahl von Benutzern hat die Update-Push-Nachricht noch nicht erhalten. Es kann sein, dass ein Prozess im Hintergrund-Update-Fortschritt hängen bleibt und nach einer Weile alles in Ordnung ist. Was tun, wenn das Win11-Update 23H2 nicht erhält? Methode 1: Warten Sie geduldig. Wenn der Benutzer den Update-Status des Computers überprüft und feststellt, dass er hängen bleibt, können wir eine Weile warten und das System wird weiter aktualisiert. Methode 2: Löschen Sie den aktualisierten Cache. Wenn der Benutzer das System zuvor aktualisiert und den detaillierteren Cache nicht geleert hat, wirkt sich dies auf die normale Aktualisierung von 23h2 aus. Sie können ihn manuell löschen. Methode 3: Verwenden Sie die Image-Installation. Es wird empfohlen, die Image-Datei win1123h2 von der offiziellen Website von Microsoft herunterzuladen und die Datei dann zu aktualisieren.

Sie benötigen die vom Administrator bereitgestellten Berechtigungen, um Änderungen an dieser Datei vorzunehmen: 1. Nachdem Sie das Administratorkonto auf der Anmeldeoberfläche ausgewählt und das Kennwort eingegeben haben, können Sie die Datei problemlos ändern. 2. Sie können mit der rechten Maustaste auf die Datei klicken und sie auswählen „Als Administrator“-Lösung: 3. Ändern Sie die Dateiberechtigungen, klicken Sie mit der rechten Maustaste auf die Datei, wählen Sie „Eigenschaften“, klicken Sie auf die Registerkarte „Sicherheit“, dann auf die Schaltfläche „Bearbeiten“, wählen Sie Ihren Benutzernamen aus und aktivieren Sie dann „Vollzugriff“. Option 4. Verwenden Sie die Eingabeaufforderung, um das Problem zu lösen. 5. Legen Sie UA-Berechtigungen fest.

So verwenden Sie Flask-Admin zum Implementieren der Backend-Verwaltungsschnittstelle. Hintergrundeinführung: Mit der Entwicklung von Websites und Anwendungen wird die Backend-Verwaltungsschnittstelle immer wichtiger. Während des Entwicklungsprozesses benötigen wir oft eine praktische und schnelle Backend-Verwaltungsschnittstelle, um Daten, Benutzer und andere wichtige Informationen zu verwalten. Flask-Admin ist eine leistungsstarke und benutzerfreundliche Flask-Erweiterung, mit der wir die Hintergrundverwaltungsschnittstelle schnell implementieren können. Flask-Admin ist ein Open-Source-Projekt, das auf Flask und SQLAlchemy basiert
