processing实现卡通舞台一家三口跳舞动画效果代码
代码语言:html
所属分类:动画
代码描述:processing实现卡通舞台一家三口跳舞动画效果代码,还可对爸爸、妈妈、孩子的舞蹈单独设置速度。
代码标签: processing 卡通 舞台 三口 跳舞 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> * { margin: 0; box-sizing: border-box; overflow: hidden; } body { background: #15686B; width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; } body canvas { box-shadow: 0.2em 0.2em 2em #0008; border: none; outline: none; } </style> </head> <body> <canvas id="canvas"></canvas> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/processing.min.js"></script> <script > var sketchProc = function(processingInstance) { with (processingInstance) { size(600, 600); frameRate(60); smooth(); var clicked = false, hover = false; mouseClicked = function () { clicked = true; }; smooth(); var scene; var Button = function(args) { this.x = args.x; this.y = args.y; this.w = args.w || 80; this.h = args.h || 30; this.content = args.content; this.func = args.func; this.over = function() { return (mouseX > this.x && mouseX < this.x + this.w && mouseY > this.y && mouseY < this.y + this.h); }; this.draw = function() { noStroke(); if(this.over()) { fill(69, 66, 69, 200); hover = true; } else { fill(37, 38, 38, 200); } rect(this.x, this.y, this.w, this.h); pushStyle(); textAlign(CENTER, CENTER); textSize(14); fill(255); text(this.content, this.x + this.w / 2, this.y + this.h / 2); popStyle(); if(clicked && this.over()) { this.func(); } }; }; var Curtain = function(args) { this.x = 0; this.speed = args.speed || 10; this.show = args.show || false; this.weight = args.weight || 2; this.colors = args.colors || { // curtain: color(112, 20, 49), // border: color(41, 11, 23) curtain: color(26, 117, 122), border: color(9, 70, 71) }; this.draw = function() { fill(this.colors.curtain); stroke(this.colors.border); strokeWeight(this.weight); noStroke(); beginShape(); vertex(300 + this.x * 0.25, -this.weight); bezierVertex( 300 + this.x * 0.33, 300 + this.x * 0.33, 300 + this.x * 0.66, 600 + this.x * 0.66, 300 + this.x, 900 + this.x); vertex(-this.weight, 900); vertex(-this.weight, -this.weight); endShape(CLOSE); beginShape(); vertex(300 - this.x * 0.25, -this.weight); bezierVertex( 300 - this.x * 0.33, 300 + this.x * 0.33, 300 - this.x * 0.66, 600 + this.x * 0.66, 300 - this.x, 900 + this.x); vertex(600 + this.weight, 900); vertex(600 + this.weight, -this.weight); endShape(CLOSE); noStroke(); for(var i = 0; i < 300; i+=50) { fill(this.colors.border, 40); beginShape(); vertex(300 - i + this.x * 0.25, -this.weight); bezierVertex( 300 - i + this.x * 0.33, 300 + this.x * 0.33, 300 - i + this.x * 0.66, 600 + this.x * 0.66, 300 - i + this.x, 900 + this.x); vertex(-this.weight, 900); vertex(-this.weight, -this.weight); endShape(CLOSE); beginShape(); vertex(300 + i - this.x * 0.25, -this.weight); bezierVertex( 300 + i - this.x * 0.33, 300 + this.x * 0.33, 300 + i - this.x * 0.66, 600 + this.x * 0.66, 300 + i - this.x, 900 + this.x); vertex(600 + this.weight, 900); vertex(600 + this.weight, -this.weight); endShape(CLOSE); } }; this.update = function() { if(this.show) { this.x = constrain(this.x - this.speed, -600 - this.weight, this.weight); } else { this.x = constrain(this.x + this.speed, -600 - this.weight, this.weight); } }; this.go = function() { this.draw(); this.update(); }; }; var Man = function(args) { this.x = args.x || 0; this.y = args.y || 0; this.colors = args.colors || { hair: color(20), skin: color(250, 200, 200), shading: color(150, 30), // shirt: color(255, 221, 0), shirt: color(255, 0, 230), pants: color(50), eyes: color(223, 145, 171), mouth: color(223, 145, 171) }; this.timer = 0; this.sin = sin; this.cos = cos; this.speed = args.speed || 0; this.move = { s: 0, c: 0, bs: 0, ls: 0 }; this.arms = { left: { sleeve: { a: { x: 0, y: 0 }, b: { x: 0, y: 0 }, c: { x: 0, y: 0 } }, active: { x1: 100, y1: 342, x2: 125, y2: 342, x3: 150, y3: 342, x4: 175, y4: 342 }, rest: { x1: 100, y1: 342, x2: 126, y2: 337, x3: 142, y3: 368, x4: 144, y4: 393 }, value: { x1: 100, y1: 342, x2: 125, y2: 342, x3: 150, y3: 342, x4: 175, y4: 342 } }, right: { sleeve: { a: { x: 0, y: 0 }, b: { x: 0, y: 0 }, c: { x: 0, y: 0 } }, active: { x1: 100, y1: 342, x2: 75, y2: 342, x3: 50, y3: 342, x4: 25, y4: 342 }, rest: { x1: 100, y1: 342, x2: 74, y2: 337, x3: 58, y3: 368, x4: 56, y4: 393 }, value: { x1: 100, .........完整代码请登录后点击上方下载按钮下载查看
网友评论0