翻譯|使用教程|編輯:楊鵬連|2020-07-09 10:37:16.780|閱讀 281 次
概述: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@fc6vip.cn
文章轉載自: