En ce moment, ce que j'ai est montré dans ce violon: https://jsfiddle.net/p0o5fvdm/Comment générer dynamiquement une forme de polygone qui se déplace vers le haut dans Canvas?
Ce que je veux est le polygone de se déplacer en douceur et remplir la partie ci-dessous avec une couleur plus noire qui couvre une largeur aléatoire qui est aligné avec le polygone et continue à se déplacer en douceur comme la partie supérieure. J'ai essayé d'utiliser le code suivant, mais il ne conserve pas la forme du polygone d'origine et de nouveaux polygones sont dessinés sur les anciens, ce qui entraîne des flashes.
Ceci est ma fonction d'animation:
function animate(myShape, canvas, context, startTime) {
var time = (new Date()).getTime() - startTime;
myShape.y1 -= 1;
myShape.y2 -= 1;
myShape.y3 -= 1;
context.clearRect(0, 0, canvas.width, canvas.height);
drawShape(myShape, context);
requestAnimFrame(function() {
animate(myShape, canvas, context, startTime);
});
}
I ajouté le code suivant pour définir dynamiquement la largeur du bord inférieur en utilisant le code suivant juste au-dessus context.clearRect
.
if(myShape.y2 < 400) {
myShape.y2 = 400;
myShape.x2 = Math.random()*300;
myShape.y3 = 400;
}
Ceci est la valeur initiale de myShape
:
var myShape = {
x1: 200,
y1: 0,
x2: 120,
y2: 400,
x3: 0,
y3: 400
};
Ma toile a une hauteur de 400 pixels. C'est pourquoi je l'ai utilisé comme référence ici. Faites-moi savoir si j'ai besoin d'ajouter plus de détails.
Merci. Votre algorithme a presque résolu mon problème. Il n'y a qu'un problème. J'ai besoin de remplir complètement le côté gauche de la toile avec ce polygone et pour ce faire, j'ai besoin de mettre la valeur x du dernier élément du tableau à zéro. Mais alors le déplacement fait que toutes les valeurs deviennent finalement nulles. Définir la valeur finale de x sur quelque chose de aléatoire donne des polygones qui ne sont pas convexes et peuvent laisser un espace blanc sur leur côté gauche. –
J'ai ajouté un exemple de code et une démo. – markE
Merci pour la démo. Je me sens un peu stupide de ne pas pouvoir l'appliquer correctement moi-même. :) –