function draw(){
var c = document.getElementById("myTrails");
var cxt = c.getContext("2d");
cxt.save();
head(cxt);
backbone(cxt);
fishtail(cxt);
setAuthor(cxt);
cxt.restore();
createTwoFish(cxt);
}
//再创建一条鱼
function createTwoFish(context){
context.save();
context.translate(250, 100);
context.scale(0.5, 0.5);
head(context);
backbone(context);
fishtail(context);
context.restore();
}
// 头
function head(context){
context.beginPath();
context.moveTo(100, 100);
context.quadraticCurveTo(200, -50, 300, 100);
context.moveTo(100, 100);
context.lineTo(300, 100);
context.stroke();
context.beginPath();
context.arc(200, 60, 10, 0, Math.PI * 2, false);
context.stroke();
context.beginPath();
context.fillStyle = 'wilte';
context.arc(200, 60, 5, 0, Math.PI * 2, false);
context.fill();
}
//骨干
function backbone(context){
context.moveTo(190, 100);
//fillRect(x, y, width, height)x, y 矩形的左上角的坐标width, height 矩形的大小
context.strokeRect(190, 100, 20, 35);
context.closePath();
context.stroke();
for(var y = 150; y <= 450; y+=50){
twoBackbone(context, y);
}
}
function twoBackbone(context, y){
context.beginPath();
context.arc(200, y, 15, 0, Math.PI * 2, false); //圆形
context.closePath();
context.stroke();
//左排骨
context.beginPath();
context.moveTo(185,y);
context.quadraticCurveTo(75, y + 25, 165, y + 40);
context.lineWidth = 4;
context.stroke();
//右排骨
context.beginPath();
context.moveTo(215,y);
context.quadraticCurveTo(320, y + 25, 235, y + 40);
context.stroke();
context.beginPath();
context.lineWidth = 1;
var height = 20;
if(y == 450){
height = 35;
}
context.strokeRect(190, y + 15, 20, height);//矩形
context.closePath();
context.stroke();
}
//鱼尾
function fishtail(context){
context.beginPath();
context.moveTo(190, 500);
context.lineTo(110, 560);
context.moveTo(210, 500);
context.lineTo(290, 560);
context.moveTo(110, 560);
context.lineTo(200, 540);
context.lineTo(290, 560);
context.moveTo(200, 500);
context.lineTo(200, 540);
twoFishtail(context);
context.stroke();
}
function twoFishtail(context){
var j = 10;
//右侧
for(var i = 0; i <= 50; i += 10,j += 10){
context.moveTo(200 + j, 500 + i);
context.lineTo(200 + j, 540);
}
j = 0;
//左侧
for(var i = 0; i <= 50; i += 10,j -= 10){
context.moveTo(190 + j, 500 + i);
context.lineTo(190 + j, 540);
}
}
//设置作者
function setAuthor(context){
context.font = "20px impact";
context.fontStyle = '#000000';
context.textAlign = 'center';
context.fillText('作者:王明', 370, 550);
context.fillText('2012年10月15日', 370, 580);
}
window.addEventListener("load", draw, true);
<canvas id="myTrails" width="450px" height="600px" style="border:1px solid #CCC;" />
- 大小: 8.4 KB
分享到:
相关推荐
本项目"大鱼吃小鱼"就是基于HTML5的Canvas技术和JavaScript实现的一个经典游戏,它无需任何游戏引擎,完全通过原生编程实现,展现了HTML5在游戏开发领域的潜力。 一、HTML5 Canvas Canvas是HTML5中引入的一个绘图...
【游戏机制】在这款游戏中,玩家将控制一条小鱼,通过移动避开障碍物并吞噬比自己小的鱼,以此来逐渐增大体型。这种“大鱼吃小鱼”的生存法则在游戏中得到了生动的体现。游戏的核心机制是通过碰撞检测来判断小鱼是否...
2. 使用定时器(`setInterval`或`requestAnimationFrame`)来定期更新屏幕上的画面,每次迭代时改变每条鱼的位置和状态。 3. 对于鱼群的集体运动,可能应用了简单的算法,如模仿自然界中的群体行为规则,如避免碰撞...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创建出丰富的交互式用户体验。在这个“html5 canvas手机端钓鱼小游戏”中,我们可以深入学习到Canvas的一些关键知识点以及如何将其...
HTML5是一种先进的网页标记语言,它是HTML的第五个主要版本,于2014年正式发布。HTML5的出现极大地增强了网页的交互性和多媒体支持,为开发者提供了更丰富的功能和工具,同时也为用户带来了更好的浏览体验。在这个名...
HTML5 Canvas是一个强大的Web图形接口,它允许开发者在网页上直接用JavaScript绘制图形。这个"HTML5 Canvas绘制沙丁鱼群特效"项目是利用Canvas API创建动态、交互式的沙丁鱼群动画效果的一个实例,常见于网站背景...
例如,我们可以画一个红色的矩形: ```javascript ctx.fillStyle = 'red'; ctx.fillRect(50, 50, 100, 100); ``` 在制作游戏时,我们通常需要处理用户输入,如键盘或鼠标事件。你可以使用`addEventListener`来监听...
1. **canvas**:HTML5的canvas标签是这个动画的核心,它是一个可编程的区域,允许开发者用JavaScript描绘图形,包括线条、形状、图像等。在这个案例中,canvas用于显示并更新每一个粒子的位置和状态,实现动态的沙漏...
这可以通过计算每两条鱼之间的距离,如果小于某个阈值,则改变其中一条鱼的方向。同时,还可以添加背景元素,如水草、珊瑚、气泡等,进一步增强场景的真实感。 动画效果的优化也是关键。过多的对象更新和重绘可能会...
鱼群的行为可能通过模拟简单的物理规则和随机因素来实现,例如,每条鱼都有可能改变方向或者受到其他鱼的影响。 此外,为了使鱼看起来在游动,开发者可能还使用了CSS3的transform属性,特别是translateX和...
例如,我们可以使用`beginPath()`开始新路径,`moveTo()`移动到某个点,`lineTo()`画直线到另一个点,最后用`closePath()`封闭路径。 3. **填充与描边**:定义好路径后,可以用`fillStyle`和`strokeStyle`设置颜色...
在这个游戏中,玩家控制一条小鱼,通过吞噬比自己小的鱼来逐渐壮大,避免被更大的鱼捕食。下面将详细解析游戏中的关键知识点。 首先,Java是这款游戏的核心编程语言,它是一种面向对象的语言,具有丰富的库支持和跨...
“大鱼吃小鱼”是一款深受玩家喜爱的经典休闲游戏,它的核心玩法基于自然界的食物链原理,玩家控制一条小鱼在海洋中游动,通过吞噬比自己小的鱼类来逐渐长大,同时避免被更大的鱼类捕食。这种简单而刺激的机制,使得...
HTML5还提供了许多新的输入类型,如`type="range"`用于创建滑动条,`type="color"`用于选择颜色,这些在游戏界面设计中很有用。 "爱心鱼"小游戏的代码中,你还可以学习到如何通过`<link>`标签引用外部样式表(CSS)...
今天,我们要深入探讨的是一款名为"tinyHeart"的H5游戏,其核心在于用JavaScript语言构建的精巧玩法,让我们一同揭示这款"两条鱼"游戏背后的技术细节。 一、JavaScript基础 JavaScript是Web开发中的关键角色,尤其...
在本项目中,"javascript+canvas与svg做捕鱼游戏.zip" 提供了使用JavaScript结合HTML5的Canvas和SVG技术制作捕鱼达人的详细实现。这两种技术是现代网页开发中用于动态图形绘制的重要工具,它们各自有独特的优点和...
涂鸦用镜子是一个基于JavaScript和HTML的简单应用,它允许用户在网页上进行涂鸦并实时预览效果,类似于一个在线的绘画工具。这个压缩包文件"涂鸦用镜子_JavaScript_HTML_下载.zip"包含了一个名为"goggles-master"的...
1. 数据结构:首先,我们需要定义一个数组来存储每条鱼的信息,包括鱼的位置、速度、方向等。 2. 动画循环:使用jQuery的`.setInterval()`函数,定期执行更新鱼位置的函数,每次更新时根据鱼的速度和方向调整其坐标...
"会游的鱼"脚本可能采用了面向对象编程的思想,将鱼的运动逻辑封装为类,通过实例化不同的鱼对象来展示多条鱼同时游动的效果,这样的设计既高效又易于扩展。 简单易操作表明"会游的鱼"JavaScript脚本对于开发者来说...
例如,一个简单的接口可能只需要开发者提供一个图形的绘制函数和一个处理交互事件的回调函数,库会自动处理其余的细节。 在实际应用中,这样的库可以极大地提高开发效率,特别是对于那些需要大量自定义图形和交互...