⚪互动媒体技术●运动主题作品

互动媒体技术——“运动”主题作品分析

一、成果

成果

二、运动库

1. 绘制气泡框

(1)加载移动笑脸

以类和对象的知识,创建Blob类的对象。

		function loadCircle(x0,y0,size,num,faceMin,faceMax)
		{
		参数:x0:小人移动范围左上角x值,y0:小人移动范围左上角y值,
		size:方框长度, num:小人的数量,faceMin和faceMax:小人的大小范围。		  
		  var top=y0;var bottom=y0+size;
		  var left=x0;var right=x0+size;
		  for (var i = 0; i < num; i++) {
		      blobs[i] = new Blob(x0+size/2, y0+size/2, random(faceMin, faceMax)
		            					,top+70,bottom-70,left+70,right-70);
		  }
		  return blobs;	
		}

移动笑脸类。

function Blob(_x, _y, _sz,top,bottom,left,right) {
_x:初始位置x值 ,_y:初始位置y值,
	_sz:笑脸大小,top/bottom/left/right:上下左右移动的范围
    
    this.x = _x;
    this.y = _y;
    this.sz = _sz;
    this.vx = random(-1.5, 1.5);
    this.vy = random(-1.5, 1.5);
    this.top=top;
    this.bottom=bottom;
    this.left=left;
    this.right=right;
    
	//显示笑脸
    this.display = function() {
        noStroke();
        fill(0);
        var line=3;
        line=round(map(this._sz,20,50,75,1,10));
        //ellipse(this.x, this.y, this.sz, this.sz);
        SurroundingSmileTwo(this.x,this.y,this.sz,5,5,line);
    };
	//显示透明边框
    this.displayOutline = function() {
        noStroke();
        fill(255,150);
        ellipse(this.x, this.y, this.sz + 10, this.sz + 10);

    };
	//更新移动位置,当前位置加上速度。
	同时检测边缘限制移动
    this.update = function() {
        this.x = this.x + this.vx;
        this.y = this.y + this.vy;

        // constrain
        if (this.x > this.right - this.sz / 2) {
            this.x = this.right - this.sz / 2;
            this.vx *= -1.0;
        }

        if (this.x < this.left + this.sz / 2) {
            this.x = this.left + this.sz / 2;
            this.vx *= -1.0;
        }
        if (this.y > this.bottom - this.sz / 2) {
            this.y = this.bottom - this.sz / 2;
            this.vy *= -1.0;
        }
        if (this.y < this.top + this.sz / 2) {
            this.y = this.top + this.sz / 2;
            this.vy *= -1.0;
        }
    };
} // Blob

使用时,在start()初始化中,调用loadCircle()函数生成笑脸。

blocks=loadCircle(100,100,400,10,20,50);

(2)绘制

function drawBlock(x0,y0,size,blocks)
{
  fill(0);
  stroke(2);
  strokeWeight(3);
  //绘制背景
  imageMode(CENTER);
  tint(255,80);
  image(img_block,x0+size/2,y0+size/2,size,size);
  tint(255,100);
  image(img_block,x0+size/2,y0+size/2,size-140,size-140);
  //绘制移动笑脸
  for (var i = 0; i < blocks.length; i++) {
      blocks[i].displayOutline();
  }
  for (var i = 0; i < blocks.length; i++) {
      blocks[i].display();
      blocks[i].update();//更新位置
  }
}

在update()中,调用drawBlock()函数绘制,需要传入笑脸数组。

drawBlock(100,100,400,blocks);

2.绘制悬挂笑脸

使用smileSpring函数进行单个笑脸的绘制。

function SmileSpring(x0,y0,maxUp,maxDown,aVelocity,angle)
{
x0:悬挂点x值,y0:悬挂点y值,maxUp/maxDown:弹跳的最高与最低,
aVelocity:弹跳的速度,angle:开始的振幅
  x=x0;
  y=y0+map(sin(angle),-1,1,maxUp,maxDown);
  stroke(0);
  fill(175);
  line(x,y0,x,y);
  SurroundingSmileColor(x,y,20,0,0,color(200,200,200));
}

使用smileSpringLine函数绘制笑脸波浪。

function SmileSprintLine(x0,y0,maxUp,maxDown,aVelocity,angle,length,N)
{
  //length:线条长度,N:个数
  var gap=round(length/N);
  for(i=0;i<N;i++)
  {
    x=x0+i*gap;
    //需要每次增加i*5,来使震动有波浪效果。
    y=y0+map(sin(angle+i*5),-1,1,maxUp,maxDown);
    stroke(220);
    fill(175);
    line(x,y0,x,y);
    SurroundingSmileColor(x,y,30,0,0,color(200,200,200));
  }
}

三、绘制图案

使用以上库绘制图案。
初步设想为画框效果。
需要绘制两种外框,所以修改了绘制气泡框的函数,绘制两次大小不同的外框,并对其中一个进行颜色处理。

  imageMode(CENTER);
  tint(255,80);
  image(img_block,x0+size/2,y0+size/2,size,size);
  tint(255,100);
  image(img_block,x0+size/2,y0+size/2,size-140,size-140);

绘制的详细代码

var angle;//绘制悬挂笑脸,需要记录角度
var aVelocity;//记录
var blocks=[];
var H=0;
function setup()
{
  angle=0;
  aVelocity=0.05;
  createCanvas(640,640);
  //初始化笑脸
  blocks=loadCircle(100,100,400,10,20,50);
}
function draw()
{
  strokeWeight(2);
  background(255);
  angle+=aVelocity;
  //绘制悬挂笑脸
  SmileSprintLine(120,500,20,110,aVelocity,angle,400,10);
//绘制气泡框
  drawBlock(100,100,400,blocks);

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值