Class handyGraphic.Sprite
Class defined in:handyGraphic.js:1199
Sprite オブジェクトは,図形や画像を表示するための視覚要素です. スプライトオブジェクトはStratgy,Commandデザインパターンを取り入れています. それぞれのデザインパターンの詳細については,他の資料を参照してください.
スプライトは自身を自分ではペイントせず,別のオブジェクトに委譲します. スプライトの描画はペインターオブジェクトを作成することによって実現します. これはStrategyデザインパターンの一例です. ペインターはスプライトの引数 painter としてスプライトに紐づけられます. ペインターの詳細はpaint メソッドに記載しています.
スプライトの振る舞いもスプライト内では定義せず,ビヘイビアオブジェクトを作成します. ビヘイビアはスプライトの振る舞いをカプセル化し,スプライトに対するコマンドのように扱われます. これはCommandデザインパターンの一例です. スプライトはビヘイビアを実行でき,ビヘイビアの配列を保持することができます. ビヘイビアの詳細はupdate メソッドに記載しています.
handyGraphic.Sprite
( name, painter, behaviors
)
handyGraphic.js:1199
Parameters:
-
name
<Object>スプライトの名前
-
painter
<Object>スプライトをペイントするオブジェクト
-
behaviors
<Object>スプライトの振る舞いの配列
Example
var isFall = true,
ballPainter = {
paint: function (sprite, win) {
Hg.Clear();
Hg.CircleFill(sprite.x, sprite.y, 20);
}
},
ballToFall = {
execute: function (sprite, win, time) {
if (isFall) { sprite.y -= 1; }
if (sprite.y <= 20) {
isFall = false;
}
}
},
ball = new Sprite("ball", ballPainter, [ ballToFall ]);
ball.x = 150;
ball.y = 400;
var scene1 = new Scene();
scene1.update = function () {
ball.update(win, 1);
};
scene1.draw = function () {
ball.paint(win);
};
scene1.start();
paint
( win
)
handyGraphic.js:1334
スプライトが保持するペインターを用いてペイントする. イメージペインターを実装することで,スプライトは画像を扱うことも可能です.
ペインターはvoid paint(sprite, win) というメソッドを必ず実装する必要があります. paintメソッドを備えていれば,ペインターの実装は開発者の自由にすることができます. ペインターは基本的に,実行時にスプライトに割り当てることが出来る交換可能なペイントアルゴリズムです. この仕組みはペインターがStrategyデザインパターンの一例だということを意味しています.
Parameters:-
win
<Object>スプライトを描画するウィンドウ
Example
// ペインターの一例
var ballPainter = {
paint: function (sprite, win) {
Hg.Clear();
Hg.CircleFill(sprite.x, sprite.y, 20);
}
};
var ball = new Sprite("ball", ballPainter);
ball.paint(win); // スプライトを描画する
update
( win, time
)
handyGraphic.js:1363
スプライトのビヘイビアを追加された順番で実行する.
ビヘイビアはvoid execute(sprite, win, time) というメソッドを必ず実装する必要があります. executeメセッドを備えていれば,ビヘイビアの実装は開発者の自由にすることができます. ビヘイビアはスプライトによって実行され,実行されることでスプライトに対する振る舞いを実現します. また,ビヘイビアは配列で保持しているため,いくつでも割り当てることができ,そしてビヘイビアを組み合わせることもできます. この仕組みはビヘイビアがCommandデザインパターンの一例だということを意味しています.
Parameters:-
win
<Object>スプライトを描画するウィンドウ
-
time
<Object>実行感覚
Example
// ビヘイビアの一例
var isFall = true,
var ballToFall = {
execute: function (sprite, win, time) {
if (isFall) { sprite.y -= 1; }
if (sprite.y <= 20) {
isFall = false;
}
}
};
var ball = new Sprite("ball", ballPainter, [ ballToFall ]);
ball.update(win, time); // 落下の振る舞いを実行する