DartでもHTML5のcanvasが使えます。
Webアプリをウィザードで作成してから、HTMLを編集して、canvasを追加します。
<div> <canvas id="canvas" width="300" height="300"></canvas> </div>
次に示すように、CanvasElementでHTML5のcanvas要素を取得して、CanvasRenderingContext2Dオブジェクトを取得します。ここでは、clearRectで長方形領域をクリア、fillRectで長方形領域を塗りつぶし、fillStyleで色指定、という処理をしています。
#import('dart:html'); class webapp { CanvasElement canvas; CanvasRenderingContext2D ctx; static final String COLOR = "gray"; webapp() { canvas = document.query("#canvas"); ctx = canvas.getContext("2d"); } void drawFrame() { int w = canvas.width; int h = canvas.height; ctx.clearRect(0, 0, w, h); ctx.fillRect(10, 10, w-20, h-20); drawUnit(20, 20); } void drawUnit(num x, num y) { ctx.fillStyle = COLOR; ctx.fillRect(x, y, 15, 15); } void run() { drawFrame(); } } void main() { new webapp().run(); }
見ての通り、dart:htmlライブラリに含まれるCanvasのようなクラスはWebブラウザのIDLと自動的に結びつくようなので、HTML5のDOMについての知識が活かせます。なお、次のような特長があります。(参考:Sunflower Code Walkthrough | DartLang.org)
- arc(), fill()といったオブジェクトのメソッド名は変更されていない
- オブジェクト属性について、JavaScriptでそうであるように、通常は同じ名前となる
- イベントハンドラ(onXxxxメソッド)はイベント引数としてクロージャを指定するだけで簡単に用意できる
*「arc(), fill()といったオブジェクトのメソッド名は変更できない」を「arc(), fill()といったオブジェクトのメソッド名は変更されていない」と修正しました。
簡単ながら、DartでのCanvas利用方法を紹介しました。
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)