CreateJSを使ったアニメーションとマウスインタラクション
|
|
CreateJS Suite は、HTML5 の Canvas要素を使って、ダイナミックで インタラクティブな表現ができるJavaScriptの統合ライブラリだ。CreateJSのライブラリはどのように使うのか、そしてどうい う表現ができるのかを説明しよう。[追記: 2013年7月29日] YouTubeに録画ビデオが公開されたので以下にリンクした。
01 EaselJSはじめの一歩
01-01 EaselJSのJavaScriptファイルとCanvasをHTMLドキュメントに加える
EaselJS はCanvasを用いてオブジェクトを描く。canvas要素をbody要素の中に書くと、透明な矩形領域がつくられ、JavaScriptで描画できる。canvas要素の属性widthとheightで幅と高さを定める。また、JavaScriptでcanvas要素を扱うためにはid属性を加える。
<canvas id=canvas要素名 width=幅 height=高さ>
つぎのコードは幅240、高さ180ピクセルのcanvas要素を、"myCanvas"というid属性で定める。もっとも、canvas要素そのものは透明な矩形領域なので、このままではブラウザウィンドウには何も表れない。
<canvas id="myCanvas" width="240" height="180"></canvas>
|
EaselJSライブラリは、CreateJSのサイトからダウンロードしてscript要素に定める。ここでは、「CDN」からJavaScript(JS)ファイルを読み込むことにする(図001)。
図001■「DOWNLOAD EASELJS」のページ
script要素のscr属性に、JSファイルのパスを書き加える。つぎのscript要素でEaselJS 0.6.1が読込める。
<script src="http://code.createjs.com/easeljs-0.6.1.min.js"></script>
|
文書全体を読込み終えたとき初めに行う処理は、body要素のonload属性にイベントハンドラとして定める。イベントハンドラの関数では、canvas要素のid属性値("myCanvas")から参照をdocument.getElementById()メソッドで取得しておく。
<head>
<!-- ...[中略].. -->
<script src="http://code.createjs.com/easeljs-0.6.1.min.js"></script>
<script>
function initialize() {
var canvasElement = document.getElementById("myCanvas");
// CreateJSのスクリプト
}
</script>
</head>
<body onLoad="initialize()">
<canvas id="myCanvas" width="240" height="180"></canvas>
</body>
|
01-02 ステージにShapeインスタンスを置く
まず、CanvasにCreateJSのStageオブジェクトをつくる。インスタンスのつくり方はお約束どおり、new演算子でStageクラスのコンストラクタを呼び出す。引数はすでに参照を得ておいたscript要素だ。ただし、CreateJSのすべてのクラスは、名前空間「createjs」を添えて参照しなければならない。
new createjs.Stage(canvas要素)
クラス名の重複がないときや、名前空間のない古いCreateJSのサンプルを見るときは、CreateJSライブラリの読み込み前に、つぎのおまじないを加えると名前空間が省ける。
<script>
var createjs = window;
</script>
<script src="http://code.createjs.com/easeljs-0.6.1.min.js"></script>
|
本稿では、わかりやすさも考えて、名前空間は省いた書き方を用いる。上記のおまじないのscript要素があることを頭においてほしい。
new Stage(canvas要素)
EaselJSは、Canvasに表示されるオブジェクトに親子の入れ子関係をつくり、その階層全体を「表示リスト」(display list)としてまとめる。表示リストはアニメーションやインタラクションを扱うのに都合の良い仕組みだ。表示リストの頂点はStageオブジェクトで、ベクターグラフィックスの描けるShapeやビットマップを納めたBitmapといったオブジェクトのほか、子オブジェクトがもてるContainerオブジェクトによりツリー構造をなす(図002)。
図002■Stageオブジェクトを頂点に表示リストの階層がつくられる
Stageオブジェクトの表示リストにShapeオブジェクトを子として加える。Shapeオブジェクトには、次項でベクターグラフィックスを描く。インスタンスは、これもお約束どおり、Shape()コンストラクタでつくる。
new Shape()
Stageクラスは、表示リストをもつContainerクラスのサブクラスだ。子(DisplayObjectインスタンスを表示リストに加えるには、Container.addChild()メソッドの引数に子インスタンスを渡して呼出す。
親オブジェクト.addChild(小オブジェクト)
以下のコード001は、Stageオブジェクトの表示リストに、ShapeインスタンスをContainer.addChild()メソッドで加えている(第9〜11行目)。もっとも、Shapeオブジェクトにはまだベクターグラフィックスが描かれていないので、Canvasには何も表れない。そこで、alert()メソッドでインスタンスができたことを確かめた(図003)。
コード001■Stageオブジェクトの表示リストにShapeインスタンスを加える
- <script>
- var createjs = window;
- </script>
- <script src="http://code.createjs.com/easeljs-0.6.1.min.js"></script>
- <script>
- var stage;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- stage.addChild(myShape);
- alert(myShape);
- }
- </script>
|
図003■警告ダイアログボックスにShapeオブジェクトが示される
02 EaselJSの描画とアニメーション
02-01 Graphicsオブジェクトのメソッドで塗りの円を描く
Shapeインスタンスに青い塗りの円を描いてみる。描画に用いるのはGraphicsオブジェクトで、ShapeインスタンスのShape.graphicsプロパティから参照が得られる。塗りの色はGraphics.beginFill()メソッドで決める。引数のカラーはHTMLと同じ文字列で渡す。円はGraphics.drawCircle()メソッドで描く。引数は3つの数値で、円の中心のxy座標と半径だ。
Graphicsオブジェクト.beginFill(カラー)
Graphicsオブジェクト.drawCircle(x座標, y座標, 半径)
円の描画は関数(draw())として定める。引数にはGraphicsオブジェクトを渡す。後にスクリプト全体を掲げるコード002はShapeオブジェクトに、中心が座標(0, 0)で半径40ピクセルの円を青い塗りで描く。その中から描画に関わるコードをつぎに抜き書きした。
- var stage;
- function initialize() {
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- stage.addChild(myShape);
- draw(myShape.graphics);
- }
- function draw(myGraphics) {
- myGraphics.beginFill("#0000FF");
- myGraphics.drawCircle(0, 0, 40);
- stage.update();
- }
|
ふたつ説明を補う。第1は、Stage.update()メソッドの呼出だ(第14行目)。Canvasへの描画は負荷の高い処理のため、Canvasを描き替えるには原則としてStage.update()メソッドを呼出さなければならない。
Stageオブジェクト.update()
第2に、描画の関数(draw())で円が描かれる位置だ。Stageオブジェクトの表示リストに加えられたShapeインスタンスは、デフォルトではCanvasの座標(0, 0)つまり左上角に置かれるため、円の中心がCanvas左上角になってしまう。そこで、つぎのコード002は、Shapeインスタンスの座標をCanvasの中央に動かしている(第7〜8行目)。これで、青い塗りの円は、Canvasの真ん中に置かれる(図004)。
コード002■Shapeインスタンスから取出したGraphicsオブジェクトに円を描く
- var stage;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- stage.addChild(myShape);
- myShape.x = canvasElement.width / 2;
- myShape.y = canvasElement.height / 2;
- draw(myShape.graphics);
- }
- function draw(myGraphics) {
- myGraphics.beginFill("#0000FF");
- myGraphics.drawCircle(0, 0, 40);
- stage.update();
- }
|
図004■Canvasの真ん中に青い円が描かれた
02-02 ランダムな塗りの星形を描く
星形はGraphics.drawPolyStar()メソッドで描く。このメソッドは、つぎのように6つの引数をとる。初めの3つ、xy座標と山の半径はよいだろう。第4引数が星の頂点数だ。第5引数は、谷の深さを0以上1未満の小数値で定める。数値が大きいほど、谷が深くなる(図005)。0を渡すと谷はなくなって、正多角形が描ける。第6引数は、星形を描き始める頂点の角度だ。時計の12時の位置をてっぺんにするには、度数で-90を渡す。
Graphicsオブジェクト.drawPolyStar(x座標, y座標, 半径, 頂点数, 谷の深さ, 起点角)
図005■異なる谷の深さで描かれた5頂点の星形
すると、前掲コード002の描画の関数(draw())をつぎのように書替えると、Shapeインスタンスの中心座標(0, 0)の位置に半径40ピクセルで5頂点の星形が描ける(図006)。
function draw(myGraphics) {
myGraphics.beginFill("#0000FF");
// myGraphics.drawCircle(0, 0, 40);
myGraphics.drawPolyStar(0, 0, 40, 5, 0.6, -90);
stage.update();
}
|
図006■Canvasの真ん中に星形が描かれた
さらに、塗り色をランダムに変えてみたい。カラー値は整数だ。最小値から最大値までのランダムな整数は、Mathクラスのメソッドを用いて、つぎの式で求められる。
Math.floor(Math.random() * (最大値 - 最小値 + 1)) + 最小値
ところが、Graphicsクラスのメソッドには、カラーを文字列として渡さなければならない。静的メソッドGraphics.getRGB()にカラー値の整数を渡すと、そのカラーを示す文字列にして返してくれる。
Graphics.getRGB(カラーの整数値)
こうして、ランダムな塗り色で星形を描く関数(myShape())に書替えたのが、つぎのコード003だ。HTMLドキュメントをロードし直すたびに、星形の塗り色が変わる。
コード003■Shapeオブジェクトにランダムな塗りの星形を描く
- var stage;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- stage.addChild(myShape);
- myShape.x = canvasElement.width / 2;
- myShape.y = canvasElement.height / 2;
- draw(myShape.graphics);
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, 40, 5, 0.6, -90);
- stage.update();
- }
|
02-03 EaselJSを使ったスクリプトによるアニメーション
EaselJSのTickerクラスは、決まった間隔でTicker.tickイベントを送る。静的メソッドTicker.addEventListener()でリスナー関数を登録すると、その関数が一定間隔で呼出される。
Ticker.addEventListener("tick", リスナー関数)
前掲コード003にTickerクラスによるアニメーションの仕組みを加え、Canvasに描いた星形を回したのが後に掲げるコード004だ。新たに加えたスクリプトをつぎに抜書きした。まず、初期設定の関数(initialize())にTicker.addEventListener()メソッドの呼出しを加え、Ticker.tickイベントにリスナー関数(rotate())を加えた(第11行目)。
リスナー関数(rotate())は、星形のShapeオブジェクトをDisplayObject.rotationプロパティで回している(第21行目)。プロパティ値の単位は度数だ。なお、この関数からShapeオブジェクトを扱えるよう、変数(myShape)は関数の外で宣言した(第2行目)。
- var myShape;
- function initialize() {
- myShape = new Shape();
- Ticker.addEventListener("tick", rotate);
- }
- function rotate() {
- myShape.rotation += 5;
- stage.update();
- }
|
そして、アニメーションさせるリスナー関数(rotate())の最後に、忘れていけないのがStage.update()メソッドの呼出しだ(第22行目)。これで、Canvasに描いた星形が回るアニメーションになる。スクリプト全体は、つぎのコード004のとおりだ。
コード004■Tickerクラスでオブジェクトをアニメーションさせる
- var stage;
- var myShape;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- myShape = new Shape();
- stage.addChild(myShape);
- myShape.x = canvasElement.width / 2;
- myShape.y = canvasElement.height / 2;
- draw(myShape.graphics);
- Ticker.addEventListener("tick", rotate);
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, 40, 5, 0.6, -90);
- stage.update();
- }
- function rotate() {
- myShape.rotation += 5;
- stage.update();
- }
|
03 TweenJSを使ったトゥイーンアニメーション
03-01 簡単なトゥイーンアニメーション
TweenJSライブラリを使って、まずは簡単なトゥイーンアニメーションをつくろう。前述コード003「Shapeオブジェクトにランダムな塗りの星形を描く」をもとに、書替えることにする。あとのスクリプティングをしやすくするため、つぎの抜書きのように少し手直ししておく(行番号は後に全体を掲げるコード005にもとづく)。変数(nWidthとnHeight、およびnRadius)を増やした(第8〜10行目)ほか、Shapeインスタンスの垂直位置をCanvasの上端にした(第19行目)。
- var nWidth;
- var nHeight;
- var nRadius = 40;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- var myShape = new Shape();
- nWidth = canvasElement.width;
- nHeight = canvasElement.height;
- myShape.x = nWidth / 2;
- myShape.y = -nRadius;
- draw(myShape.graphics);
- }
- function draw(myGraphics) {
- myGraphics.drawPolyStar(0, 0, nRadius, 5, 0.6, -90);
- }
|
Shapeインスタンスにトゥイーンアニメーションを加える。まず、TweenJSを使ってトゥイーンアニメーションさせるため、ライブラリのJavaScript(JS)ファイルをscript要素で読込む(第5行目)。
- <script src="http://code.createjs.com/tweenjs-0.4.1.min.js"></script>
|
TweenJSクラスそのものは、プロパティ値を刻々と変えるだけだ。アニメーションとして表示するには、Ticker.tickイベントのリスナー関数(tick())でStage.update()メソッドを呼出して画面を描替えなければならない(第28〜30行目)。
トゥイーンを定める関数(setTween())は、インスタンスにごく簡単なアニメーションを加える。そのために用いるのが、Tween()コンストラクタとTween.to()メソッドのふたつだ。
- Tween()コンストラクタでトゥイーンするインスタンスと基本設定を定める。
- Tween.to()メソッドにトゥイーンするプロパティとその最終的な値、間隔、イージングの仕方を与える。
Tween()コンストラクタには、第1引数でトゥイーンするオブジェクトを定める。また、第2引数に、必要があれば初期設定のプロパティをObjectインスタンスに納めて渡す。。
new Tween(対象オブジェクト, 初期設定Object)
そして、Tween.to()メソッドには、第1引数にトゥイーンするプロパティ値のObjectインスタンス、第2引数はその間隔、第3引数にはイージングの関数を渡す。さまざまなイージングの関数が、Easeクラスに定められている[*1]。
Tweenオブジェクト.to(プロパティ値のObject, 間隔, イージング関数)
Tween.to()メソッドの第1引数には、ふたつのプロパティyとrotationをObjectインスタンスに納めて、インスタンスをCanvasの下端まで垂直に動かしながら360度回す。また、第2引数のアニメーションの間隔は5秒(5000ミリ秒)だ。そして、第3引数のイージングとして、トゥイーンの最後にバウンドする静的メソッドEase.bounceOut()を用いた(第26行目)。
- function initialize() {
- setTween(myShape);
- Ticker.addEventListener("tick", tick);
- }
- function setTween(target) {
- var myTween = new Tween(target);
- myTween.to({y: nHeight - nRadius, rotation:360}, 5000, Ease.bounceOut);
- }
- function tick() {
- stage.update();
- }
|
これで星形のインスタンスが上から回りながら落ちてきて、下で弾むトゥイーンアニメーションになる(図007)。
図007■星形のインスタンスが回りながら落ちて弾む
コード005■インスタンスを回しながら垂直に落として弾ませるトゥイーンアニメーション
- <script>
- var createjs = window;
- </script>
- <script src="http://code.createjs.com/easeljs-0.6.1.min.js"></script>
- <script src="http://code.createjs.com/tweenjs-0.4.1.min.js"></script>
- <script>
- var stage;
- var nWidth;
- var nHeight;
- var nRadius = 40;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- nWidth = canvasElement.width;
- nHeight = canvasElement.height;
- stage.addChild(myShape);
- myShape.x = nWidth / 2;
- myShape.y = -nRadius;
- draw(myShape.graphics);
- setTween(myShape);
- Ticker.addEventListener("tick", tick);
- }
- function setTween(target) {
- var myTween = new Tween(target);
- myTween.to({y: nHeight - nRadius, rotation:360}, 5000, Ease.bounceOut);
- }
- function tick() {
- stage.update();
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, nRadius, 5, 0.6, -90);
- stage.update();
- }
- </script>
|
[*1] Easeクラスに備わるさまざまなイージングの静的メソッドについては、TwweenJSのサイトに掲げられた「DEMOS」(デモ)の「SPARK TABLE」で、それぞれの値の変わり方がグラフで確かめられる(図008)。
図008■Easeクラスのイージングのメソッドによる値の変化が確かめられる「SPARK TABLE」
|
03-03 複数のトゥイーンを組合わせる
TweenJSのトゥイーンはいくつも組合わせられる。星のShapeインスタンスが落ちて完全に弾み終わったら、1秒「ため」をつくり、その後フェードアウトしてみよう。Tweenインスタンスに定めたトゥイーンは、「キュー」というリストに納められて順に実行される。だから、アニメーションさせたい順に、トゥイーンを続けざまに加えて構わない。
トゥイーンの「ため」は、Tween.wait()メソッドに待ち時間を渡して定める。
Tween.wait(待ち時間)
以下のコード006に、1秒の待ちと、2.5秒のフェードアウトの(alphaプロパティを0にする)トゥイーンを加えた(第21〜22行目)。フェードアウトのイージングに定めたEase.circIn()メソッドは値を、始めはゆっくり、次第に速く変えていく前掲図008参照)。これでバウンドし終えたShapeインスタンスが1秒そのままで、その後2.5秒かけてフェードアウトする(図009)。
図009■バウンドし終えた星のインスタンスが1秒後にフェードアウトする
- function setTween(target) {
- var myTween = new Tween(target, {loop:true});
- myTween.to({y: nHeight - nRadius, rotation:360}, 5000, Ease.bounceOut);
- myTween.wait(1000);
- myTween.to({alpha:0}, 2500, Ease.circIn);
- }
|
さらに、Tween()コンストラクタに第2引数を加えた(第19行目)。渡すObjectインスタンスのloopプロパティにtrueを与えている。すると、トゥイーンアニメーションをひととおり終えると、また頭から繰り返される。つぎのコード006にスクリプト全体を掲げた。
コード006■複数のトゥイーンを定めて順に実行する
- var stage;
- var nWidth;
- var nHeight;
- var nRadius = 40;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- var myShape = new Shape();
- nWidth = canvasElement.width;
- nHeight = canvasElement.height;
- stage.addChild(myShape);
- myShape.x = nWidth / 2;
- myShape.y = -nRadius;
- draw(myShape.graphics);
- setTween(myShape);
- Ticker.addEventListener("tick", tick);
- }
- function setTween(target) {
- var myTween = new Tween(target, {loop:true});
- myTween.to({y: nHeight - nRadius, rotation:360}, 5000, Ease.bounceOut);
- myTween.wait(1000);
- myTween.to({alpha:0}, 2500, Ease.circIn);
- }
- function tick() {
- stage.update();
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, nRadius, 5, 0.6, -90);
- stage.update();
- }
|
04 EaselJSでマウスクリックとドラッグ&ドロップを扱う
04-01 インスタンスをマウスクリックでまわす
インスタンスのクリックは、DisplayObject.clickイベントで扱う。EventDispatcher.addEventListener()メソッドにより、イベント"click"にリスナー関数を加えればよい。
オブジェクト.addEventListener("click", リスナー関数)
コード004「Tickerクラスでオブジェクトをアニメーションさせる」をもとにして、星形のインスタンスをクリックしたら回るようにする。書替えたスクリプト全体は、後にコード007として掲げた。手をいれるのは、つぎに抜き書きしたように、わずかにステートメントひとつだ。
- var myShape;
- function initialize() {
- myShape = new Shape();
- myShape.addEventListener("click", rotate);
// Ticker.addEventListener("tick", rotate);
- }
- }
- function rotate() {
- myShape.rotation += 15;
- stage.update();
- }
|
これで、星のインスタンスをクリックするたびに、15度ずつ回るようになる(図010)。スクリプト全体は以下のコード007のとおりだ。
図010■インスタンスをクリックするたびに回る
コード007■インスタンスをクリックしたときに回す
- var stage;
- var myShape;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- myShape = new Shape();
- stage.addChild(myShape);
- myShape.x = canvasElement.width / 2;
- myShape.y = canvasElement.height / 2;
- myShape.addEventListener("click", rotate);
- draw(myShape.graphics);
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, 40, 5, 0.6, -90);
- stage.update();
- }
- function rotate() {
- myShape.rotation += 15;
- stage.update();
- }
|
04-02 インスタンスをドラッグする
インスタンスのドラッグ&ドロップは、ふたつのイベントを組合わせて扱う。まず、インスタンスのうえでマウスボタンを押したとき、ドラッグを始める。つぎに、マウスを動かしたとき、インスタンスの位置をポインタに追随させる。気をつけなければならないのは、イベントリスナーを登録するオブジェクトのクラスだ。
表001■マウス操作のイベントとリスナーを登録するクラス
マウスイベント |
マウス操作 |
クラス |
click
|
マウスボタンをクリックする
|
DisplayObject
|
mousedown
|
マウスボタンを押す
|
DisplayObject
|
mousemove
|
マウスを動かす
|
MouseEvent
|
mouseup
|
マウスボタンを放す
|
MouseEvent
|
マウスボタンを押すDisplayObject.mousedownイベントのリスナーは、ドラッグしたいインスタンスにリスナーを加える。ところが、MouseEvent.mousemoveイベントについては、マウスボタンを押して呼出されるリスナー関数が引数に受け取るイベントオブジェクトにリスナーを登録しなければならない。
すると、マウスドラッグの扱いは、JavaScriptコードでつぎのように組立てることになる。行番号は、後に全体を掲げるコード008にもとづく。
- var myShape;
- function initialize() {
- myShape = new Shape();
- myShape.addEventListener("mousedown", startDrag);
- }
- function startDrag(eventObject) {
- eventObject.addEventListener("mousemove", drag);
- }
- function drag(eventObject) {
- var mouseX = eventObject.stageX;
- var mouseY = eventObject.stageY;
- myShape.x = mouseX;
- myShape.y = mouseY;
- stage.update();
- }
|
インスタンスをマウスポインタと一緒に動かすには、ポインタ座標を調べなければならない。MouseEvent.mousemoveイベントのリスナー関数が引数に受取るイベントオブジェクトから、プロパティMouseEvent.stageXとMouseEvent.stageYでxy座標値がとれる。スクリプト全体は、つぎのコード008のとおりだ。
コード008■インスタンスをドラッグ&ドロップする
- var stage;
- var myShape;
- function initialize() {
- var canvasElement = document.getElementById("myCanvas");
- stage = new Stage(canvasElement);
- myShape = new Shape();
- stage.addChild(myShape);
- myShape.x = canvasElement.width / 2;
- myShape.y = canvasElement.height / 2;
- myShape.addEventListener("mousedown", startDrag);
- draw(myShape.graphics);
- }
- function startDrag(eventObject) {
- eventObject.addEventListener("mousemove", drag);
- }
- function drag(eventObject) {
- var mouseX = eventObject.stageX;
- var mouseY = eventObject.stageY;
- myShape.x = mouseX;
- myShape.y = mouseY;
- stage.update();
- }
- function draw(myGraphics) {
- var randomNumber = Math.floor(Math.random() * 0xFFFFFF);
- var randomColor = Graphics.getRGB(randomNumber);
- myGraphics.beginFill(randomColor);
- myGraphics.drawPolyStar(0, 0, 40, 5, 0.6, -90);
- stage.update();
- }
|
05 もう少し見栄えのするサンプル
- トゥイーンとクリックを組合わせる
- 『WebクリエイターのためのCreateJSスタイルブック』
作成者: 野中文雄
更新日: 2013年7月29日 YouTubeの録画ビデオのリンクを加えた。
更新日: 2013年7月13日 jsdo.itのコードサンプルを作成してリンク追加。若干の字句と体裁の修正。
作成日: 2013年7月12日