提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2020-07-09 10:37:16.780|阅读 213 次
概述:Highcharts是一个高度可定制的库,允许用户创建几乎可以想象的任何基于SVG的交互式可视化,甚至包括游戏!在本教程中,我们将在较低级别上查看Highcharts库,以将您的图表转换为蛇形游戏。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Highcharts是一款纯JavaScript编写的图表库,为你的Web网站、Web应用程序提供直观、交互式图表。当前支持折线、曲线、区域、区域曲线图、柱形图、条形图、饼图、散点图、角度测量图、区域排列图、区域曲线排列图、柱形排列图、极坐标图等几十种图表类型。
Highcharts是一个高度可定制的库,允许用户创建几乎可以想象的任何基于SVG的交互式可视化,甚至包括游戏!
以前,我们研究过使用Highcharts Gantt 创建交互式拼图。在本教程中,我们将在较低级别上查看Highcharts库,以将您的图表转换为蛇形游戏(参见下文):本文有两个主要部分。第一部分将介绍一些基本概念,例如SVG Renderer和SVG Element。在第二部分中,您将看到如何制作蛇,如何使其移动以及如何喂食小吃。
SVG渲染器Highcharts SVG渲染器是一种可能有助于实现Highcharts核心中未包含的自定义元素的基本工具。它可以用来向您的图表添加可以以任何形状创建的自定义SVG元素-如果您在使用画布API之前就感到宾至如归,那么唯一的限制就是想像力。
SVG元素
可以渲染一些基本元素,可以创建一个圆形,弧形,矩形,文本元素,标签,按钮,符号或绘制路径。这次,我们将专注于渲染将用于创建蛇形主体的矩形。
制造一条蛇
在开始渲染之前,我们需要创建一个可以放置渲染元素的层。为此,您可以使用已经存在的图表,但是值得一提的是,可以创建一个独立的SVG图。
因为我想创建一个可以与图表互动的游戏,所以我从一个基本的散点图开始。
const chart = Highcharts.chart('container', { chart: { type: 'scatter' }, series: [{ data: [4, 3, 5, 6, 2, 3] }] });
现在,可以直接从刚刚创建的图表访问渲染器。要使用它并创建第一个矩形,我们可以使用renderer.rect(x,y,width,height)方法。该方法有四个参数:
const snake = chart.renderer.rect(0, 0, 20, 20) .attr({ fill: 'red' }) .add();
让它动起来!
在上一段中,我们学习了如何渲染一个简单的矩形,但这只是静态的。我们的蛇应该更活泼。要唤醒它,我们需要学习方法。这将使我们能够将元素移动一定的x和y值。因此,如果我们想将蛇向右移动100px,则应使用:translate()
snake.translate(100,0);现在,我们可以利用这些知识告诉我们的蛇不断地移动到正确的大小,直到它无法进一步移动为止(我们不希望他逃跑,对吧?)。为此,我们可以创建一个简单的时间间隔,每次将蛇移动一个增加的值。然后,我们需要找到一个图表属性,使我们能够定义将蛇保留在图表内的边界。在这种情况下,我们可以使用该属性。此外,我们可以使用其他图表属性- 并更新蛇的初始位置(现在将其绘制在绘图区域之外,我们希望它位于蛇形图的内部)。chart.plotWidthchart.plotLeftchart.plotTop
const snake = chart.renderer.rect( chart.plotLeft, chart.plotTop, 20, 20 ) .attr({ fill: 'red' }) .add(); let x = 0; setInterval(() = & gt; { if (x + 20 & lt; chart.plotWidth) { x += 20; snake.translate(x, 0);喂蛇
到目前为止,我们已经学会了如何制作一条蛇,使他能够移动,但是他仍然缺乏一项非常重要的技能-吃点。为此,当某个点与我们的蛇处于同一位置时,我们需要以某种方式删除该点。为了简化操作,我将为所有点设置相同的值,并为两个轴设置最小和最大属性值。
const chart = Highcharts.chart('container', { chart: { type: 'scatter' }, xAxis: { min: 0, max: 8 }, yAxis: { min: 0, max: 8 }, series: [{ pointStart: 1, data: [8, 8, 8, 8, 8, 8, 8, 8] }] });
现在我们准备实现此功能。我们要做的就是将蛇的像素位置与点进行比较。
为了获得实际的蛇位置,我们需要在其初始位置添加一个转换值。可以在property 下找到转换值,以获取初始位置,我们可以使用attr()方法返回某个属性的值。snake.translateX
const snakePosX = snake.attr('x') + snake.translateX;
查找点的像素坐标的方法有多种,但是最简单的方法是使用轴toPixels()方法,该方法将返回值在图表或轴上的像素位置。
const pointPosX = xAxis.toPixels(point.x)
现在,我们要做的就是创建一个简单的函数,该函数将遍历所有点并删除其距离小于蛇形大小的距离。要删除一个点,我们可以使用方法。然后,我们可以在负责移动蛇的间隔内调用该函数。我们的蛇终于学会了如何吃图表积分。coderemove()
function onCollision() { const xAxis = chart.xAxis[0], points = chart.series[0].points, snakePosX = snake.attr('x') + snake.translateX; points.forEach(point = & gt; { const pointPosX = xAxis.toPixels(point.x); if (Math.abs(snakePosX - pointPosX) & lt; 20) { point.remove(); } }) }
我们的蛇学到了一些基本能力。当然,要创建一个功能齐全的游戏,我们还有很多地方需要改进,但是本文介绍了与蛇与Highcharts库集成有关的最重要部分。
随意使用代码检查游戏的最终版本。如果您有任何问题或意见,请告诉我,我们将很高兴收到您的来信。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢