H5小游戏——看你有多色
使用了封装了canvas的create.js库来实现的。
最终效果:
工程:
Rect.js
/*
* 方块类
*/
function Rect(n,color,specialColor){ createjs.Shape.call(this); /**
* 设置方块的类型
*/
this.setRectType=function(type){
this._RectType=type;
switch(type){
case 1:
this.setColor(color);
break;
case 2:
this.setColor(specialColor);
break;
}
} /**
* 获取方块的类型
*/
this.getRectType=function(){
return this._RectType;
} /**
* 设置方块的颜色+绘制方块
*/
this.setColor=function(colorString){
this.graphics.beginFill(colorString);
this.graphics.drawRect(0,0,400/n-5,400/n-5);
this.graphics.endFill();
} //方块的默认类型是1
this.setRectType(1);
} Rect.prototype=new createjs.Shape();
seeColor.js
/**
* 绘制舞台
*/ var stage=new createjs.Stage("gameView");
var gameView=new createjs.Container();
stage.addChild(gameView); //var s=new createjs.Shape();
//s.graphics.beginFill("#00FF00");
//s.graphics.drawRect(0,0,100,100);
//s.graphics.endFill(); //gameView.addChild(s); createjs.Ticker.setFPS(30);
createjs.Ticker.addEventListener("tick",stage); //特殊的那个方块的容差
var diffDegree=30;
//n*n的矩阵
var n=2;
var maxN=7; //在随机生成颜色的时候[0,500] [500,255*255*255]这两个区间内的颜色将被排除
var edgeColor=10; function addRect(){ //随机颜色
var randR=Math.floor(Math.random()*255-edgeColor*2)+edgeColor;
var randG=Math.floor(Math.random()*255-edgeColor*2)+edgeColor;
var randB=Math.floor(Math.random()*255-edgeColor*2)+edgeColor; //特殊方块的颜色
var specialR=randR-diffDegree>edgeColor?randR-diffDegree:randR+diffDegree;
var specialG=randG-diffDegree>edgeColor?randG-diffDegree:randG+diffDegree;
var specialB=randB-diffDegree>edgeColor?randB-diffDegree:randB+diffDegree; var color="rgb("+randR+","+randG+","+randB+")";
var specialColor="rgb("+specialR+","+specialG+","+specialB+")"; //特殊方块的位置
var specialX=Math.floor(Math.random()*n);
var specialY=Math.floor(Math.random()*n); //绘制所有方块
for(var indexX=0;indexX<n;indexX++){
for(var indexY=0;indexY<n;indexY++){
var r=new Rect(n,color,specialColor);
gameView.addChild(r);
r.x=indexX;
r.y=indexY;
if(r.x==specialX && r.y==specialY){
r.setRectType(2);
}
r.x=indexX*(400/n);
r.y=indexY*(400/n);
if(r.getRectType()==2){
//点到特殊方块的时候重绘
r.addEventListener("click",function(){
if(n<maxN){
++n;
}
gameView.removeAllChildren();
addRect();
});
}
}
}
} addRect();
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>See Color</title>
</head>
<body> <canvas id="gameView" width="400px" height="400px"></canvas> <script type="text/javascript" src="js/easeljs-0.8.2.min.js"></script>
<script type="text/javascript" src="js/Rect.js"></script>
<script type="text/javascript" src="js/seeColor.js"></script>
</body>
</html>
github下载地址:https://github.com/BenDanChen/seeColor
参考资料:
极客学院视频教程地址 http://www.jikexueyuan.com/course/167.html
create.js
H5小游戏——看你有多色的更多相关文章
- 青瓷qici - H5小游戏 抽奖机 “one-arm bandit”
写在前面 本文实现一个简单的抽奖效果,使用青瓷qici引擎,其中应用了Tween动画,粒子系统,遮罩,UI界面布局,项目设置,发布等功能呢. 目前开发采用1.0.7版本,后续如果界面有所变化请参考这个 ...
- “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理
3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...
- 原生JS实现的h5小游戏-植物大战僵尸
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...
- 从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条
本系列文章对应游戏代码已开源 Sinuous game 上一节介绍了canvas的基础用法,了解了游戏开发所要用到的API.这篇文章开始,我将介绍怎么运用这些API来完成各种各样的游戏效果.这个过程更 ...
- 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命
本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...
- Egret白鹭H5小游戏开发入门(二)
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
- Egret白鹭H5小游戏开发入门(三)
前言: 在上一篇文章中着重介绍了H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明等等,那么今天主要是涉及到场景的创建,loading的修改等等的代码编写. 对于这一节,我在讲解的过 ...
- Egret白鹭H5小游戏开发入门(一)
前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...
- 开发H5小游戏
Egret白鹭H5小游戏开发入门(一) 前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...
随机推荐
- Hadoop HDFS环境搭建
1,首先安装JDK,下面如果JDK出现安装错误,可以卸载 卸载 1.卸载用 bin文件安装的JDK方法: 删除/usr/java目录下的所有东西 2.卸载系统自带的jdk版本方法: 查看自带的jdk: ...
- python接口自动化测试框架实现之字符串插入变量(字符串参数化)
问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...
- week1day01 认识python 变量 数据类型 条件if语句
1.什么是python? Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Pe ...
- SPA页面性能优化
1. 快速启动 —— 极大提升加载速度(important) 快速启动应用,并行发起 Bundle 加载&拉取初始数据.相信大家已经发现了,SPA 初始化时候,不得不等待 bundle 返回并 ...
- [AT2172] [agc007_e] Shik and Travel
题目链接 AtCoder:https://agc007.contest.atcoder.jp/tasks/agc007_e 洛谷:https://www.luogu.org/problemnew/sh ...
- 跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-Git仓库配置详解 原
在跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一节中,已实现使用Git仓库作为Config Server的后端存储,本节详细探讨如何配 ...
- 使用adb命令查看apk版本
adb devices (显示连接的设备) adb root (获取手机root权限) adb remount (重新挂载系统分区,使系统分区重新可写) adb shell (进入目标设备的L ...
- linux top命令查看系统资源
参考材料: http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html
- UESTC--1655
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1655 分析:注意可能会反向. #include<iostream> #include<c ...
- windows下MySQL 5.7+ 解压缩版安装配置方法--转载
方法来自伟大的互联网. 1.去官网下载https://dev.mysql.com/downloads/mysql/.zip格式的MySQL Server的压缩包,根据需要选择x86或x64版.注意:下 ...