processing实现canvas动画效果代码

代码语言:html

所属分类:动画

代码描述:processing实现canvas动画效果代码

代码标签: processing canvas 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

  <meta charset="UTF-8">
  

  
  
  
<style>
* {
  margin: 0;
  box-sizing: border-box;
  overflow: hidden;
}

body {
  background: #222;
  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();
    
textFont(createFont("Trebuchet MS"), 30);

var app;
    
var clicked = false, hover = false;
mousePressed = function () {
    clicked = true;
};
    
var Button = (function() {
    var Button = function(args) {
        this.x = args.x;
        this.y = args.y;
        this.w = args.w || 100;
        this.h = args.h || 50;
        this.content = args.content;
        this.textSize = args.textSize || this.w * 0.18;
        this.enabled = true;
        this.hover = false;
        this.func = args.func;
        this.backColor = args.backColor || color(240);
        this.textColor = args.textColor || color(25);
    };
    Button.prototype = {
        over: function() {
            return (mouseX > this.x && 
                    mouseX < this.x + this.w && 
                    mouseY > this.y && 
                    mouseY < this.y + this.h);
        },
        draw: function() {
            noStroke();
            
            this.hover = this.over();

            if(this.enabled && this.hover) {
                hover = true;
            }

            fill(this.backColor, this.enabled && this.hover ? 50 : 100);
            rect(this.x, this.y, this.w, this.h);
    
            pushStyle();
                textAlign(CENTER, CENTER);
                textSize(this.textSize);
                fill(this.enabled ? this.textColor : color(this.textColor, 100));
                text(this.content, this.x + this.w / 2, this.y + this.h / 2);
            popStyle();
    
            if(this.enabled && clicked && this.hover) {
                this.func();
            }
        }
    };
    return Button;
})();

var Person = (function() {
    Person = function(args) {
        this.x = args.x || 300;
        this.y = args.y || 150;
        this.length = args.length || 160;
        this.diameter = args.diameter || this.length / 2;
        this.thickness = args.thickness || 2;
        this.timer = 0;
        this.speed = args.speed || 5;
        this.angle = -10;
        this.colors = args.colors || {
            skin: color(250, 225, 200),
            stroke: color(60),
            feet: color(40)
        };
        this.canChangeSpeed = true;
        this.limbs = args.limbs || [
            { //left arm
                x: 0,
                y: 0,
                offset: 60,
                color: color(252, 101, 106),
                upper: {
                    angle: 10,
                    dist: 70,
                    length: this.length * 0.4
                },
                lower: {
                    angle: -60,
                    dist: 50,
                    length: this.length * 0.34
                }
            },
            { //right arm
                x: 0,
                y: 0,
                offset: 240,
                color: color(222, 89, 93),
                upper: {
                    angle: 10,
                    dist: 70,
                    length: this.length * 0.4
                },
                lower: {
                    angle: -60,
                    dist: 50,
                    length: this.length * 0.34
                }
            },
            { //left leg
                x: 0,
                y: 0,
                offset: 180,
                color: color(252, 101, 106),
                upper: {
                    angle: -10,
                    dist: 60,
                    length: this.length / 2
                },
                lower: {
                    angle: 60,
                    dist: 50,
                    length: this.length * 0.37
                },
                foot: {
                    angle: -70,
                    dist: 20,
                    length: this.length * 0.125
                }
            },
            { //right leg
                x: 0,
                y: 0,
                offset: 0,
                color: color(222, 89, 93),
                upper: {
                    angle: -10,
                    dist: 60,
       .........完整代码请登录后点击上方下载按钮下载查看

网友评论0