Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/lib/jgame.d.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 170 - (show annotations) (download) (as text)
Mon May 4 03:43:41 2015 UTC (9 years ago) by tsugehara
File MIME type: text/texmacs
File size: 165417 byte(s)


1 declare module jg {
2 /**
3 * 座標を示すインターフェース
4 */
5 interface CommonOffset {
6 /** 横座標 */
7 x: number;
8 /** 縦座標 */
9 y: number;
10 }
11 /**
12 * 大きさを示すインターフェース
13 */
14 interface CommonSize {
15 /** 横幅 */
16 width: number;
17 /** 縦幅 */
18 height: number;
19 }
20 /**
21 * 領域を示すインターフェース
22 */
23 interface CommonArea extends CommonOffset, CommonSize {
24 }
25 /**
26 * 四角形を現すインターフェース
27 */
28 interface IRectangle {
29 /** 左位置 */
30 left: number;
31 /** 上位置 */
32 top: number;
33 /** 右位置 */
34 right: number;
35 /** 下位置 */
36 bottom: number;
37 }
38 }
39 declare module jg {
40 /**
41 * 方向
42 */
43 enum Angle {
44 Unknown = 0,
45 Left = 1,
46 Right = 2,
47 Up = 3,
48 Down = 4,
49 }
50 /**
51 * 描画モード。Transfer = デフォルト、Flip = フリップ、Direct = 直接。
52 * jgame.jsでは動作に支障が無いことが確認出来る環境では、Directを使うことを推奨している。
53 */
54 enum RenderTransferMode {
55 Unknown = 0,
56 Transfer = 1,
57 Flip = 2,
58 Direct = 3,
59 }
60 /**
61 * 入力イベント種別
62 */
63 enum InputEventType {
64 Unknown = 0,
65 Keyboard = 1,
66 Point = 2,
67 }
68 /**
69 * 入力イベントの挙動
70 */
71 enum InputEventAction {
72 Unknown = 0,
73 Down = 1,
74 Move = 2,
75 Up = 3,
76 }
77 /**
78 * キーの種別
79 */
80 enum Keytype {
81 Unknown = 0,
82 Left = 1,
83 Right = 2,
84 Up = 3,
85 Down = 4,
86 Enter = 5,
87 Esc = 6,
88 }
89 /**
90 * Shapeの描画スタイル。塗りつぶす(Fill)か線(Stroke)かを指定。
91 */
92 enum ShapeStyle {
93 /** 未定義 */
94 Unknown = 0,
95 /**
96 * 線を描画
97 */
98 Stroke = 1,
99 /**
100 *
101 塗りつぶして描画
102 */
103 Fill = 2,
104 }
105 /**
106 * Shapeの形状。
107 * Rectで四角、Arcで丸
108 */
109 enum ShapeType {
110 Unknown = 0,
111 Rect = 1,
112 Arc = 2,
113 }
114 /**
115 * エフェクトの種類
116 */
117 enum EffectType {
118 None = 0,
119 Fade = 1,
120 Mosaic = 2,
121 Blur = 3,
122 SlideUp = 4,
123 SlideDown = 5,
124 SlideLeft = 6,
125 SlideRight = 7,
126 WipeUp = 8,
127 WipeDown = 9,
128 WipeLeft = 10,
129 WipeRight = 11,
130 WipeFadeUp = 12,
131 WipeFadeDown = 13,
132 WipeFadeLeft = 14,
133 WipeFadeRight = 15,
134 BoxOut = 16,
135 BoxOut45 = 17,
136 BoxIn = 18,
137 BoxIn45 = 19,
138 ArcOut = 20,
139 ArcIn = 21,
140 }
141 }
142 /**
143 * windowインターフェースの拡張
144 */
145 interface Window {
146 createCanvas(width: number, height: number): HTMLCanvasElement;
147 }
148 declare module jg {
149 /**
150 * 四角形クラス
151 */
152 class Rectangle implements IRectangle {
153 /** 左座標 */
154 left: number;
155 /** 上座標 */
156 top: number;
157 /** 右座標 */
158 right: number;
159 /** 下座標 */
160 bottom: number;
161 /**
162 * コンストラクタ
163 * @param left 左座標
164 * @param top 上座標
165 * @param right 右座標
166 * @param bottom 下座標
167 */
168 constructor(left?: number, top?: number, right?: number, bottom?: number);
169 /**
170 * 多少の座標がこの四角形に当たっているかを判定する
171 * @param point 判定対象の座標
172 */
173 hitTest(point: CommonOffset): boolean;
174 /**
175 * 対象の座標をこの四角形に吸着させる
176 * @param point 対象の座標
177 */
178 fit(point: CommonOffset): void;
179 /**
180 * この四角形の横幅を得る
181 */
182 width(): number;
183 /**
184 * この四角形の縦幅を得る
185 */
186 height(): number;
187 }
188 }
189 declare module jg {
190 /**
191 * ============================================================================================
192 * Easing Equations v2.0
193 * September 1, 2003
194 * (c) 2003 Robert Penner, all rights reserved.
195 * This work is subject to the terms in http://www.robertpenner.com/easing_terms_of_use.html.
196 * ============================================================================================
197 */
198 /**
199 * イージング関数ライブラリ
200 * enchant.jsプロジェクトで
201 * 「ActionScript で広く使われている Robert Penner による Easing Equations を JavaScript に移植した」
202 * ライブラリを、さらにType script用に移植したもの。
203 *
204 * @see http://www.robertpenner.com/easing/
205 * @see http://www.robertpenner.com/easing/penner_chapter7_tweening.pdf
206 *
207 * Easing function library, from "Easing Equations" by Robert Penner.
208 */
209 class Easing {
210 static LINEAR(t: number, b: number, c: number, d: number): number;
211 static SWING(t: number, b: number, c: number, d: number): number;
212 static QUAD_EASEIN(t: number, b: number, c: number, d: number): number;
213 static QUAD_EASEOUT(t: number, b: number, c: number, d: number): number;
214 static QUAD_EASEINOUT(t: number, b: number, c: number, d: number): number;
215 static CUBIC_EASEIN(t: number, b: number, c: number, d: number): number;
216 static CUBIC_EASEOUT(t: number, b: number, c: number, d: number): number;
217 static CUBIC_EASEINOUT(t: number, b: number, c: number, d: number): number;
218 static QUART_EASEIN(t: number, b: number, c: number, d: number): number;
219 static QUART_EASEOUT(t: number, b: number, c: number, d: number): number;
220 static QUART_EASEINOUT(t: number, b: number, c: number, d: number): number;
221 static QUINT_EASEIN(t: number, b: number, c: number, d: number): number;
222 static QUINT_EASEOUT(t: number, b: number, c: number, d: number): number;
223 static QUINT_EASEINOUT(t: number, b: number, c: number, d: number): number;
224 static SIN_EASEIN(t: number, b: number, c: number, d: number): number;
225 static SIN_EASEOUT(t: number, b: number, c: number, d: number): number;
226 static SIN_EASEINOUT(t: number, b: number, c: number, d: number): number;
227 static CIRC_EASEIN(t: number, b: number, c: number, d: number): number;
228 static CIRC_EASEOUT(t: number, b: number, c: number, d: number): number;
229 static CIRC_EASEINOUT(t: number, b: number, c: number, d: number): number;
230 static ELASTIC_EASEIN(t: number, b: number, c: number, d: number, a?: number, p?: number): number;
231 static ELASTIC_EASEOUT(t: number, b: number, c: number, d: number, a?: number, p?: number): number;
232 static ELASTIC_EASEINOUT(t: number, b: number, c: number, d: number, a?: number, p?: number): number;
233 static BOUNCE_EASEOUT(t: number, b: number, c: number, d: number): number;
234 static BOUNCE_EASEIN(t: number, b: number, c: number, d: number): number;
235 static BOUNCE_EASEINOUT(t: number, b: number, c: number, d: number): number;
236 static BACK_EASEIN(t: number, b: number, c: number, d: number, s?: number): number;
237 static BACK_EASEOUT(t: number, b: number, c: number, d: number, s?: number): number;
238 static BACK_EASEINOUT(t: number, b: number, c: number, d: number, s?: number): number;
239 static EXPO_EASEIN(t: number, b: number, c: number, d: number): number;
240 static EXPO_EASEOUT(t: number, b: number, c: number, d: number): number;
241 static EXPO_EASEINOUT(t: number, b: number, c: number, d: number): number;
242 }
243 }
244 declare module jg {
245 /**
246 * 描画オプションをあらわすインターフェース
247 */
248 interface IEntityOptions {
249 /** 回転確度 */
250 rotate: number;
251 /** 位置 */
252 translate: CommonOffset;
253 /** 変形 */
254 transform: {
255 m11: number;
256 m12: number;
257 m21: number;
258 m22: number;
259 dx: number;
260 dy: number;
261 };
262 /** 拡縮 */
263 scale: CommonOffset;
264 /** 左上を基準とした拡縮 */
265 purescale: CommonOffset;
266 /** 透明度 */
267 globalAlpha?: number;
268 /** フォント */
269 font?: string;
270 /** 塗りつぶしスタイル */
271 fillStyle?: string;
272 /** 線スタイル */
273 strokeStyle?: string;
274 /**
275 * 線の末端形状。
276 * butt, round, squareのいずれかを指定。デフォルトはbutt
277 */
278 lineCap?: string;
279 /**
280 * 線の結合形状。
281 * bevel, round, miterのいずれかを指定。デフォルトはmiter
282 */
283 lineJoin?: string;
284 /** 線の太さ */
285 lineWidth?: number;
286 /** マイター限界比率 */
287 miterLimit?: string;
288 /** 影の量 */
289 shadowBlur?: number;
290 /** 影の色 */
291 shadowColor?: string;
292 /** 影のオフセットX座標 */
293 shadowOffsetX?: number;
294 /** 影のオフセットY座標 */
295 shadowOffsetY?: number;
296 /**
297 * 文字の方向。
298 * start, end, left, right, centerのいずれかを指定。デフォルトはstart
299 */
300 textAlign?: string;
301 /**
302 * 文字基準線。
303 * top, hanging, middle, alphabetic, ideographic, bottomのいずれかを指定。デフォルトはalphabetic
304 */
305 textBaseline?: string;
306 /**
307 * 結合方式。以下いずれか、または各種ベンダー拡張方式を指定。
308 * source-atop
309 * source-in
310 * source-out
311 * source-over (default)
312 * destination-atop
313 * destination-in
314 * destination-out
315 * destination-over
316 * lighter
317 * copy
318 * xor
319 */
320 globalCompositeOperation?: string;
321 }
322 /**
323 * デフォルトの描画オプション
324 */
325 var ENTITY_OPTIONS_DEFAULT_VALUES: IEntityOptions;
326 /**
327 * jgame.jsにおいて、最も基本的な描画単位です。より正確な名称はエンティティ(Entity)です。
328 * Sprite、Shape、Label、Tile、さらにはLayerもこのクラスを継承して作られています。jgame.jsで描画される全てのオブジェクトはEntityであり、Entityでないもの(Sceneなど)は描画されません。
329 * 動作速度が重用視されるjgame.jsにおいて、Gameクラス、Rendererクラスと並ぶ最も重要なクラスですが、通常のユーザがこのクラスを利用することはありません。
330 * このクラスを利用するのは、このクラスを継承して新しい描画オブジェクトを作るなど、一歩進んだ使い方をする時でしょう。
331 */
332 class E {
333 /** X座標 */
334 x: number;
335 /** Y座標 */
336 y: number;
337 /** 横幅 */
338 width: number;
339 /** 縦幅 */
340 height: number;
341 /** Timelineのインスタンス。通常このフィールドを直接参照せず、tl()メソッドを通して参照する */
342 _tl: Timeline;
343 /** 現在のシーン */
344 scene: Scene;
345 /** 親Entity */
346 parent: E;
347 /** 初期化が可能な状態になった場合に実行する処理群 */
348 active_queue: Function[];
349 /** startメソッドを実行済みかどうかのフラグ */
350 started: boolean;
351 /** 前回の描画から更新されているかを表すフラグ */
352 isUpdated: boolean;
353 /** 変形などを無効化するかのフラグ。これがセットされているものは、座標計算を含めて自前で描画処理を実装する必要があるが、その分高速 */
354 disableTransform: boolean;
355 /** 子Entity */
356 entities: E[];
357 /** ポイントイベントを受信するかどうか */
358 pointCapture: boolean;
359 /** ポインティングデバイスで押下処理が発生したことを示すイベント。InputPointEventをパラメータとして受け取る */
360 pointDown: Trigger;
361 /** ポインティングデバイスで押下処理が終了したことを示すイベント。InputPointEventをパラメータとして受け取る */
362 pointUp: Trigger;
363 /** ポインティングデバイスで押下処理中に移動が発生したことを示す。InputPointEventをパラメータとして受け取る */
364 pointMove: Trigger;
365 /** 描画オプション。詳細はIEntityOptionsなどを参照 */
366 options: Object;
367 /** このEntityの子Entityを描画する際に利用する描画順制御関数 */
368 orderDraw: (target: E) => void;
369 /** フィルタ */
370 filter: ImageFilter.FilterChain;
371 /** スクロール座標 */
372 scroll: CommonOffset;
373 /** 透明度 */
374 opacity: number;
375 /**
376 * コンストラクタ
377 */
378 constructor();
379 /**
380 * ポインティングイベントを有効化する
381 */
382 enablePointingEvent(): void;
383 /**
384 * ポインティングイベントを無効化する。
385 * pointDown, pointMove, pointUpに設定したハンドラの解放処理は別途行う必要がある
386 */
387 disablePointingEvent(): void;
388 /**
389 * 描画オプションを一つ削除する。詳細はIEntityOptionsなどを参照
390 * 一つも描画オプションを指定していない状態が最速であるため、利用が終わったオプションは迅速な削除が推奨される。
391 * @param name 削除するオプション
392 */
393 removeDrawOption(name: string): void;
394 /**
395 * 描画オプションを指定する。詳細はIEntityOptionsなどを参照
396 * @param name 指定するオプション名
397 * @param value オプションに指定する値
398 */
399 setDrawOption(name: string, value: any): void;
400 /**
401 * 描画オプションの現在値を取得する。
402 * なお、指定されていない場合はデフォルト値を返すため、指定されているかどうかの判定でこのメソッドを利用してはならない。
403 * 指定されているかどうかの判定は、optionsフィールドを直接見る必要がある。
404 * @param name 取得する描画オプション名
405 */
406 getDrawOption(name: string): any;
407 /**
408 * 指定座標に移動し、更新フラグを立てる。x, yフィールドを直接操作すると、更新フラグを立てずに移動させることも可能。
409 * @param x 移動先x座標
410 * @param y 移動先y座標
411 */
412 moveTo(x: number, y: number): void;
413 /**
414 * 現在位置から相対的に移動させ、更新フラグを立てる。x, yフィールドを直接操作すると、更新フラグを立てずに移動させることも可能。
415 * @param x x座標の移動量
416 * @param y y座標の移動量
417 */
418 moveBy(x: number, y: number): void;
419 /**
420 * 指定座標にスクロールさせる
421 * @param x スクロール先x座標
422 * @param y スクロール先y座標
423 */
424 scrollTo(x: number, y: number): void;
425 /**
426 * 相対的にスクロールさせる
427 * @param x x座標のスクロール量
428 * @param y y座標のスクロール量
429 */
430 scrollBy(x: number, y: number): void;
431 /**
432 * このEntityの初期化処理を行う
433 */
434 activate(): void;
435 /**
436 * 初期化処理を追加する
437 */
438 addActiveQueue(f: Function): void;
439 /**
440 * このEntityをシーンに追加する
441 * @param scene 追加対象scene
442 * @param layerName 追加対象レイヤー名。省略時はrootになる
443 */
444 appendTo(scene: Scene, layerName?: string): void;
445 /**
446 * このEntityを削除する。
447 * Layerはこのメソッドでは削除出来ないため、Scene.deleteLayerメソッドを利用する必要がある
448 */
449 remove(): void;
450 /**
451 * このEntityの指定位置に子供を挿入する。
452 * @param entity 挿入対象の子Entity
453 * @param index 挿入位置
454 */
455 insert(entity: E, index: any): void;
456 /**
457 * このEntityに子供を追加する
458 * @param entity 追加対象の子Entity
459 */
460 append(entity: E): void;
461 /**
462 * このEntityから子供を削除する
463 * @param entity 削除対象の子Entity
464 */
465 removeChild(entity: E): boolean;
466 /**
467 * このEntityを活性化させる。このメソッドを呼び出した後は、game.updateイベントのハンドラとしてE.updateメソッドが呼び出されるようになる
468 */
469 start(): void;
470 /**
471 * このEntityを非活性化させる。
472 */
473 stop(): void;
474 /**
475 * 指定のタイマーを稼動させる。
476 * @param wait タイマー起動間隔をミリ秒で指定
477 * @param method タイマーのコールバック。省略時はintervalメソッドが指定される
478 */
479 startTimer(wait: number, method?: Function): void;
480 /**
481 * 指定のタイマーを停止させる
482 * @param wait 停止対象タイマーの起動間隔
483 * @param method 停止対象タイマーのコールバック。省略時はintervalメソッド
484 */
485 stopTimer(wait: number, method?: Function): void;
486 /**
487 * 更新フラグを立てる。これが立っていないと再描画されない。
488 * 高速描画を目指すjgame.jsで一番多いトラブルが更新フラグ立て忘れなので、怪しい場合は呼び出してみるといいかもしれない。
489 * なお、親要素がある場合は親要素の更新フラグ更新を優先させるため、本メソッドを呼び出した後に必ずthis.isUpdate()の戻り値がtrueになるわけではない
490 */
491 updated(): void;
492 /**
493 * このEntityのTimelineを取得する
494 */
495 tl(): Timeline;
496 /**
497 * このEntityを破棄する
498 */
499 destroy(): void;
500 /**
501 * このEntityのゲームから見たオフセット位置を取得する。
502 * x, y単体とは異なり、親要素の座標も考慮に入れた座標を返す。
503 */
504 offset(): CommonOffset;
505 /**
506 * この要素のゲーム中での領域を取得する。
507 * offsetと同じく、親要素の座標も考慮に入れた領域を返す。
508 */
509 rect(): Rectangle;
510 /**
511 * 指定の座標がこの要素と接触しているかを判定する。
512 * @param point 判定する座標。
513 */
514 hitTest(point: CommonOffset): boolean;
515 /**
516 * 指定の座標との距離を取得する。中心点からの距離である点に注意
517 * @param point 距離を取得する座標。CommonAreaの場合領域の中心からの距離を取得する
518 */
519 getDistance(point: CommonOffset): CommonOffset;
520 /**
521 * 指定座標に合致する要素を返す。子要素や自分自身も含めて判定する
522 * @param point 判定する座標
523 * @param force trueの場合、各EntityのenablePointingEvent設定値を無視
524 */
525 getEntityByPoint(point: CommonOffset, force?: boolean): E;
526 /**
527 * このEntityをSpriteに変換する
528 */
529 createSprite(): Sprite;
530 /** startによる活性化で呼び出されるGame.updateイベントのイベントハンドラ */
531 update(t: number): void;
532 /** startTimerによって呼び出されるタイマーのコールバック */
533 interval(): void;
534 /**
535 * 描画
536 * @param context 描画対象context
537 */
538 draw(context: CanvasRenderingContext2D): void;
539 /**
540 * このEntityを表示し、更新フラグを立てる
541 */
542 show(): void;
543 /**
544 * このEntityを非表示にし、更新フラグを立てる
545 */
546 hide(): void;
547 }
548 }
549 declare module jg {
550 /**
551 * 図形を現すクラス。クリッピング領域の指定にも使える
552 */
553 class Shape extends E {
554 /** Shapeの描画スタイル。塗りつぶすか外周かを指定。変更する際はsetStyleを利用 */
555 style: ShapeStyle;
556 /** Shapeの形状。円か四角 */
557 type: ShapeType;
558 /** 同期対象オブジェクト */
559 syncObj: any;
560 /** 同期処理を行う関数 */
561 syncFunc: (shape: Shape) => void;
562 /** Math.PI * 2 */
563 static PI_200_PER: number;
564 /** クリッピング領域にするかどうかを指定。変更する場合はこのプロパティを直接操作せず、setClipメソッドを利用する */
565 clip: boolean;
566 /**
567 * 新しいShapeクラスを生成する
568 * @param width 横幅。
569 * @param height 縦幅。ShapeTypeがArcの場合無視される
570 * @param style Shapeの描画スタイル。デフォルトはShapeStyle.Stroke(線)
571 * @param color Shapeの色。デフォルトは黒
572 * @param type Shapeの形状。デフォルトはShapeType.Rect(四角)
573 */
574 constructor(width: number, height: number, style?: ShapeStyle, color?: any, type?: ShapeType);
575 /**
576 * このオブジェクトをクリップモードにする。またはクリップモードを解除する。
577 * クリップモードとなったShapeは描画されず、以降に描画されるオブジェクトの描画領域を制限する。
578 */
579 setClip(value: boolean): void;
580 /**
581 * Shapeの描画スタイルを変更する
582 */
583 setStyle(style: ShapeStyle): void;
584 /**
585 * Shapeの線の太さを変更する
586 */
587 setLineWidth(width: number): void;
588 /**
589 * Shapeの線の太さを取得する
590 */
591 getLineWidth(): any;
592 /**
593 * Shapeの色を指定する
594 * @param color 指定する色。CSS Color形式やグラデーションなどで指定
595 */
596 setColor(color: any): void;
597 /**
598 * Shapeの色を取得する
599 */
600 getColor(): any;
601 /**
602 * このShapeを特定のオブジェクトに同期させる
603 * @param syncObj 同期するオブジェクト。
604 * @param syncFunc 同期に利用する関数。例えばこの関数内でshape.x = this.xなどとやれば、ShapeのX座標は常に同期する
605 */
606 synchronize(syncObj: any, syncFunc: (shape: Shape) => void): void;
607 draw(context: CanvasRenderingContext2D): void;
608 }
609 }
610 declare module jg {
611 /**
612 * ハンドラ用インターフェース
613 */
614 interface TriggerHandler {
615 /** ハンドラ所有者 */
616 owner: any;
617 /** コールバック */
618 handler: Function;
619 }
620 /**
621 * jgame.jsのイベント機構を管理するクラス。
622 * TypeScriptに合ったイベント機構として、thisを指定可能なイベントハンドラを用いるために考案された。
623 * 1イベントに付き1つのTriggerを作る事を想定しているため、例えばDOMであるkeyDown、keyUpのイベントを作るなら、このようにする。
624 * this.keyDown = new jg.Trigger();
625 * this.keyUp = new jg.Trigger();
626 *
627 * イベントハンドラの指定はhandleで行い、イベントの発火はfireで行う。
628 * イベントハンドラの削除はremove, removeAll, removeAllByHandler, destroyの4種が用意されており、匿名メソッドにおけるハンドラ削除をやりやすくしている。
629 *
630 * Genericsにするとよりタイプセーフになるが、jgame.js開発開始時点ではGenericsが存在しなかったため導入されていない。将来のGenericsは検討中。
631 */
632 class Trigger {
633 /** このTriggerに登録された全ハンドラ */
634 handlers: TriggerHandler[];
635 /**
636 * コンストラクタ
637 */
638 constructor();
639 /**
640 * 所定の位置にハンドラを挿入する。ハンドラ順序が処理に影響する場合に指定する
641 * @param index 挿入位置。添え字は0から
642 * @param owner ハンドラ所有者。イベント発火時には、この値がthisとなる
643 * @param handler ハンドラのコールバック関数
644 */
645 handleInsert(index: number, owner: any, handler?: Function): void;
646 /**
647 * ハンドラを追加する
648 * @param owner ハンドラ所有者。イベント発火時には、この値がthisとなる
649 * @param handler ハンドラのコールバック関数
650 */
651 handle(owner: any, handler?: Function): void;
652 /**
653 * すべてのハンドラを削除する
654 */
655 destroy(): void;
656 /**
657 * 指定された所有者のハンドラをすべて削除する
658 * @param owner 削除対象のハンドラ所有者
659 */
660 removeAll(owner: any): void;
661 /**
662 * 指定されたコールバック関数のハンドラをすべて削除する
663 * @param handler 削除対象のコールバック関数
664 */
665 removeAllByHandler(handler: Function): void;
666 /**
667 * ハンドラを削除する
668 * @param owner 削除対象のハンドラ所有者
669 * @param handler 削除対象のコールバック関数
670 */
671 remove(owner: any, handler?: Function): void;
672 /**
673 * イベントを発火する
674 * @param param イベントパラメータ
675 */
676 fire(param?: any): void;
677 /**
678 * 非セーフティな形でイベントを発火する。
679 * このメソッドの利用は極力控えるべき。ハンドラ内でイベントハンドラの追加や削除が行われると、すべてのハンドラに処理が伝達されないため。
680 * ハンドラ内で削除されないことが保障されている場合や、複数処理されてもかまわないような場合にのみ利用する。
681 * @param param イベントパラメータ
682 */
683 fastFire(param?: any): void;
684 }
685 }
686 declare module jg {
687 /**
688 * 最低限のサウンドサポートを提供するクラス。
689 * jgame.js的には、別のライブラリでサウンド実装することを推奨している。
690 */
691 class SimpleSound {
692 /** BGMに利用するAudio。一つのみ指定可 */
693 static bgm: HTMLAudioElement;
694 /**
695 * サウンドを再生する
696 * @param sound 再生するサウンド
697 * @param loop trueでloop再生する
698 */
699 static play(sound: HTMLAudioElement, loop?: boolean): HTMLAudioElement;
700 /**
701 * BGMが存在するかどうかを返す
702 */
703 static hasBgm(): boolean;
704 /**
705 * BGMを再生する
706 * @param sound 再生するBGM
707 * @param loop trueの場合loop再生する
708 */
709 static playBgm(sound: HTMLAudioElement, loop?: boolean): HTMLAudioElement;
710 /**
711 * サウンドの再生を停止する
712 * @param source 再生を停止する対象のサウンド
713 */
714 static stop(source: HTMLAudioElement): void;
715 /**
716 * BGMの再生を停止する
717 */
718 static stopBgm(): void;
719 }
720 }
721 declare module jg {
722 /**
723 * リソース構造クラス
724 */
725 class ResourceStructure {
726 /** 画像のパス */
727 img: string;
728 /** サウンドのパス */
729 sound: string;
730 /** デフォルトのリソース構造 */
731 static Default: ResourceStructure;
732 /** よく使われることを想定しているプレーンな構造 */
733 static Plain: ResourceStructure;
734 /**
735 * コンストラクタ
736 * @param img 画像のパス
737 * @param sound サウンドのパス
738 */
739 constructor(img: string, sound: string);
740 /**
741 * 絶対パスかどうかを判定
742 * @param url 判定するURL
743 */
744 isAbsolute(url: string): string;
745 /**
746 * 構造に則った画像のURLを返す
747 * @param url 画像のパス
748 */
749 imageUrl(url: string): string;
750 /**
751 * 構造に則ったサウンドのURLを返す
752 * @param url サウンドのパス
753 */
754 soundUrl(url: string): string;
755 }
756 }
757 declare module jg {
758 /**
759 * リソースを読み込むくラス
760 */
761 class ResourceLoader {
762 /** 読み込み対象のリソース */
763 resource: Resource;
764 /**
765 * コンストラクタ
766 * @param resource 読み込み対象のリソース
767 */
768 constructor(resource: Resource);
769 /**
770 * リソースを読み込む。サブクラスでオーバーライドする想定であり、このメソッドは何もしない
771 * @param url リソースのURL
772 * @param identifier リソースの識別子
773 */
774 load(url: string, identifier: string): void;
775 }
776 /**
777 * 画像リソースを読み込む
778 */
779 class ImageResourceLoader extends ResourceLoader {
780 /**
781 * 画像リソースを読み込む
782 * @param url 画像リソースのURL
783 * @param identifier リソースの識別子
784 */
785 load(url: string, identifier: string): void;
786 /**
787 * 完了時のコールバック。リソースクラスに画像を登録し、読み込み完了を通知する
788 * @param name 画像の識別子
789 * @param image 読み込んだ画像
790 * @param is_success trueで成功、falseでエラー
791 */
792 completed(name: string, image: HTMLImageElement, is_success: boolean): void;
793 }
794 /**
795 * 外部JavaScriptを読み込むクラス。
796 * このクラスではjavascriptの依存関係を解決するため、先に読み込んだリソースの読み込みが完了するまで、次のリソースを読み込むことはない
797 */
798 class ScriptResourceLoader extends ResourceLoader {
799 /** ロード中かをあらわすフラグ */
800 static loading: boolean;
801 /**
802 * javascriptリソースを読み込む
803 * @param url javascriptリソースのURL
804 * @param identifier リソースの識別子
805 */
806 load(url: string, identifier: string): void;
807 /**
808 * 完了時のコールバック。リソースクラスにスクリプトを登録し、読み込み完了を通知する
809 * @param name スクリプトの識別子
810 * @param image 読み込んだスクリプト
811 * @param is_success trueで成功、falseでエラー
812 */
813 completed(name: string, script: HTMLScriptElement, is_success: boolean): void;
814 }
815 /**
816 * サウンドを読み込む
817 */
818 class SoundResourceLoader extends ResourceLoader {
819 /**
820 * サウンドリソースを読み込む
821 * @param url サウンドリソースのURL
822 * @param identifier リソースの識別子
823 */
824 load(url: string, identifier: string): void;
825 /**
826 * 完了時のコールバック。リソースクラスにサウンドを登録し、読み込み完了を通知する
827 * @param name サウンドの識別子
828 * @param image 読み込んだサウンド
829 * @param is_success trueで成功、falseでエラー
830 */
831 completed(name: string, audio: HTMLAudioElement, is_success: boolean): void;
832 }
833 }
834 declare module jg {
835 /**
836 * 画像やサウンドなどのリソースを管理するクラス。
837 * このクラスはjgame.jsでは例外的な単一インスタンスのクラスであるため、複数ゲームを1ページに読み込む場合は注意が必要
838 */
839 class Resource {
840 /** 読み込み済みの画像 */
841 images: {
842 [key: string]: HTMLImageElement;
843 };
844 /** 読み込み済みのスクリプト */
845 scripts: {
846 [key: string]: HTMLScriptElement;
847 };
848 /** 読み込み済みのサウンド */
849 sounds: {
850 [key: string]: any;
851 };
852 /** 読み込み予定の識別子リスト */
853 requests: string[];
854 /**
855 * 読み込みが完了するたびに発火されるイベント。
856 * パラメータで残りリクエスト数を受け取るため、全読み込み完了はloaded.handle((e) => {if (e == 0) console.log("completed");});などで判定可能 */
857 loaded: Trigger;
858 /**
859 * リソースの読み込みリクエストが追加される度に発火されるイベント。
860 * パラメータとして、{name: リソース識別子, url: リソースのURL, loader: ResourceLoaderクラス}を持つ
861 */
862 added: Trigger;
863 /**
864 * このクラスが管理しているResourceLoader。拡張子ごとのResourceLoaderのマップになっている。
865 * デフォルトでは以下の通り。"default"は登録されていないすべての拡張子が該当する。
866 * "js": ScriptResourceLoader
867 * "default": ImageResourceLoader
868 * "mp3": SoundResourceLoader
869 * "ogg": SoundResourceLoader
870 * "wav": SoundResourceLoader
871 * "mid": SoundResourceLoader
872 */
873 loaders: {
874 [key: string]: ResourceLoader;
875 };
876 /** このリソースの現在の構造 */
877 structure: ResourceStructure;
878 /** 単一のインスタンス */
879 static instance: Resource;
880 /**
881 * 唯一のインスタンスを取得する。
882 */
883 static getInstance(): Resource;
884 /**
885 * 新しいResourceクラスを生成するが、この方法でResourceクラスを生成するべきではなく、jgame.jsではgetInstanceによる単一インスタンスでの利用を推奨している
886 */
887 constructor();
888 /**
889 * すべてのリソースを解放する
890 */
891 clear(): void;
892 /**
893 * 画像リソースを取得する
894 */
895 get(name: string): HTMLImageElement;
896 /**
897 * サウンドリソースを取得する
898 */
899 sound(name: string): any;
900 /**
901 * リクエストの完了を通知する
902 * @param name リクエストが完了したリソースの識別子
903 */
904 requestCompleted(name: string): void;
905 /**
906 * リソースを読み込む
907 * @param name リソースの識別子。url省略時は、urlと同じ値になる
908 * @param url リソースのURL
909 */
910 load(name: string, url?: string): void;
911 /**
912 * 手動で読み込むを行う。
913 * このメソッド内でResourceクラスは何も処理をせず、ただリクエストを登録する。
914 * ロードが完了したリソースは、別途completeManualを通じてResourceクラスに読み込み完了を手動通知する必要がある。
915 * 主に、外部ライブラリでの読み込み処理での利用を想定している。
916 * @param name リソース識別子
917 */
918 loadManual(name: string): void;
919 /**
920 * 手動で読み込み完了を行う。通常はloadManualとセットで利用する
921 * @param name リソース識別子
922 */
923 completeManual(name: string): void;
924 }
925 }
926 declare module jg {
927 /**
928 * シーンを表すクラス
929 */
930 class Scene {
931 /** 管理している全レイヤー */
932 layers: {
933 [key: string]: Layer;
934 };
935 /** レイヤー数 */
936 layerCount: number;
937 /** このシーンを管理しているゲーム */
938 game: Game;
939 /** スタックされたモード */
940 mode: string[];
941 /** 表示された時に発生するイベントハンドラ。startedとは異なり、endSceneで自身が再表示された時に発生する */
942 showed: Trigger;
943 /** 隠された時に発生するイベントハンドラ。changeSceneで自分が隠された時に発生する */
944 hid: Trigger;
945 /** このシーンが終了した時に発生するイベントハンドラ */
946 ended: Trigger;
947 /** このシーンが開始された時に発生するイベントハンドラ */
948 started: Trigger;
949 /** ルートレイヤー */
950 root: Layer;
951 /** キーが押された場合のイベントハンドラ。通常はundefinedであるため、利用する場合は自前でscene.keyDown = new jg.Trigger()を行う必要がある */
952 keyDown: Trigger;
953 /** キーが離された場合のイベントハンドラ。通常はundefinedであるため、利用する場合は自前でscene.keyDown = new jg.Trigger()を行う必要がある */
954 keyUp: Trigger;
955 /** ポイントが押された場合のイベントハンドラ。enablePointingEventを呼び出すまではundefined */
956 pointDown: Trigger;
957 /** ポイントが離された場合のイベントハンドラ。enablePointingEventを呼び出すまではundefined */
958 pointUp: Trigger;
959 /** ポイントが移動した場合のイベントハンドラ。enablePointingEventを呼び出すまではundefined */
960 pointMove: Trigger;
961 /**
962 * コンストラクタ
963 * @param game 関連するgame
964 */
965 constructor(game: Game);
966 /**
967 * 現在のモードを返す
968 */
969 currentMode(): string;
970 /**
971 * 管理しているレイヤーを配列にして返す
972 */
973 getLayerArray(): Layer[];
974 /**
975 * ポインティングイベントを有効にする。
976 * この処理はrootレイヤーのポインティングイベントも有効にする点に注意
977 */
978 enablePointingEvent(): void;
979 /**
980 * ポインティングイベントを無効にする。実際はrootレイヤーのポインティングイベントを無効にしている。
981 * sceneクラスのpointDown, pointUp, pointMoveのイベントハンドラは解放されないため、解放処理は別途行う必要がある点に注意
982 */
983 disablePointingEvent(): void;
984 /**
985 * モードを変更する。
986 * この処理を行った際、引数modeがgameであり、現在のmodeがtitleである場合、以下のメソッドが本クラスのインスタンスに存在する場合には呼び出される。
987 * titleHide
988 * gameStart
989 * gameShow
990 * @param mode 新しいモード
991 */
992 changeMode(mode: string): void;
993 /**
994 * 現在のモードを終了する。すべてのモードが終了した場合、シーン自体も終了させる。
995 * この処理を行った際、現在のmodeがgameであり、次のモードがtitleである場合、以下のメソッドが本クラスのインスタンスに存在する場合には呼び出される。
996 * gameEnd
997 * titleShow
998 * ただし、newMode引数を指定した場合titleShowは発生しない。
999 * @param newMode 次のモードを指定する。省略時は変更しない
1000 */
1001 endCurrentMode(newMode?: string): void;
1002 /**
1003 * 指定したレイヤーを作成する
1004 * @param name 作成するレイヤー名
1005 * @param size レイヤーの大きさ。またはLayerクラスのインスタンス
1006 */
1007 createLayer(name: string, size?: CommonSize): Layer;
1008 /**
1009 * 指定した名前のレイヤーを削除する。rootレイヤーは削除できない
1010 * @param name 削除するレイヤー名
1011 */
1012 deleteLayer(name: string): void;
1013 /**
1014 * このシーンとシーンに関連するリソースをすべて削除する
1015 */
1016 destroy(): void;
1017 /**
1018 * このシーンを終了する
1019 */
1020 end(): void;
1021 /**
1022 * このシーンとそれに関連するリソースをすべて再構築する
1023 */
1024 refresh(): void;
1025 /**
1026 * シーンをスクロールする
1027 * @param x スクロール先X座標
1028 * @param y スクロール先Y座標
1029 * @param layerName レイヤー名を指定する。省略した場合rootレイヤーが対象になる
1030 */
1031 scrollTo(x: number, y: number, layerName?: string): void;
1032 /**
1033 * シーンを相対的にスクロールする
1034 * @param x X座標の変化値
1035 * @param y Y座標の変化値
1036 * @param layerName レイヤー名を指定する。省略した場合rootレイヤーが対象になる
1037 */
1038 scrollBy(x: number, y: number, layerName?: string): void;
1039 /**
1040 * このシーンにentityを追加する
1041 * @param entity 追加するentity
1042 * @param layerName 追加するレイヤー名。省略時はrootレイヤー
1043 */
1044 append(entity: E, layerName?: string): void;
1045 /**
1046 * このシーンからentityを削除する。
1047 * どのレイヤーにあっても必ず削除されるが、entity.remove()の利用を推奨。
1048 * @param entity 削除するentity
1049 */
1050 removeEntity(entity: E): void;
1051 }
1052 }
1053 declare module jg {
1054 /**
1055 * 画像をあらわす最も基本的な描画オブジェクト
1056 */
1057 class Sprite extends E {
1058 /** 描画対象の画像。HTMLImageElement, HTMLVideoElement, HTMLCanvasElementのいずれかが指定可能 */
1059 image: any;
1060 /** 転送元横幅。通常は画像と同サイズ */
1061 srcWidth: number;
1062 /** 転送元縦幅。通常は画尾と同サイズ */
1063 srcHeight: number;
1064 /** 転送元横座標。通常は0 */
1065 srcX: number;
1066 /** 転送元縦座標。通常は0 */
1067 srcY: number;
1068 /**
1069 * Spriteクラスのインスタンスを生成する。
1070 * @param image このSpriteをあらわす画像
1071 * @param srcWidth 転送元横幅を指定。省略時は画像の横幅と同一になる
1072 * @param srcHeight 転送元縦幅を指定。省略時は画像の縦幅と同一になる
1073 */
1074 constructor(image: any, srcWidth?: number, srcHeight?: number);
1075 /**
1076 * 描画する
1077 * @paramn context 描画対象context
1078 */
1079 draw(context: CanvasRenderingContext2D): void;
1080 }
1081 }
1082 declare module jg {
1083 /**
1084 * 複数のフレームによってアニメーションを行うSprite。
1085 * なおこのクラスでは1枚の画像を複数のフレームに区切って扱う形のみサポートしているため、複数の画像で一つのアニメーションを後世することは出来ない。
1086 */
1087 class FrameSprite extends Sprite {
1088 /** 画像一列で何枚の画像が入っているか */
1089 sep: number;
1090 /** フレーム */
1091 frame: number[];
1092 /** 現在のフレーム番号 */
1093 fno: number;
1094 /** アニメーション中かどうか */
1095 animation: boolean;
1096 /** アニメーション時間 */
1097 wait: number;
1098 /** 繰り返しアニメーションを行うかどうか */
1099 loop: boolean;
1100 /** アニメーション完了時に発生するイベント。ループ中は発生しない */
1101 frameEnded: Trigger;
1102 /**
1103 * コンストラクタ
1104 * @param image 画像。1枚の画像にアニメーションパターンがすべて格納されている必要がある
1105 * @param srcWidth フレームの横幅
1106 * @param srcHeight フレームの縦幅
1107 * @param wait アニメーション時間をミリ秒で指定。省略時は200ミリ秒
1108 */
1109 constructor(image: any, srcWidth: number, srcHeight: number, wait?: number);
1110 /**
1111 * フレームを変更し、変更フラグを立てる
1112 */
1113 changeFrame(): void;
1114 /**
1115 * アニメーションを開始する。すでにアニメーション中である場合、noClearの設定含めて無視される
1116 * @param noClear 指定した場合、fnoを0にリセットする
1117 */
1118 animate(noClear?: boolean): boolean;
1119 /**
1120 * アニメーションを停止する
1121 */
1122 inanimate(): void;
1123 /**
1124 * アニメーション処理を行うコールバック
1125 */
1126 interval(): void;
1127 }
1128 }
1129 declare module jg {
1130 /**
1131 * キャラクタの移動情報
1132 */
1133 interface CharacterMoveInfo {
1134 /** 移動元X座標 */
1135 x: number;
1136 /** 移動元Y座標 */
1137 y: number;
1138 /** 移動先X座標 */
1139 dx: number;
1140 /** 移動先Y座標 */
1141 dy: number;
1142 /** 移動に要する時間。歴史的な理由でフレーム数を意味するfという名前になっている */
1143 f: number;
1144 /** これまでかかった時間 */
1145 t: number;
1146 }
1147 /**
1148 * 移動完了イベントパラメータ
1149 */
1150 interface CharacterMovedEventArgs {
1151 /** 次の移動先 */
1152 nextMove?: string;
1153 }
1154 /**
1155 * キャラクタをあらわすクラス。
1156 * 足踏み、方向、移動といった基本的な概念を持っている。
1157 */
1158 class Character extends FrameSprite {
1159 /** 移動中かどうか */
1160 moving: boolean;
1161 /** 現在の移動情報 */
1162 moveInfo: CharacterMoveInfo;
1163 /** 次の移動先を表す文字列 */
1164 nextMove: string;
1165 /** 移動開始イベント。CharacterMoveInfoをパラメータとして持つ */
1166 beginMove: Trigger;
1167 /** 移動完了イベント。CharacterMovedEventArgsをパラメータとして持つ */
1168 moved: Trigger;
1169 /** キャラクター番号 */
1170 charaSeq: number;
1171 /** 画像のキャラクタ列数 */
1172 charaCol: number;
1173 /** 足踏みのアニメーションフレーム数 */
1174 animeCnt: number;
1175 /** 一度の移動で移動するピクセル数 */
1176 movePixel: number;
1177 /** 移動に要する時間 */
1178 moveTime: number;
1179 /** キャラクタの方向とキャラチップの番号の相対表。{[key:Angle]: number; }形式で指定 */
1180 angleSeq: any;
1181 /** 現在の方向 */
1182 currentAngle: Angle;
1183 /**
1184 * コンストラクタ
1185 * @param image キャラクタの画像。複数のキャラクタが一つになった画像を指定することも可能
1186 * @param width キャラクターの横幅
1187 * @param height キャラクターの縦幅
1188 * @param wait 足踏みに要する時間をミリ秒単位で指定。省略時は200ミリ秒
1189 */
1190 constructor(image: any, width: number, height: number, wait?: number);
1191 /**
1192 * キャラクターが移動していない場合、左に移動させる
1193 * @param stackNext 移動が出来ず、前の移動からある程度時間が経っていたら、次の移動先にこの方向をセットする
1194 */
1195 moveLeft(stackNext?: boolean): boolean;
1196 /**
1197 * キャラクターが移動していない場合、右に移動させる
1198 * @param stackNext 移動が出来ず、前の移動からある程度時間が経っていたら、次の移動先にこの方向をセットする
1199 */
1200 moveRight(stackNext?: boolean): boolean;
1201 /**
1202 * キャラクターが移動していない場合、上に移動させる
1203 * @param stackNext 移動が出来ず、前の移動からある程度時間が経っていたら、次の移動先にこの方向をセットする
1204 */
1205 moveUp(stackNext?: boolean): boolean;
1206 /**
1207 * キャラクターが移動していない場合、下に移動させる
1208 * @param stackNext 移動が出来ず、前の移動からある程度時間が経っていたら、次の移動先にこの方向をセットする
1209 */
1210 moveDown(stackNext?: boolean): boolean;
1211 /**
1212 * キャラクターを移動させる
1213 * @param x 移動先X座標
1214 * @param y 移動先Y座標
1215 * @param f 移動に要する時間
1216 */
1217 move(x: number, y: number, f: number): boolean;
1218 /**
1219 * 毎フレーム更新処理のイベントハンドラ
1220 * @param t 経過時間
1221 */
1222 update(t: number): void;
1223 /**
1224 * 移動完了処理を行う
1225 */
1226 endMove(): void;
1227 /**
1228 * 方向を変更する
1229 * @param angle 変更後の方向
1230 */
1231 angle(angle: Angle): void;
1232 }
1233 }
1234 declare module jg {
1235 /**
1236 * Characterクラスを量産するためのファクトリ
1237 */
1238 class CharacterFactory {
1239 /** 画像のキャラクタ列数 */
1240 charaCol: number;
1241 /** 足踏みのアニメーションフレーム数 */
1242 animeCnt: number;
1243 /** 一度の移動で移動するピクセル数 */
1244 movePixel: number;
1245 /** 移動に要する時間 */
1246 moveTime: number;
1247 /** キャラクタに指定する画像 */
1248 image: HTMLImageElement;
1249 /** キャラクタの横幅 */
1250 width: number;
1251 /** キャラクタの縦幅 */
1252 height: number;
1253 /** 足踏みに要する時間 */
1254 wait: number;
1255 /** 最初に向いている方向 */
1256 angle: Angle;
1257 /**
1258 * 利用するコンストラクタ。通常はjg.Characterだが、継承したクラスなどを使いたい場合それを指定する
1259 */
1260 createClass: any;
1261 /** キャラクタの方向とキャラチップの番号の相対表。{[key:Angle]: number; }形式で指定 */
1262 angleSeq: any;
1263 /**
1264 * コンストラクタ
1265 * @param image キャラクタに指定する画像
1266 * @param width キャラクタの横幅
1267 * @param height キャラクタの縦幅
1268 */
1269 constructor(image: HTMLImageElement, width: number, height: number);
1270 /**
1271 * キャラクタを生成する
1272 * @param charaSeq 利用する画像のキャラ番号
1273 * @param offset 初期x, y座標。省略時はx:0, y:0に配置される
1274 * @param angle 初期方向。省略時はthis.angle
1275 */
1276 create(charaSeq: number, offset?: CommonOffset, angle?: Angle): Character;
1277 }
1278 }
1279 declare module jg {
1280 /**
1281 * 文字を表示するクラス
1282 */
1283 class Label extends E {
1284 /** 表示する文字列。変更する場合はこのフィールドを直接編集するのではなく、setTextを呼ぶべき */
1285 text: string;
1286 /** 最大幅。変更する場合はこのフィールドを直接編集するのではなく、setMaxWidthを呼ぶべき */
1287 maxWidth: number;
1288 /** 同期するオブジェクト */
1289 syncObj: any;
1290 /** 同期するプロパティ */
1291 syncProp: string;
1292 /** 同期時にMath.roundをかけるかどうか */
1293 syncRound: boolean;
1294 /**
1295 * コンストラクタ
1296 * @param text 表示文字列
1297 * @param fontSize 文字の大きさ
1298 * @param fontColor 文字色
1299 * @param baseLine ベースライン
1300 */
1301 constructor(text?: string, fontSize?: number, fontColor?: string, baseline?: string);
1302 /**
1303 * 最大幅を変更する。描画される文字列がこの幅を上回る場合、自動的に縮小される
1304 * @param maxWidth 最大幅
1305 */
1306 setMaxWidth(maxWidth: number): void;
1307 /**
1308 * 内部サイズを更新する
1309 */
1310 updateSize(): void;
1311 /**
1312 * 文字に影をつける
1313 * @param color カラーの色。省略時は黒
1314 */
1315 addShadow(color?: string): void;
1316 /**
1317 * 文字の影を削除する
1318 */
1319 removeShadow(): void;
1320 /**
1321 * 表示する文字列を変更する
1322 * @param text 変更後の文字列
1323 */
1324 setText(text: string): void;
1325 /**
1326 * 文字描画に利用するフォントを変更する。
1327 * 指定できる値はCSS Font形式で、かつline-height指定を除いた値。line-heightについては常にnormalに固定される。
1328 * @param fontString フォントを現す文字列
1329 */
1330 setFont(fontString: string): void;
1331 /**
1332 * 現在の文字描画に利用するフォントを取得する
1333 */
1334 getFont(): string;
1335 /**
1336 * フォントサイズを指定する。
1337 * @param size 設定するフォントサイズ。単位は常にピクセル
1338 */
1339 setFontSize(size: number): void;
1340 /**
1341 * フォントサイズを取得する。単位は常にピクセル
1342 */
1343 getFontSize(): number;
1344 /**
1345 * フォントファミリを取得する
1346 */
1347 getFontFamily(): string;
1348 /**
1349 * フォントファミリを設定する
1350 * @param family 設定するフォントファミリ
1351 */
1352 setFontFamily(family: string): void;
1353 /**
1354 * 文字列の寄せ方を、start, end, left, right, centerいずれかの文字列で指定する
1355 * @param align 文字列の寄せ方
1356 */
1357 setTextAlign(align: string): void;
1358 /**
1359 * 現在の文字列の寄せ方を取得する
1360 */
1361 getTextAlign(): string;
1362 /**
1363 * 文字列の基準線をtop, hanging, middle, alphabetic, ideographic, bottomのいずれかの文字列で指定する
1364 * @param baseline 文字列の基準線
1365 */
1366 setTextBaseline(baseline: string): void;
1367 /**
1368 * 現在の文字列の基準線を取得する
1369 */
1370 getTextBaseline(): string;
1371 /**
1372 * 文字色を設定する
1373 * @param color 設定する文字色。CSSカラーで指定
1374 */
1375 setColor(color: string): void;
1376 /**
1377 * 現在の文字色を取得する
1378 */
1379 getColor(): string;
1380 /**
1381 * 表示文字列を特定オブジェクトの状態に同期させる。
1382 * sprite.xに同期させる場合は次のようにする。
1383 * label.synchronize(sprite, "x", true);
1384 * @param obj 同期させるオブジェクト
1385 * @param prop 同期させるオブジェクトのプロパティ
1386 * @param round 同期時にMath.roundをかけるかどうか。省略時はかけない
1387 */
1388 synchronize(obj: any, prop: string, round?: boolean): void;
1389 /**
1390 * 描画
1391 * @param context 対象の描画コンテキスト
1392 */
1393 draw(context: CanvasRenderingContext2D): void;
1394 }
1395 }
1396 declare module jg {
1397 /**
1398 * 一行の情報
1399 */
1400 class TextLineInfo {
1401 /** 行の幅 */
1402 width: number;
1403 /** 行の高さ */
1404 height: number;
1405 /** 縦座標のオフセット値 */
1406 offsetY: number;
1407 /**
1408 * コンストラクタ
1409 * @param offsetY 縦座標のオフセット値
1410 */
1411 constructor(offsetY: number);
1412 }
1413 /**
1414 * スクリプトを解析するクラス。
1415 * このクラスはサンプルであり、#pageコマンドによる改ページのみしかサポートしていない。
1416 */
1417 class MultilineScriptAnalyzer {
1418 /** 現在のモード */
1419 mode: number;
1420 /** 対象のMultilineTextクラス */
1421 owner: MultilineText;
1422 /** 対象の描画コンテキスト */
1423 context: CanvasRenderingContext2D;
1424 /** ポジション */
1425 pos: CommonOffset;
1426 /** バッファ */
1427 buf: string;
1428 /**
1429 * 初期化
1430 * @param owner 対象のMultilineTextクラス
1431 * @param context 描画コンテキスト
1432 * @param pos ポジション
1433 */
1434 init(owner: MultilineText, context: CanvasRenderingContext2D, pos: CommonOffset): void;
1435 /**
1436 * 次の文字を判定する
1437 */
1438 next(c: string): number;
1439 }
1440 /**
1441 * 複数行のテキストを扱うクラス
1442 */
1443 class MultilineText extends E {
1444 /** 元スクリプト */
1445 script: string;
1446 /** 裏画面バッファ */
1447 buffer: HTMLCanvasElement;
1448 /** クリッピング用Line */
1449 clip: Line;
1450 /** テキスト転送用Sprite */
1451 sprite: Sprite;
1452 /** デフォルトのスタイル */
1453 defaultStyle: any;
1454 /** デフォルトのフォント */
1455 defaultFont: any;
1456 /** デフォルトの影 */
1457 defaultBlur: number;
1458 /** デフォルトの影色 */
1459 defaultShadowColor: any;
1460 /** デフォルトの影オフセットX */
1461 defaultShadowOffsetX: number;
1462 /** デフォルトの影オフセットY */
1463 defaultShadowOffsetY: number;
1464 /** テキストの影を無効にするかどうか */
1465 disableShadow: boolean;
1466 /** 全行情報 */
1467 lines: TextLineInfo[];
1468 /** 現在アニメーション中のポジション */
1469 animePos: CommonOffset;
1470 /** 現在アニメーション中の行 */
1471 animeLine: number;
1472 /** テキストのアニメーションスピード。デフォルトは400 */
1473 animeSpeed: number;
1474 /** アニメーション完了時に発火されるイベント */
1475 animated: Trigger;
1476 /** スクリプト解析クラス */
1477 scriptAnalyzer: MultilineScriptAnalyzer;
1478 /** バッファの背景 */
1479 bufferBg: ImageData;
1480 /** 通常の行の高さ */
1481 static LINE_HEIGHT_NORMAL: number;
1482 /** 特殊なブラウザにおける余白 */
1483 static BROWSER_BASELINE_MARGIN: number;
1484 /**
1485 * コンストラクタ
1486 * @param size 表示サイズ
1487 * @param offset 場所
1488 */
1489 constructor(size: CommonSize, offset?: CommonOffset);
1490 /**
1491 * テキストをセットする
1492 * @param text 設定する文字列
1493 * @param offset 読み込み開始位置。省略時は最初から
1494 */
1495 setText(text: string, offset?: number): number;
1496 /**
1497 * スクリプトをセットする
1498 * @param script 設定するスクリプト
1499 * @param offset 読み込み開始位置。省略時は最初から
1500 */
1501 setScript(script: string, offset?: number): number;
1502 /**
1503 * 行の高さを取得する
1504 * @param c 対象の描画コンテキスト
1505 */
1506 getLineHeight(c: CanvasRenderingContext2D): number;
1507 /**
1508 * バッファを生成する
1509 * @param offset 読み込み開始位置。省略時は最初から
1510 */
1511 createBuffer(offset?: number): number;
1512 /**
1513 * バッファの再構築を行う
1514 */
1515 refresh(): void;
1516 /**
1517 * テキストのアニメーション表示を開始する
1518 * @param animeSpeed アニメーションのスピード。省略時は前回の設定から変更しない
1519 */
1520 startAnimation(animeSpeed?: number): void;
1521 /**
1522 * Game.updateイベントに対するコールバック
1523 * @param t 経過時間
1524 */
1525 update(t: number): void;
1526 /**
1527 * テキストをすべて非表示にする
1528 */
1529 hideAll(): void;
1530 /**
1531 * テキストをすべて表示する
1532 */
1533 showAll(): void;
1534 }
1535 }
1536 declare module jg {
1537 /**
1538 * Tileでの描画に利用するチップセットをあらわすクラス。
1539 * 通常、ユーザがこのクラスを直接利用することは無い。
1540 */
1541 class ChipSet {
1542 /** 本クラスが管理する画像 */
1543 image: any;
1544 /** チップのオフセット番号。Tileクラス側が利用する */
1545 chipOffset: number;
1546 /**
1547 * コンストラクタ
1548 * @param image 対象の画像
1549 */
1550 constructor(image: any);
1551 /**
1552 * このChipSetで管理しているチップ数を取得する
1553 */
1554 count(tile: Tile): number;
1555 /**
1556 * 描画する
1557 * @param tile 対象のTile
1558 * @param c 描画対象コンテキスト
1559 * @param x 描画X座標
1560 * @param y 描画Y座標
1561 * @param chip 描画するチップ番号
1562 */
1563 draw(tile: Tile, c: CanvasRenderingContext2D, x: number, y: number, chip: number): void;
1564 /**
1565 * このChipSetのマップチップを個別に、Spriteの配列として取得する
1566 * @param tile 対象のTile
1567 */
1568 getChips(tile: Tile): Sprite[];
1569 }
1570 /**
1571 * オートタイル用ChipSet。現在は一つの画像で一つのオートタイルのみサポート
1572 */
1573 class AutoTileChipSet extends ChipSet {
1574 /**
1575 * 座標位置のチップを取得する便利メソッド。Tile管理外座標である場合-1を返す
1576 * @param tile 対象のTile
1577 * @param x 取得対象x座標
1578 * @param y 取得対象y座標
1579 * @param out_value Tile管轄外の場合の値。省略時は-1
1580 */
1581 map(tile: Tile, x: number, y: number, out_value?: number): number;
1582 /**
1583 * このChipSetで管理しているチップ数を取得する。
1584 * AutoTileChipSetクラスの場合は1固定となる。
1585 */
1586 count(tile: Tile): number;
1587 /**
1588 * 描画する
1589 * @param tile 対象のTile
1590 * @param c 描画対象context
1591 * @param x 描画X座標
1592 * @param y 描画Y座標
1593 * @param chip 描画するチップ番号
1594 */
1595 draw(tile: Tile, c: CanvasRenderingContext2D, x: number, y: number, chip: number): void;
1596 /**
1597 * このChipSetのマップチップを個別に、Spriteの配列として取得する
1598 * @param tile 対象のTile
1599 */
1600 getChips(tile: Tile): Sprite[];
1601 }
1602 /**
1603 * マップを描画するクラス。
1604 * 本クラスは高速描画のためdrawOptionを無効化しており、回転などを行いたい場合は一度Sprite化してから行う必要がある点に注意
1605 */
1606 class Tile extends E {
1607 /** 一つ一つのチップの横幅 */
1608 tileWidth: number;
1609 /** 一つ一つのチップの縦幅 */
1610 tileHeight: number;
1611 /** 全チップセットを表す配列。これを直接操作しないように。 */
1612 chips: ChipSet[];
1613 /** チップ番号とChipSetを相対させるための便利Map。直接操作しないように。 */
1614 chipMap: ChipSet[];
1615 /** 合計のチップ数。直接操作しないように。 */
1616 chipCount: number;
1617 /** 描画済みマップを保持しておくためのバッファ用canvas */
1618 canvas: HTMLCanvasElement;
1619 /** マップデータ。[x][y]形式で格納 */
1620 data: number[][];
1621 /**
1622 * このクラスが管理するマップのサイズ。
1623 * 常にtile.data.length == tile.size.width、tile.data[0].length == tile.size.heightであるべき値。
1624 * ビルドをES5にする際はプロパティにして自動更新する形にした方がいいかも
1625 */
1626 size: CommonSize;
1627 /**
1628 * コンストラクタ
1629 * @param image 利用するチップセット画像。nullやundefinedを指定することで省略可
1630 * @param tileWidth 一つ一つのチップの横幅
1631 * @param tileHeight 一つ一つのチップの縦幅
1632 */
1633 constructor(image: any, tileWidth: number, tileHeight: number);
1634 /**
1635 * チップセットを追加する
1636 * @param image 追加するチップセット画像
1637 * @param opt オプション。{autoTile: true}を指定すると、オートタイルのチップセットが指定可能
1638 */
1639 addChipSet(image: HTMLImageElement, opt?: any): void;
1640 /**
1641 * 指定したTileのチップセットをこのTileのチップセットと同じにする
1642 * @param tile 共有先のTile
1643 */
1644 copyChips(tile: Tile): void;
1645 /**
1646 * サイズなどを指定の値で初期化する汎用メソッド
1647 */
1648 _clear(width: number, height: number): void;
1649 /**
1650 * マップデータをすべて-1または指定した値で初期化する
1651 * @param width 横幅(チップ数)
1652 * @param height 縦幅(チップ数)
1653 * @param value 初期化する値。省略時は-1
1654 */
1655 clear(width?: number, height?: number, value?: number): void;
1656 /**
1657 * マップデータを生成する
1658 * @param data データの二次元配列。[x][y]型である点に注意
1659 * @param width マップの横幅(チップ数)。省略時はdata.lengthが利用される。なおこのパラメータにtrueを指定すると、widthとheightを省略しtranposeをtrueにしたものとして扱われる
1660 * @param height マップの縦幅(チップ数)。省略時はdata[0].lengthが利用される
1661 * @param transpose 行列を反転させるかどうか
1662 */
1663 generate(data: number[][], width?: any, height?: number, transpose?: boolean): void;
1664 /**
1665 * バッファを作り直した上で再描画を行い、更新済みフラグを立てる
1666 */
1667 refresh(): void;
1668 /**
1669 * 一マス描画する
1670 * @param x 描画対象X座標(チップ数)
1671 * @param y 描画対象Y座標(チップ数)
1672 * @param clear trueを指定すると描画前にクリアする。半透明チップ描画の場合は必須
1673 * @param context 描画対象context。省略時はthis.canvasから自動取得。複数チップを描画する場合、呼び出し元で指定してあげた方が速い
1674 */
1675 drawChip(x: number, y: number, clear?: boolean, context?: CanvasRenderingContext2D): void;
1676 /**
1677 * 描画する
1678 * @param context 描画対象context
1679 */
1680 draw(context: CanvasRenderingContext2D): void;
1681 /**
1682 * このクラスが管理するすべてのマップチップをSpriteの配列で取得する
1683 */
1684 getChips(): Sprite[];
1685 }
1686 }
1687 declare module jg {
1688 /**
1689 * レイヤー
1690 */
1691 class Layer extends E {
1692 /** レイヤーの描画結果を保持するバッファ */
1693 canvas: HTMLCanvasElement;
1694 /** レイヤーの描画コンテキスト */
1695 context: CanvasRenderingContext2D;
1696 /**
1697 * コンストラクタ
1698 * @param scene レイヤーが属するシーン
1699 */
1700 constructor(scene: Scene);
1701 /**
1702 * このレイヤーがバッファを持つ場合にはtrueを返す
1703 */
1704 hasBuffer(): boolean;
1705 /**
1706 * このレイヤーにバッファを作成する
1707 */
1708 createBuffer(): void;
1709 /**
1710 * レイヤー内のオブジェクトを更新する
1711 * @param must trueを指定すると必ずバッファを生成する
1712 */
1713 refresh(must?: boolean): void;
1714 /**
1715 * バッファを削除する
1716 */
1717 deleteBuffer(): void;
1718 /**
1719 * バッファなどを削除する
1720 */
1721 destroy(): void;
1722 }
1723 }
1724 declare module jg {
1725 /**
1726 * 読み込み中状態を管理するシーン
1727 */
1728 class LoadingScene extends Scene {
1729 /** 対象のリソース */
1730 resource: Resource;
1731 /** 読み込み完了を表すパーセンテージの外枠線 */
1732 shape: Shape;
1733 /** 読み込み完了を表すパーセンテージの内側の塗りつぶし */
1734 shapeP: Shape;
1735 /** リソース全体の読み込み予定数 */
1736 requestCount: number;
1737 /** ローディングシーンの表示が必要な状態が終わったときに発火されるイベント。このイベントが発生した際、既にLoadingSceneクラスは破棄されている。 */
1738 finished: Trigger;
1739 /**
1740 * コンストラクタ
1741 * @param game 対象のゲーム
1742 * @param resource 対象のリソース
1743 */
1744 constructor(game: Game, resource: Resource);
1745 /**
1746 * 初期化
1747 */
1748 init(): void;
1749 /**
1750 * 読み込み完了を表すパーセンテージ表記を進める
1751 */
1752 animate(per: number): void;
1753 /**
1754 * リソースクラスが読み込みを完了した際のイベントハンドラ
1755 */
1756 complete(cnt: number): void;
1757 /**
1758 * リソースクラスにリクエストが追加された場合のイベントハンドラ
1759 */
1760 added(e: any): void;
1761 }
1762 }
1763 declare module jg {
1764 /**
1765 * 入力イベントの基本クラス
1766 */
1767 class InputEvent {
1768 /** 入力イベント種別 */
1769 type: InputEventType;
1770 /** 入力イベントの動作タイプ */
1771 action: InputEventAction;
1772 /** 元イベントデータ */
1773 param: any;
1774 /**
1775 * コンストラクタ
1776 * @param type 入力イベント種別を指定。現状はPointかKeyboardのみ
1777 * @param action 入力イベントの動作タイプ。現状はDown, Up, Moveのみ
1778 * @param param 元イベントデータ
1779 */
1780 constructor(type: InputEventType, action: InputEventAction, param?: any);
1781 }
1782 /**
1783 * キーボードの入力イベントクラス
1784 */
1785 class InputKeyboardEvent extends InputEvent {
1786 /** 押されたキー。Keytypeで管理されている値のみ設定可能 */
1787 key: Keytype;
1788 /**
1789 * コンストラクタ
1790 * @param action 入力タイプ
1791 * @param key キー
1792 * @param e 元イベントデータ
1793 */
1794 constructor(action: InputEventAction, key: Keytype, e: any);
1795 }
1796 /**
1797 * ポインティングデバイスの入力イベント
1798 */
1799 class InputPointEvent extends InputEvent {
1800 /** ポインティングされた対象から見てのx座標 */
1801 x: number;
1802 /** ポインティングされた対象から見ての y座標 */
1803 y: number;
1804 /** Gameから見てのx, y座標 */
1805 point: CommonOffset;
1806 /** ポインティングされた対象 */
1807 entity: E;
1808 /**
1809 * コンストラクタ
1810 * @param action 動作タイプ
1811 * @param e 元イベントパラメター
1812 * @param point ゲームから見ての座標
1813 */
1814 constructor(action: InputEventAction, e: any, point: CommonOffset);
1815 /**
1816 * ポインティングされたEntityをセットする
1817 * @param entity ポインティングされたEntity
1818 */
1819 set(entity: E): void;
1820 }
1821 }
1822 declare module jg {
1823 /**
1824 * 描画クラス
1825 */
1826 class Renderer {
1827 /** Math.PI/180 */
1828 radian: number;
1829 /** 描画オプションを設定するための関数群 */
1830 drawOptionFunctions: Object;
1831 /** 描画後に適用するフィルタ */
1832 filter: ImageFilter.IFilter;
1833 /**
1834 * コンストラクタ
1835 */
1836 constructor();
1837 /**
1838 * マトリックス値を取得する
1839 * @param width 横幅
1840 * @param height 縦幅
1841 * @param scaleX 横方向の倍率
1842 * @param scaleY 縦方向の倍率
1843 * @param angle 角度
1844 */
1845 getMatrix(width: number, height: number, scaleX: number, scaleY: number, angle: number): number[];
1846 /**
1847 * 親オブジェクトから描画する
1848 * @param parent 対象の親オブジェクト
1849 * @param c 対象の描画コンテキスト
1850 */
1851 renderParent(parent: E, c: CanvasRenderingContext2D): void;
1852 /**
1853 * Entityを描画する
1854 * @param entity 描画対象のEntity
1855 * @param c 対象の描画コンテキスト
1856 */
1857 renderEntity(entity: E, c: CanvasRenderingContext2D): void;
1858 /**
1859 * フィルタや描画オプションをかけない描画を行う
1860 * @param entity 対象のEntity
1861 * @param c 対象の描画コンテキスト
1862 */
1863 renderPure(entity: E, c: CanvasRenderingContext2D): void;
1864 /**
1865 * フィルタをかける。
1866 * この処理は非常に遅いが、canvas apiはdrawImageにフィルタをかける方法を現状サポートしていないため現状はやむをえない実装。
1867 * @param entity 対象のEntity
1868 * @param c 対象の描画コンテキスト
1869 */
1870 filterDraw(entity: E, c: CanvasRenderingContext2D): void;
1871 /**
1872 * 描画オプションを利用する
1873 * @param entity 対象のEntity
1874 * @param c 対象の描画コンテキスト
1875 */
1876 useDrawOption(entity: E, c: CanvasRenderingContext2D): any;
1877 }
1878 }
1879 declare module jg {
1880 /**
1881 * ゲーム用描画クラス
1882 */
1883 class GameRenderer extends Renderer {
1884 /** 描画用バッファ。描画方式によっては裏画面用と表画面用の2画面 */
1885 buffer: HTMLCanvasElement[];
1886 /** 表画面用描画コンテキスト */
1887 fc: CanvasRenderingContext2D;
1888 /** 裏画面用描画コンテキスト */
1889 bc: CanvasRenderingContext2D;
1890 /** 現在のシーン。game.sceneと常に等価 */
1891 scene: Scene;
1892 /** 描画対象のゲーム */
1893 game: Game;
1894 /** 背景。廃止する可能性がある */
1895 bg: ImageData;
1896 /** DOMコンテナ */
1897 container: HTMLElement;
1898 /** 入力イベント処理用内部DOMコンテナ */
1899 handler: HTMLDivElement;
1900 /** フリップ番号。描画モードがFlipの時以外は不要 */
1901 flipNo: number;
1902 /** 描画モード。デフォルトはRenderTransferMode.Transfer */
1903 transferMode: RenderTransferMode;
1904 /** クリアを無効にする */
1905 disableClear: boolean;
1906 /** 表画面のキャンバスのサイズ。Gameのサイズと異なる場合、拡大縮小されていることになる */
1907 frontCanvasSize: CommonSize;
1908 /** 表画面のキャンバスの位置。中央寄せなどをする場合に必要な値 */
1909 frontCanvasOffset: CommonOffset;
1910 /** ハンドラのページ上の横位置 */
1911 _pageX: number;
1912 /** ハンドラのページ上の縦位置 */
1913 _pageY: number;
1914 /**
1915 * コンストラクタ
1916 * @param game 描画対象のゲーム
1917 * @param container 親元のDOMコンテナ。指定しない場合、jgameというIDの要素を検索し、それも見つからない場合はjgameというIDのおDIV要素を作りdocument.bodyに追加する
1918 * @param transferMode 描画転送モード
1919 * @param disableBg trueを指定すると、毎回背景色でクリアする処理を行わない
1920 */
1921 constructor(game: Game, container?: HTMLElement, transferMode?: RenderTransferMode, disableBg?: boolean);
1922 /**
1923 * 表用キャンバスのサイズを変更する
1924 * @param size 新しいキャンバスのサイズ
1925 * @param offset 省略可。新しいキャンバスのオフセット位置
1926 */
1927 changeFrontCanvasSize(size: CommonSize, offset?: CommonOffset): void;
1928 /**
1929 * 描画転送モードを変更する
1930 * @param mode 変更後の描画転送モード
1931 */
1932 changeTransferMode(mode: RenderTransferMode): void;
1933 /**
1934 * シーンを変更する。通常、Gameクラス内からのみ呼び出されるべきメソッド。
1935 * @param scene 変更後のシーン
1936 */
1937 changeScene(scene: Scene): void;
1938 /**
1939 * 表画面と裏画面を入れ替える。描画転送モードがRenderTransferMode.Flipの場合にのみ利用
1940 */
1941 flip(): void;
1942 /**
1943 * 描画する
1944 */
1945 render(): void;
1946 /**
1947 * バッファの作り直しなど、現在の設定値に基づいた再構成処理を行う
1948 */
1949 refresh(): void;
1950 }
1951 }
1952 declare module jg {
1953 /**
1954 * バッファ上に書き込む特殊なRenderer
1955 */
1956 class BufferedRenderer extends Renderer {
1957 /** バッファ */
1958 buffer: HTMLCanvasElement;
1959 /** 描画用context */
1960 c: CanvasRenderingContext2D;
1961 /** このバッファのサイズ */
1962 size: CommonSize;
1963 /**
1964 * コンストラクタ
1965 * @param size バッファサイズ
1966 */
1967 constructor(size: CommonSize);
1968 /**
1969 * バッファを透明でクリアする
1970 */
1971 clear(): void;
1972 /**
1973 * バッファの描画内容を基に画像を生成する
1974 * @param area コピー元バッファ領域。省略時は全画面
1975 * @param distArea コピー先バッファ領域。省略時はx:0, y:0, width:area.width, height:area.height
1976 * @param canavsSize 出力イメージサイズ。省略時はx: 0, y:0, width: area.width, height: area.height
1977 */
1978 createImage(area?: CommonArea, distArea?: CommonArea, canvasSize?: CommonSize): HTMLCanvasElement;
1979 /**
1980 * バッファの内容を基にSpriteを生成する
1981 * @param area コピー元バッファ領域。省略時は全画面
1982 * @param distArea コピー先バッファ領域。省略時はx:0, y:0, width:area.width, height:area.height
1983 * @param canavsSize Spriteが保持する画像のサイズ。省略時はx: 0, y:0, width: area.width, height: area.height
1984 */
1985 createSprite(area?: CommonArea, distArea?: CommonArea, canvasSize?: CommonSize): Sprite;
1986 /**
1987 * フィルタを適用する
1988 * @param c フィルタ適用対象context
1989 * @param size フィルタを適用するサイズ
1990 */
1991 applyFilter(c: CanvasRenderingContext2D, size: CommonSize): void;
1992 /**
1993 * オブジェクトをこのバッファに描画する
1994 * @param entity 描画対象オブジェクト
1995 */
1996 renderUnit(entity: E): void;
1997 /**
1998 * レイヤーをこのバッファに描画する
1999 * @param layer 描画対象レイヤー
2000 */
2001 renderLayer(layer: Layer): void;
2002 /**
2003 * シーンをこのバッファに描画する
2004 * @param scene 描画対象シーン
2005 */
2006 renderScene(scene: Scene): void;
2007 /**
2008 * バッファの内容を再生成する。この際、描画済み情報は失われる。
2009 * この処理はPCがスリープ状態から復帰した時などに呼び出される可能性があるため、BufferedRendererに描画済みの情報を長期間参照し続けることは推奨されない。。
2010 */
2011 refresh(): void;
2012 /**
2013 * このバッファを別の対象に描画する
2014 * @param context 描画対象context
2015 */
2016 draw(context: CanvasRenderingContext2D): void;
2017 }
2018 }
2019 declare module jg {
2020 /**
2021 * 曖昧に発火されるタイマー
2022 */
2023 class GameTimer {
2024 /** 前回発火時間 */
2025 tick: number;
2026 /** このタイマーの発火間隔 */
2027 wait: number;
2028 /** イベントハンドラ */
2029 trigger: Trigger;
2030 /**
2031 * タイマーを生成する
2032 * @param wait 発火間隔をミリ秒で指定
2033 */
2034 constructor(wait: number);
2035 /**
2036 * 発火を試みる
2037 * @param t 経過時間
2038 */
2039 tryFire(t: number): void;
2040 /**
2041 * 発火する
2042 */
2043 fire(): void;
2044 }
2045 }
2046 declare module jg {
2047 /**
2048 * メインループなどを管理するゲームエンジン。本クラスを基点にjgame.jsのゲームは実行される。
2049 * オーバーライドすることも想定しており、https://github.com/tsugehara/jgengine にいくつかサンプルがある。
2050 */
2051 class Game {
2052 /** 終了フラグ。_がついているが直接操作してもいい */
2053 _exit: boolean;
2054 /** 前回の実行時間 */
2055 tick: number;
2056 /** 前回の描画時間 */
2057 renderTick: number;
2058 /** KeytypeとkeyCodeの関連付けを行うマップ。JGUtilへの移行を検討中 */
2059 keymap: any;
2060 /** ドラッグ中情報。マルチタッチサポート後にインターフェース変更の可能性がある */
2061 dragParam: InputPointEvent;
2062 /** 描画オブジェクト */
2063 renderer: GameRenderer;
2064 /** 管理しているシーン */
2065 scenes: Scene[];
2066 /** 現在のシーン */
2067 scene: Scene;
2068 /** 管理しているリソース。リソースは単一インスタンスであるため、Resource.getInstanceと等価であることが保証されている */
2069 resource: Resource;
2070 /** ゲームの横幅 */
2071 width: number;
2072 /** ゲームの縦幅 */
2073 height: number;
2074 /** 表示上の拡大比率 */
2075 scale: number;
2076 /** 読み込み中シーンのコンストラクタ */
2077 loadingSceneClass: any;
2078 /** 読み込み中シーン。読み込み中の場合のみ値が設定される */
2079 loadingScene: LoadingScene;
2080 /** このゲームの内部ID。単一ページに複数のゲームを表示するような場合以外、特に利用する機会は無い */
2081 id: number;
2082 /** 画面描画間隔。指定するとこのFPS以下に画面描画が抑制される */
2083 targetFps: number;
2084 /** FPS表示用のDOM要素。将来的に変更される可能性がある */
2085 fps: HTMLElement;
2086 /** preload処理の完了時に呼び出されるイベント */
2087 loaded: Trigger;
2088 /**
2089 * ゲーム内時間の更新時に呼び出されるイベント。
2090 * 基本的なゲーム内更新処理はすべてこのイベントのハンドラで実行するが、精度が不要でかつ定期的に実行するアニメーションのような処理は、addTimerメソッドでの実行でもよい。
2091 * 引数として経過時間がミリ秒で渡されるため、その経過時間に則った処理を行う必要がある。
2092 * また、解放漏れに注意。
2093 */
2094 update: Trigger;
2095 /**
2096 * ゲーム内タイマー
2097 */
2098 timers: GameTimer[];
2099 /**
2100 * 描画時に呼び出されるイベント。利用は想定されていないので、通常時はundefined。利用する際は自前でnewする必要がある。
2101 * updateとは異なり、経過時間は取得出来ない。
2102 */
2103 render: Trigger;
2104 /**
2105 * キーが押された時に呼び出されるイベント。InputKeyboardEventをパラメータとして持つ。
2106 * 将来的にインターフェース変更の可能性あり。
2107 */
2108 keyDown: Trigger;
2109 /**
2110 * キーが離された時に呼び出されるイベント。InputKeyboardEventをパラメータとして持つ。
2111 * 将来的にインターフェース変更の可能性あり。
2112 */
2113 keyUp: Trigger;
2114 /**
2115 * ポインティングデバイスが押された時に呼び出されるイベント。InputPointEventをパラメータとして持つ。
2116 * 将来的にインターフェース変更の可能性あり。
2117 */
2118 pointDown: Trigger;
2119 /**
2120 * ポインティングデバイスが離された時に呼び出されるイベント。InputPointEventをパラメータとして持つ。
2121 * 将来的にインターフェース変更の可能性あり。
2122 */
2123 pointUp: Trigger;
2124 /**
2125 * ポインティングデバイスが移動された時に呼び出されるイベント。ただし移動だけでは発生せず、必ずpointDownが事前に発生している必要がある。InputPointEventをパラメータとして持つ。
2126 * 将来的にインターフェース変更の可能性あり。
2127 */
2128 pointMove: Trigger;
2129 /**
2130 * 現在ゲームがフォーカスを持っているかどうか
2131 */
2132 focus: boolean;
2133 /**
2134 * 発生済みのユーザ入力イベント群。
2135 * jgame.jsではメインループ内で入力処理を発火させるため、keydownなどのDOMイベントでいったんここにプールしてから、メインループでイベント発火という手順を踏む。
2136 */
2137 eventQueue: InputEvent[];
2138 /** Enumと各種イベント名のマップ */
2139 inputEventMap: any;
2140 /** pointDown発生済みかどうかのフラグ */
2141 isPointDown: boolean;
2142 /** このゲームの乱数シード */
2143 seed: number;
2144 /** このゲームの乱数エンジン */
2145 mt: MT;
2146 /** 独自イベント */
2147 userEvent: jg.Trigger;
2148 /**
2149 * 新しいゲームを生成する。
2150 * 現在引数をwidth, heightを廃止しargsのみにする変更が検討されている。
2151 * @param width ゲームの横幅
2152 * @param height ゲームの縦幅
2153 * @param args RenderTransferModeを指定すると、このゲームのRenderTransferModeの変更が可能。HTMLElementを指定すると、DOMコンテナを指定可能。文字列を指定すると、window[文字列]のコンストラクタをRendererに指定する
2154 */
2155 constructor(width: number, height: number, ...args: any[]);
2156 /**
2157 * 乱数シードを指定する。
2158 * 再現性のあるゲーム以外で明示的に呼び出す必要はなく、通常は初期化時に自動的に設定される。
2159 * @param seed 乱数シード。省略時は自動設定
2160 */
2161 setSeed(seed?: number): void;
2162 /**
2163 * 乱数を取得する。再現性のあるゲームを作る場合、Math.randomではなくこちらのrandomを利用する必要がある
2164 * @param min 最小値
2165 * @param max 最大値
2166 */
2167 random(min: number, max: number): number;
2168 /**
2169 * windowのサイズを取得する
2170 */
2171 getWindowSize(): {
2172 width: number;
2173 height: number;
2174 };
2175 /**
2176 * 現在の画面の大きさに合わせて拡大する。
2177 * @param no_center trueに設定すると中央寄せにしない
2178 */
2179 fitToWindow(no_center?: boolean): void;
2180 /**
2181 * 背景色を設定する。
2182 * このメソッドは廃止が検討されている。
2183 * @param r 0~255の範囲で赤色値を指定
2184 * @param g 0~255の範囲で緑色値を指定
2185 * @param b 0~255の範囲で青色値を指定
2186 * @param a 0~255の範囲で透明度を指定
2187 */
2188 setBgColor(r: number, g: number, b: number, a: number): void;
2189 /**
2190 * ゲーム内のすべてのオブジェクトをリフレッシュする。
2191 * スタンバイからの復帰時などでcanvasが壊れていても本メソッドでの復旧が可能だが、BufferedRendererなど、破壊されるオブジェクトもある点に注意。
2192 */
2193 refresh(): void;
2194 /**
2195 * 現在実行されている環境でタッチイベントが有効化を判定する。
2196 * copied by enchant.js (enchant.ENV.TOUCH_ENABLED)
2197 */
2198 isTouchEnable(): boolean;
2199 /**
2200 * マウスなどのDOMイベントからjgame.jsが利用可能なoffset値を取得する
2201 */
2202 getOffsetByEvent(e: any): CommonOffset;
2203 /**
2204 * DOMのmousedownに対するイベントハンドラ
2205 * @param e DOMのMouseEvent
2206 */
2207 onmousedown(e: MouseEvent): void;
2208 /**
2209 * DOMのtouchstartに対するイベントハンドラ。
2210 * 現状lib.d.tsに型情報が定義されていないようなので、anyになっている。
2211 * @param e DOMのTouchEvent
2212 */
2213 ontouchstart(e: any): void;
2214 /**
2215 * DOMのmousemoveに対するイベントハンドラ
2216 * @param e DOMのMouseEvent
2217 */
2218 onmousemove(e: MouseEvent): void;
2219 /**
2220 * DOMのtouchmoveに対するイベントハンドラ。
2221 * 現状lib.d.tsに型情報が定義されていないようなので、anyになっている。
2222 * @param e DOMのTouchEvent
2223 */
2224 ontouchmove(e: any): void;
2225 /**
2226 * DOMのmouseupに対するイベントハンドラ
2227 * @param e DOMのMouseEvent
2228 */
2229 onmouseup(e: MouseEvent): void;
2230 /**
2231 * DOMのtouchendに対するイベントハンドラ。
2232 * 現状lib.d.tsに型情報が定義されていないようなので、anyになっている。
2233 * @param e DOMのTouchEvent
2234 */
2235 ontouchend(e: any): void;
2236 /**
2237 * ポインティングイベントを有効にする。
2238 * 無効化処理も実行するため、何度も切り替えるアプリケーションの場合pointDown, pointMove, pointUpのイベントハンドラを独自に復旧する必要がある点に注意。
2239 */
2240 enablePointHandler(): void;
2241 /**
2242 * ポインティングイベントを無効化する。
2243 */
2244 disablePointHandler(): void;
2245 /**
2246 * DOMのkeydownイベントに対するイベントハンドラ。
2247 * lib.d.tsにおいて型情報が不明なためanyになっている。KeyboardEventExtensionsでいいのだろうか。
2248 * @param e DOMのキーボードイベントパラメータ。内部的にはkeyCodeしか利用していない
2249 */
2250 onkeydown(e: any): void;
2251 /**
2252 * DOMのkeyupイベントに対するイベントハンドラ。
2253 * lib.d.tsにおいて型情報が不明なためanyになっている。KeyboardEventExtensionsでいいのだろうか。
2254 * @param e DOMのキーボードイベントパラメータ。内部的にはkeyCodeしか利用していない
2255 */
2256 onkeyup(e: any): void;
2257 /**
2258 * キーボードイベントを有効化する。
2259 * このイベントを有効にしてしまうと、keymapに登録されているキーコードにpreventDefaultが動くため、textareaなどが存在するページで実行する場合は注意が必要。
2260 * また無効化処理も実行するため、何度も切り替えるアプリケーションの場合keyDown, keyUpのイベントハンドラを独自に復旧する必要がある点に注意。
2261 */
2262 enableKeyboardHandler(): void;
2263 /**
2264 * キーボードイベントを無効化する。
2265 */
2266 disableKeyboardHandler(): void;
2267 /**
2268 * 指定した時間間隔で実行するタイマーを追加する。
2269 * このタイマーは大体のタイマーであるため、アニメーションなど正確性の不要な作業のみの利用に限定するべきである。
2270 * @param wait 実行時間間隔をミリ秒で指定する
2271 * @param owner タイマーのコールバックに対するthis
2272 * @param handler コールバック
2273 */
2274 addTimer(wait: number, owner: any, handler: Function): void;
2275 /**
2276 * 指定した時間間隔で実行するタイマーのコールバックを削除する。
2277 * 一つもコールバックが存在しないタイマー自体の削除処理も行っている。
2278 * @param wait 実行時間間隔をミリ秒で指定する
2279 * @param owner タイマーのコールバックに対するthis
2280 * @param handler コールバック
2281 */
2282 removeTimer(wait: number, owner: any, handler: Function): void;
2283 /**
2284 * 指定したオーナーのタイマーに対するコールバックをすべて削除する
2285 * @param owner タイマーのコールバックに対するthis
2286 */
2287 removeTimerAll(owner: any): void;
2288 /**
2289 * シーンを変更する
2290 * @param scene 変更後のシーン
2291 * @param effect 変更時にかけるエフェクト。省略時はエフェクト無しになる。通常、EffectTypeの値を指定する
2292 * @param endOldScene trueを指定すると、切り替え前に前のシーンを削除する。
2293 */
2294 changeScene(scene: Scene, effect?: any, endOldScene?: boolean): void;
2295 /**
2296 * シーンを終了する
2297 * @param effect 変更時にかけるエフェクト。省略時はエフェクト無しになる。通常、EffectTypeの値を指定する
2298 */
2299 endScene(effect?: any): void;
2300 /**
2301 * 指定した名前のリソースを取得する。サウンドはsメソッドでの取得である点に注意
2302 * @param name リソース名
2303 */
2304 r(name: string): HTMLImageElement;
2305 /**
2306 * 指定した名前のサウンドリソースを取得する。画像などはrメソッドの取得である点に注意
2307 * @param name サウンドリソース名
2308 */
2309 s(name: string): any;
2310 /**
2311 * 事前の読み込み処理を行う。
2312 * 配列、オブジェクト、文字列のいずれかが指定可能で、複数回の呼び出しも可能。
2313 * 配列の場合、リソース名はURLと同じ扱いになる。
2314 * game.preload(["a.png", "b.png", "c.png"])
2315 * オブジェクトの場合、リソース名はキーで値がURLとなる。
2316 * game.preload({a: "a.png", b: "b.png", c: "c.png"})
2317 * 文字列の場合、第二、第三引数などを配列と同じように処理する。
2318 * game.preload("a.png", "b.png", "c.png")
2319 * @param ary 配列、オブジェクト、文字列のいずれかが指定可能。
2320 */
2321 preload(ary: any): void;
2322 /**
2323 * 他のライブラリで読み込み中のリソースをjgame.jsに登録する。
2324 * @param identity リソースの識別名
2325 */
2326 preloadOther(identity: string): void;
2327 /**
2328 * 他のライブラリで読み込み中のリソースが読み込み完了となった事をjgame.jsに通知する
2329 * @param identity リソースの識別名
2330 */
2331 preloadCompleteOther(identity: string): void;
2332 /**
2333 * 読み込み中シーンを設定し、現在のシーンを切り替える。
2334 * 現在既に読み込み中である場合、本メソッドは処理を行わない。
2335 */
2336 setLoadingScene(scene: any): void;
2337 /**
2338 * preloadの完了処理として、loadingSceneフィールドの削除、loadedイベントの発火を行う
2339 */
2340 preloadComplete(): void;
2341 /**
2342 * ゲームを終了する。
2343 * 実態はメインループの終了のみであり、本処理実行後でも_exitフラグの削除とmainメソッドの再実行によりゲームは再開可能
2344 */
2345 end(): boolean;
2346 /**
2347 * ゲームを再開する。
2348 * endによって行われたメインループの再起動。
2349 */
2350 resume(): boolean;
2351 /**
2352 * ポインティングされたEntityを設定する
2353 * @param param 対象のポインティングイベント
2354 */
2355 setPointingEntity(param: InputPointEvent): void;
2356 /**
2357 * 入力イベントを実行する
2358 */
2359 raiseInputEvent(): void;
2360 /**
2361 * メインループ
2362 */
2363 main(): void;
2364 /**
2365 * フルスクリーン化を行う
2366 */
2367 fullscreen(): boolean;
2368 /**
2369 * フルスクリーンを終了する
2370 */
2371 exitFullscreen(): boolean;
2372 }
2373 }
2374 declare module jg {
2375 /**
2376 * 画像フィルタ機能を提供するモジュール
2377 */
2378 module ImageFilter {
2379 /**
2380 * フィルタ用インターフェース
2381 */
2382 interface IFilter {
2383 /**
2384 * フィルタを実行する
2385 * @param pixels フィルタ対象のピクセルデータ
2386 */
2387 filter(pixels: ImageData): any;
2388 }
2389 /**
2390 * 複数フィルタを重ねがけするためのクラス
2391 */
2392 class FilterChain implements IFilter {
2393 /** 管理中フィルタ */
2394 filters: Filter[];
2395 /**
2396 * コンストラクタ
2397 */
2398 constructor();
2399 /**
2400 * 対象indexのフィルタを取得
2401 * @param index 取得対象index
2402 */
2403 get(index: number): Filter;
2404 /**
2405 * フィルタを追加
2406 * @param filter 追加するフィルタ
2407 */
2408 add(filter: Filter): FilterChain;
2409 /**
2410 * 単体のフィルタを設定する。これまでset, addしたフィルタはすべて破棄される
2411 * @param filter 設定するフィルタ
2412 */
2413 set(filter: Filter): FilterChain;
2414 /**
2415 * フィルタを所定の位置に挿入する
2416 * @param index 挿入する場所のindex
2417 * @param filter 挿入するフィルタ
2418 */
2419 insert(index: number, filter: Filter): FilterChain;
2420 /**
2421 * フィルタを削除する
2422 * @param filter 削除するフィルタ
2423 */
2424 remove(filter: Filter): void;
2425 /**
2426 * 全フィルタをクリアする
2427 */
2428 clear(): FilterChain;
2429 /**
2430 * フィルタ数を返す
2431 */
2432 count(): number;
2433 /**
2434 * このフィルタチェインに一つでもフィルタが存在するかを返す
2435 */
2436 has(): boolean;
2437 /**
2438 * このFilterChainによるフィルタを適用したSpriteを返す
2439 * @param entity SpriteにするEntity
2440 */
2441 createSprite(entity: E): Sprite;
2442 /**
2443 * このFilterChainによるフィルタを適用したImageを返す
2444 * @param entity SpriteにするEntity
2445 */
2446 createImage(entity: Sprite): HTMLCanvasElement;
2447 /**
2448 * フィルタを適用する
2449 * @param pixels 適用対象のピクセルデータ
2450 */
2451 filter(pixels: ImageData): void;
2452 }
2453 /**
2454 * 一般的な機能を持つフィルタ
2455 */
2456 class Filter implements IFilter {
2457 /** オプション */
2458 opt: any;
2459 /** 横幅 */
2460 width: number;
2461 /** 縦幅 */
2462 height: number;
2463 /** 対象のゲーム */
2464 game: Game;
2465 /**
2466 * 対象のゲームを指定してFilterクラスのインスタンスを生成する
2467 * @param game 対象のゲーム
2468 */
2469 constructor(game: Game);
2470 /**
2471 * フィルタを適用する
2472 * @param pixels 適用対象のピクセルデータ
2473 */
2474 filter(pixels: ImageData): void;
2475 /**
2476 * オプションを取得する
2477 * @param name オプション名
2478 * @param defaultValue オプションが無い場合に返す値を指定する。省略可
2479 */
2480 getOption(name: string, defaultValue?: any): any;
2481 /**
2482 * 色の相違を取得
2483 * @param dif
2484 * @param dest
2485 * @param src
2486 */
2487 findColorDifference(dif: number, dest: number, src: number): number;
2488 /**
2489 * 色を作成する
2490 * @param src
2491 */
2492 createColor(src: string): string;
2493 /**
2494 * マトリックスに基づいたフィルタを適用する
2495 * @param pixels 適用対象のピクセルデータ
2496 * @param matrix
2497 * @param amount
2498 */
2499 applyMatrix(pixels: ImageData, matrix: number[], amount: number): ImageData;
2500 /**
2501 * RGBの境界値をチェックする
2502 * @param val チェックする値
2503 */
2504 checkRGBBoundary(val: number): number;
2505 }
2506 /**
2507 * ユニバーサルトランジションを実現するフィルタ
2508 */
2509 class UniversalTransitionFilter extends Filter {
2510 /** ルール画像 */
2511 ruleImage: ImageData;
2512 /** マスク */
2513 mask: any;
2514 /**
2515 * コンストラクタ
2516 * @param game 対象のゲーム
2517 * @param image ルール画像
2518 * @param amount フィルタの影響度。省略時は255
2519 * @param repeat サイズが合わない場合繰り返すかどうか。省略時はfalse
2520 */
2521 constructor(game: Game, image?: any, amount?: number, repeat?: boolean);
2522 /**
2523 * ImageData取得
2524 * @param image 取得対象の画像
2525 * @param canvas 取得対象のcanvas。省略時は内部的に生成し、drawImageでimageを描画する
2526 */
2527 getImageData(image: any, canvas?: HTMLCanvasElement): ImageData;
2528 /**
2529 * ルール画像を作成する
2530 */
2531 createRuleImage(): void;
2532 /**
2533 * マスクを作成する
2534 */
2535 createMask(): any;
2536 /**
2537 * フィルタを適用する
2538 * @param pixels 適用対象のピクセルデータ
2539 */
2540 filter(pixels: ImageData): void;
2541 }
2542 /**
2543 * 逆方向からのユニバーサルトランジション
2544 */
2545 class ReverseUniversalTransitionFilter extends UniversalTransitionFilter {
2546 /**
2547 * 画像を作成する
2548 * @param width 横幅
2549 * @param height 縦幅
2550 */
2551 createImageData(width: number, height: number): ImageData;
2552 /**
2553 * ルール画像を作成する
2554 */
2555 createRuleImage(): void;
2556 }
2557 /**
2558 * グレースケールにするフィルタ
2559 */
2560 class GreyscaleFilter extends Filter {
2561 /**
2562 * コンストラクタ
2563 * @param game 対象のゲーム
2564 * @param opacity 透明度。省略時は1
2565 */
2566 constructor(game: Game, opacity?: number);
2567 /**
2568 * フィルタを適用する
2569 * @param pixels 対象のピクセルデータ
2570 */
2571 filter(pixels: ImageData): void;
2572 }
2573 /**
2574 * セピア色にするフィルタ
2575 */
2576 class SepiaFilter extends Filter {
2577 /**
2578 * コンストラクタ
2579 * @param game 対象のゲーム
2580 * @param opacity 透明度。省略時は1
2581 */
2582 constructor(game: Game, opacity?: number);
2583 /**
2584 * フィルタを適用する
2585 * @param pixels 対象のピクセルデータ
2586 */
2587 filter(pixels: ImageData): void;
2588 }
2589 /**
2590 * 色味をつけるフィルタ
2591 */
2592 class TintFilter extends Filter {
2593 /**
2594 * コンストラクタ
2595 * @param game 対象のゲーム
2596 * @param color 色。省略時は1
2597 */
2598 constructor(game: Game, color?: string, opacity?: number);
2599 /**
2600 * フィルタを適用する
2601 * @param pixels 対象のピクセルデータ
2602 */
2603 filter(pixels: ImageData): void;
2604 }
2605 /**
2606 * エッジを際立たせるフィルタ
2607 */
2608 class EdgesFilter extends Filter {
2609 /**
2610 * コンストラクタ
2611 * @param game 対象のゲーム
2612 * @param amount 威力。省略時は1
2613 */
2614 constructor(game: Game, amount?: number);
2615 /**
2616 * フィルタを適用する
2617 * @param pixels ピクセルデータ
2618 */
2619 filter(pixels: ImageData): void;
2620 }
2621 /**
2622 * エンボスフィルタ
2623 */
2624 class EmbossFilter extends Filter {
2625 /**
2626 * コンストラクタ
2627 * @param game 対象のゲーム
2628 * @param amount 威力。省略時は0.5
2629 */
2630 constructor(game: Game, amount?: number);
2631 /**
2632 * フィルタを適用する
2633 * @param pixels 対象のピクセルデータ
2634 */
2635 filter(pixels: ImageData): void;
2636 }
2637 /**
2638 * シャープにするフィルタ
2639 */
2640 class SharpenFilter extends Filter {
2641 /**
2642 * コンストラクタ
2643 * @param game 対象のゲーム
2644 * @param amount 威力
2645 */
2646 constructor(game: Game, amount?: number);
2647 /**
2648 * フィルタを適用する
2649 * @param pixels 対象のピクセルデータ
2650 */
2651 filter(pixels: ImageData): void;
2652 }
2653 /**
2654 * マトリックスに基づいた操作を行う汎用フィルタ
2655 */
2656 class MatrixFilter extends Filter {
2657 /**
2658 * コンストラクタ
2659 * @param game 対象のゲーム
2660 * @param amount 威力。省略時は0.5
2661 * @param matrix 適用するマトリックス。省略時はすべて0.111
2662 */
2663 constructor(game: Game, amount?: number, matrix?: number[]);
2664 /**
2665 * フィルタを適用する
2666 * @param pixels 対象のピクセルデータ
2667 */
2668 filter(pixels: ImageData): void;
2669 }
2670 /**
2671 * にじませるフィルタ。
2672 * アルゴリズムはガウシアンフィルタに順ずる。少し重い
2673 */
2674 class BlurFilter extends Filter {
2675 /**
2676 * コンストラクタ
2677 * @param game 対象のゲーム
2678 * @param amount 威力。省略時は2
2679 */
2680 constructor(game: Game, amount?: number);
2681 /**
2682 * フィルタを適用する
2683 * @param pixels 対象のピクセルデータ
2684 */
2685 filter(pixels: ImageData): void;
2686 }
2687 /**
2688 * モザイクをかけるフィルタ
2689 */
2690 class MosaicFilter extends Filter {
2691 /**
2692 * コンストラクタ
2693 * @param game 対象のゲーム
2694 * @param size モザイクサイズ。省略時は5
2695 * @param opacity 透明度。省略時は1
2696 */
2697 constructor(game: Game, size?: number, opacity?: number);
2698 /**
2699 * フィルタを適用する
2700 * @param pixels 対象のピクセルデータ
2701 */
2702 filter(pixels: ImageData): void;
2703 }
2704 /**
2705 * ノイズの種類。Monoでモノクロノイズ、Colorでカラーノイズ
2706 */
2707 enum NoiseType {
2708 Mono = 0,
2709 Color = 1,
2710 }
2711 /**
2712 * ノイズをつけるフィルタ
2713 */
2714 class NoiseFilter extends Filter {
2715 /**
2716 * コンストラクタ
2717 * @param game 対象のゲーム
2718 * @param amount 威力。省略時は30
2719 * @param type モノクロノイズかカラーノイズか。省略時はモノクロ
2720 */
2721 constructor(game: Game, amount?: number, type?: NoiseType);
2722 /**
2723 * フィルタを適用する
2724 * @param pixels 対象のピクセルデータ
2725 */
2726 filter(pixels: ImageData): void;
2727 }
2728 /**
2729 * ポスタライズフィルタ
2730 */
2731 class PosterizeFilter extends Filter {
2732 /**
2733 * コンストラクタ
2734 * @param game 対象のゲーム
2735 * @param amount 威力。省略時は2
2736 * @param opacity 透明度。省略時は1
2737 */
2738 constructor(game: Game, amount?: number, opacity?: number);
2739 /**
2740 * フィルタを適用する
2741 * @param pixels 対象のピクセルデータ
2742 */
2743 filter(pixels: ImageData): void;
2744 }
2745 }
2746 }
2747 declare module jg {
2748 /**
2749 * あらゆるAction関連イベントパラメータに格納されているパラメータ
2750 */
2751 interface ActionEventArgs {
2752 /** そのアクションが所属するTimelineクラス */
2753 timeline: Timeline;
2754 }
2755 /**
2756 * 時間経過時のイベントパラメータ
2757 */
2758 interface ActionTickEventArgs extends ActionEventArgs {
2759 /** 経過時間 */
2760 elapsed: number;
2761 }
2762 /**
2763 * 基本のアクション。Timelineクラスで利用される
2764 */
2765 class Action {
2766 /** このアクション完了までに要する時間 */
2767 time: number;
2768 /** 現在の経過時間 */
2769 frame: number;
2770 /** アクションごとに呼ばれるイベント。ActionEventArgsをパラメータとして持つ */
2771 added_to_timeline: Trigger;
2772 /** アクションごとに呼ばれるイベント。ActionEventArgsをパラメータとして持つ */
2773 removed_from_timeline: Trigger;
2774 /** アクションごとに呼ばれるイベント。ActionTickEventArgsをパラメータとして持つ */
2775 action_tick: Trigger;
2776 /** アクションごとに呼ばれるイベント。ActionEventArgsをパラメータとして持つ */
2777 action_start: Trigger;
2778 /** アクションごとに呼ばれるイベント。ActionEventArgsをパラメータとして持つ */
2779 action_end: Trigger;
2780 /** 所属するTimeline */
2781 timeline: Timeline;
2782 /** 操作対象のEntity */
2783 entity: E;
2784 /**
2785 * コンストラクタ
2786 * @param param パラメータ一式
2787 */
2788 constructor(param?: any);
2789 /**
2790 * removed_from_timelineイベントのイベントハンドラ
2791 */
2792 removedFromTimeline(): void;
2793 /**
2794 * added_to_timelineイベントのイベントハンドラ
2795 */
2796 addedToTimeline(p: ActionEventArgs): void;
2797 /**
2798 * action_tickイベントのイベントハンドラ
2799 */
2800 actionTick(p: ActionTickEventArgs): void;
2801 }
2802 }
2803 declare module jg {
2804 class ParallelAction extends Action {
2805 actions: Action[];
2806 endedActions: Action[];
2807 constructor(param?: any);
2808 addedToTimeline(p: ActionEventArgs): void;
2809 removedFromTimeline(): void;
2810 actionTick(evt: ActionTickEventArgs): void;
2811 parallelActionStart(e: any): void;
2812 }
2813 }
2814 declare module jg {
2815 /** 描画オプションを変更するための関数群 */
2816 var TWEEN_DRAW_OPTION_SETTERS: {};
2817 /**
2818 * Actionを継承した、オブジェクトの特定のプロパティを、なめらかに変更したい時に用いるためのアクションクラス.
2819 * アクションを扱いやすく拡張したクラス.
2820 *
2821 * コンストラクタに渡す設定オブジェクトに、プロパティの目標値を指定すると、
2822 * アクションが実行された時に、目標値までなめらかに値を変更するようなアクションを生成する。
2823 *
2824 * トゥイーンのイージングも、easing プロパティで指定できる。
2825 * デフォルトでは jg.Easing.LINEAR が指定されている。
2826 */
2827 class Tween extends Action {
2828 /** 元値 */
2829 origin: any;
2830 /** 目標値 */
2831 target: any;
2832 /** 一つ前の値 */
2833 old: any;
2834 /** Easign関数 */
2835 easing: (t: number, b: number, c: number, d: number) => number;
2836 /** 変更する値 */
2837 props: Object;
2838 /** 特殊な操作用 */
2839 otherTarget: any;
2840 /**
2841 * コンストラクタ
2842 * @param 設定したいプロパティ値一式が入ったオブジェクト
2843 */
2844 constructor(params: any);
2845 /**
2846 * アクション開始時のコールバック
2847 * @param e 該当のアクションを表すイベント
2848 */
2849 actionStart(e: ActionEventArgs): void;
2850 /**
2851 * 時間経過で呼ばれるコールバック
2852 */
2853 tweenActionTick(e: ActionTickEventArgs): void;
2854 }
2855 }
2856 declare module jg {
2857 /**
2858 * アニメーションを管理するためのクラス.
2859 *
2860 * 操作するエンティティひとつに対して、必ずひとつのタイムラインが対応する。
2861 * Timelineクラス を読み込むと、Entity クラスを継承したすべてのクラスの
2862 * tl プロパティに、タイムラインクラスのインスタンスが生成される。
2863 *
2864 * タイムラインクラスは、自身に様々なアクションを追加するメソッドを持っており、
2865 * これらを使うことで簡潔にアニメーションや様々な操作をすることができる。
2866 * タイムラインクラスはフレームとタイムのアニメーションができる。
2867 *
2868 * 元ソースはenchant.jsに提供されていたtl.enchant.jsです。
2869 * http://enchantjs.com/ja/
2870 *
2871 * @param entity 操作の対象となるEntity
2872 *
2873 */
2874 class Timeline {
2875 /** 操作対象のEntity */
2876 entity: E;
2877 /** 対象の全アクション */
2878 queue: Action[];
2879 /** 停止中かどうか */
2880 paused: boolean;
2881 /** ループするかどうか */
2882 looped: boolean;
2883 /** */
2884 _activated: boolean;
2885 /** */
2886 _parallel: ParallelAction;
2887 /** フレームベースかどうか。jgame.jsではデフォルトfalseで、変更は推奨されない */
2888 isFrameBased: boolean;
2889 /**
2890 *
2891 * @param entity
2892 */
2893 constructor(entity: E);
2894 /**
2895 *
2896 * @param force
2897 */
2898 _deactivateTimeline(force?: boolean): void;
2899 /**
2900 *
2901 * @param force
2902 */
2903 _activateTimeline(force?: boolean): void;
2904 /**
2905 * フレームベースのアニメーションにする
2906 */
2907 setFrameBased(): void;
2908 /**
2909 * 時間ベースのアニメーションにする
2910 */
2911 setTimeBased(): void;
2912 /**
2913 * キューの先頭にあるアクションを終了し、次のアクションへ移行する。
2914 * @param remainingTime
2915 */
2916 next(remainingTime?: number): void;
2917 /**
2918 * 時間経過処理
2919 * @param t 経過時間
2920 */
2921 tick(t: number): void;
2922 /**
2923 * 新しいアクションを追加する
2924 * @param action 追加するアクション
2925 */
2926 add(action: Action): Timeline;
2927 /**
2928 * アクションを簡単に追加するためのメソッド。実体は add メソッドのラッパ。
2929 * @param params アクションの設定オブジェクト
2930 */
2931 action(params: any): Timeline;
2932 /**
2933 * トゥイーンを簡単に追加するためのメソッド。実体は add メソッドのラッパ。
2934 * @param params トゥイーンの設定オブジェクト。
2935 */
2936 tween(params: any): Timeline;
2937 /**
2938 * タイムラインのキューをすべて破棄する。終了イベントは発行されない。
2939 */
2940 clear(): Timeline;
2941 /**
2942 * タイムラインを早送りする。巻き戻しは出来ない
2943 * @param frames 早送りするフレーム数(jgame.jsの場合は時間)
2944 */
2945 skip(frames: number): Timeline;
2946 /**
2947 * タイムラインの実行を一時停止する
2948 */
2949 pause(): Timeline;
2950 /**
2951 * タイムラインの実行を再開する
2952 */
2953 resume(): Timeline;
2954 /**
2955 * タイムラインをループさせる。
2956 */
2957 loop(): Timeline;
2958 /**
2959 * タイムラインのループを解除する。
2960 */
2961 unloop(): Timeline;
2962 /**
2963 * 指定した時間を待ち、何もしないアクションを追加する。
2964 * @param time 待ち時間
2965 */
2966 delay(time: number): Timeline;
2967 /**
2968 * 関数を実行し、即時に次のアクションに移るアクションを追加する。
2969 * @param func 実行する関数
2970 */
2971 then(func: Function): Timeline;
2972 /**
2973 * フレームを変更する。このメソッドを実行する場合、EntityがFrameSpriteである必要がある
2974 * @param wait この時間待ってから操作を実行
2975 * @param frame 切り替え後のフレーム。詳細はFrameSprite.frameを参照。省略すると待ち時間無しで第一引数に指定したフレームに変更する
2976 */
2977 frame(wait: any, frame?: number[]): Timeline;
2978 /**
2979 * フレーム番号を変更する
2980 * @param wait この時間待ってから操作を実行
2981 * @param fno 切り替え後のフレーム番号。詳細はFrameSprite.fnoを参照。省略すると待ち時間無しで第一引数に指定したフレーム番号に変更する
2982 */
2983 fno(wait: number, fno?: number): Timeline;
2984 /**
2985 * 実行したい関数を、経過時間をキーとした連想配列(オブジェクト)で複数指定し追加する。
2986 * sprite.tl().cue({
2987 * 10: function(){ 10msec後に実行される関数 },
2988 * 20: function(){ 20msec後に実行される関数 },
2989 * 30: function(){ 30msec後に実行される関数 }
2990 * });
2991 * @param cue 経過時間をキーとした連想配列
2992 */
2993 cue(cue: any): void;
2994 /**
2995 * 指定した関数を指定した時間繰り返し実行するアクションを追加する。
2996 * @param func 実行する関数
2997 * @param time 時間
2998 */
2999 repeat(func: Function, time: number): Timeline;
3000 /**
3001 * 複数のアクションを並列で実行したいときに指定する。
3002 * and で結ばれたすべてのアクションが終了するまで次のアクションには移行しない
3003 * 300msecでフェードインしながら360度回転する例
3004 * sprite.tl().fadeIn(300).and.rotateBy(360, 300);
3005 */
3006 and(): Timeline;
3007 /**
3008 * true値 が返るまで、関数を毎フレーム実行するアクションを追加する。
3009 * @param func 実行する関数
3010 */
3011 waitUntil(func: Function): Timeline;
3012 /**
3013 * 指定座標に移動する
3014 * @param x X座標
3015 * @param y Y座標
3016 * @param time 必要時間
3017 * @param easing Easing関数。省略した場合はLINEAR
3018 */
3019 moveTo(x: number, y: number, time: number, easing?: Function): Timeline;
3020 /**
3021 * 指定したX座標に移動する
3022 * @param x X座標
3023 * @param time 必要時間
3024 * @param easing Easing関数。省略した場合はLINEAR
3025 */
3026 moveX(x: number, time: number, easing?: Function): Timeline;
3027 /**
3028 * 指定したY座標に移動する
3029 * @param y Y座標
3030 * @param time 必要時間
3031 * @param easing Easing関数。省略した場合はLINEAR
3032 */
3033 moveY(y: number, time: number, easing?: Function): Timeline;
3034 /**
3035 * 現在位置から指定した座標分移動する
3036 * @param x X座標の変化量
3037 * @param y Y座標の変化量
3038 * @param time 必要時間
3039 * @param easing Easing関数。省略した場合はLINEAR
3040 */
3041 moveBy(x: number, y: number, time: number, easing?: Function): Timeline;
3042 /**
3043 * 指定座標にスクロールする
3044 * @param x X座標
3045 * @param y Y座標
3046 * @param time 必要時間
3047 * @param easing Easing関数。省略した場合はLINEAR
3048 */
3049 scrollTo(x: number, y: number, time: number, easing?: Function): Timeline;
3050 /**
3051 * 指定したX座標にスクロールする
3052 * @param x X座標
3053 * @param time 必要時間
3054 * @param easing Easing関数。省略した場合はLINEAR
3055 */
3056 scrollX(x: number, time: number, easing?: Function): Timeline;
3057 /**
3058 * 指定したY座標にスクロールする
3059 * @param y Y座標
3060 * @param time 必要時間
3061 * @param easing Easing関数。省略した場合はLINEAR
3062 */
3063 scrollY(y: number, time: number, easing?: Function): Timeline;
3064 /**
3065 * 現在位置から指定した座標分スクロールする
3066 * @param x X座標の変化量
3067 * @param y Y座標の変化量
3068 * @param time 必要時間
3069 * @param easing Easing関数。省略した場合はLINEAR
3070 */
3071 scrollBy(x: number, y: number, time: number, easing?: Function): Timeline;
3072 /**
3073 * Entityの不透明度をなめらかに変えるアクションを追加する。
3074 * @param opacity 目標の不透明度
3075 * @param time 必要時間
3076 * @param easing Easing関数。省略した場合はLINEAR
3077 */
3078 fadeTo(opacity: number, time: number, easing?: Function): Timeline;
3079 /**
3080 * Entityをなめらかに表示するアクションを追加する。
3081 * @param time 必要時間
3082 * @param easing Easing関数。省略した場合はLINEAR
3083 */
3084 fadeIn(time: number, easing?: Function): Timeline;
3085 /**
3086 * Entityをなめらかに非表示にするアクションを追加する。
3087 * @param time 必要時間
3088 * @param easing Easing関数。省略した場合はLINEAR
3089 */
3090 fadeOut(time: number, easing?: Function): Timeline;
3091 /**
3092 * Entityを即座に非表示にする
3093 */
3094 hide(): Timeline;
3095 /**
3096 * Entityを即座に表示する
3097 */
3098 show(): Timeline;
3099 /**
3100 * 指定した大きさにサイズを変更する。scaleToが中心から拡大されるのに対し、resizeToは右方向へ拡大される
3101 * @param size widthまたはwidthとheight。widthのみを指定する場合、第二引数にheightを指定する
3102 * @param time 必要時間
3103 * @param easing Easing関数。省略した場合はLINEAR
3104 * @param easing2 heightを指定した場合ここがeasing関数になる
3105 */
3106 resizeTo(size: number, time: number, easing?: any, easing2?: any): Timeline;
3107 /**
3108 * 現在の大きさから指定した量サイズを変化させる。scaleByが中心から拡大されるのに対し、resizeByは右方向へ拡大される
3109 * @param size widthまたはwidthとheightの変化量。widthのみを指定する場合、第二引数にheightを指定する
3110 * @param time 必要時間
3111 * @param easing Easing関数。省略した場合はLINEAR
3112 * @param easing2 heightを指定した場合ここがeasing関数になる
3113 */
3114 resizeBy(size: number, time: number, easing?: any, easing2?: any): Timeline;
3115 /**
3116 * Entity をなめらかに拡大・縮小するアクションを追加する。
3117 * @param scale
3118 * @param time
3119 * @param easing Easing関数。省略した場合はLINEAR
3120 * @param easing2
3121 */
3122 scaleTo(scale: number, time: number, easing?: any, easing2?: any): Timeline;
3123 /**
3124 * Entity をなめらかに拡大・縮小するアクションを追加する。
3125 * @param scale
3126 * @param time
3127 * @param easing Easing関数。省略した場合はLINEAR
3128 * @param easing2
3129 */
3130 scaleBy(scale: number, time: number, easing?: any, easing2?: any): Timeline;
3131 /**
3132 * Entity をなめらかに回転させるアクションを追加する。
3133 * @param deg 目標の回転角度 (弧度法: 1回転を 360 とする)
3134 * @param time フレーム数
3135 * @param easing Easing関数。省略した場合はLINEAR
3136 */
3137 rotateTo(deg: number, time: number, easing?: Function): Timeline;
3138 /**
3139 * Entity をなめらかに回転させるアクションを追加する。
3140 * @param deg 目標の回転角度 (弧度法: 1回転を 360 とする)
3141 * @param time フレーム数
3142 * @param easing Easing関数。省略した場合はLINEAR
3143 */
3144 rotateBy(deg: number, time: number, easing?: Function): Timeline;
3145 /**
3146 * フィルタをかける
3147 * @param targetClass ImageFilter.TintFilterなど、対象のフィルタクラスを指定する
3148 * @param props フィルタクラスに指定するプロパティ値。{propName: {start: val, end: val}}の形式で指定
3149 * @param time 必要時間
3150 * @param easing Easing関数。省略した場合はLINEAR
3151 */
3152 filter(targetClass: Function, props: any, time: number, easing?: Function): Timeline;
3153 /**
3154 * Entity をシーンから削除する。
3155 */
3156 removeFromScene(): Timeline;
3157 }
3158 }
3159 declare module jg {
3160 /**
3161 * ブラウザ情報
3162 */
3163 interface BrowserInfo {
3164 /** Chromeであればtrue */
3165 chrome?: boolean;
3166 /** Webkit系であればtrue */
3167 webkit?: boolean;
3168 /** Safariであればtrue */
3169 safari?: boolean;
3170 /** Operaであればtrue */
3171 opera?: boolean;
3172 /** Internet Explorerであればtrue */
3173 msie?: boolean;
3174 /** FireFoxであればtrue */
3175 mozilla?: boolean;
3176 /** ブラウザのバージョン */
3177 version?: string;
3178 }
3179 /**
3180 * jgame.jsのユーティリティ関数群。
3181 * Note: このクラスに似たようなコードが多いのは関数コールのオーバーヘッドを避けるためで、意図的に最適化をしていない結果
3182 */
3183 class JGUtil {
3184 /** ブラウザ情報 */
3185 static browser: BrowserInfo;
3186 /**
3187 * focus獲得と同時に動作し、focusが離れたら動作しないゲームにする。
3188 * このメソッドは一つのGameインスタンスに対して一度しか呼び出してはならない。
3189 */
3190 static autoStop(...games: Game[]): void;
3191 /**
3192 * 座標の中心地を返す。
3193 * 引数がCommonAreaである場合、サイズも計算して返し、CommonOffsetである場合は何も計算せずに返す
3194 * @param p 判定する座標または領域
3195 */
3196 static getCenterPoint(p: CommonOffset): CommonOffset;
3197 /**
3198 * 座標の中止点から見ての余白を返す。
3199 * 引数がCommonAreaである場合、サイズを計算して返し、CommonOffsetである場合はx:0, y:0を返す
3200 * @param p 判定する座標または領域
3201 */
3202 static getMargin(p: CommonOffset): CommonOffset;
3203 /**
3204 * 二つの座標または領域が衝突しているかを判定する
3205 * @param p1 判定する座標または領域
3206 * @param p2 判定する座標または領域
3207 */
3208 static intersect(p1: CommonOffset, p2: CommonOffset): boolean;
3209 /**
3210 * 二つの座標または領域の距離を返す。
3211 * 領域である場合、中心点からの距離となる点に注意
3212 * @param p1 判定する座標または領域
3213 * @param p2 判定する座標または領域
3214 */
3215 static getDistance(p1: CommonOffset, p2: CommonOffset): CommonOffset;
3216 /**
3217 * 二つのオブジェクトが追尾しあう場合の速度に応じた移動量を返す
3218 * @param p1 追尾する座標または領域
3219 * @param p2 追尾する座標または領域
3220 * @param power 移動力。省略時は1(瞬時に移動を完了するだけの量)
3221 * @param maxMove 移動最大値。省略時は判定しない
3222 */
3223 static getMovePoint(p1: CommonOffset, p2: CommonOffset, power?: number, maxMove?: number): CommonOffset;
3224 /**
3225 * 二つの座標または領域を比較し、p1から見てp2がどの方角にあるかをAngle型で返す
3226 * @param p1 判定する座標または領域
3227 * @param p2 判定する座標または領域
3228 * @param minDistance 最小距離。指定するとこの距離以上に距離がある場合、nullを返す
3229 */
3230 static getDirectionAngle(p1: CommonOffset, p2: CommonOffset, minDistance?: number): Angle;
3231 /**
3232 * 二つの座標または領域を比較し、p1から見てp2がどの方角にあるかをKeytype型で返す
3233 * @param p1 判定する座標または領域
3234 * @param p2 判定する座標または領域
3235 * @param minDistance 最小距離。指定するとこの距離以上に距離がある場合、nullを返す
3236 */
3237 static getDirectionKeytype(p1: CommonOffset, p2: CommonOffset, minDistance?: number): Keytype;
3238 /**
3239 * p1にp2を横方向で追尾させる
3240 * @param p1 追尾する座標または領域
3241 * @param p2 追尾される座標または領域
3242 * @param speed 移動速度
3243 * @param t 経過時間
3244 */
3245 static homingX(p1: CommonOffset, p2: CommonOffset, speed: number, t: number): boolean;
3246 /**
3247 * p1にp2を縦方向で追尾させる
3248 * @param p1 追尾する座標または領域
3249 * @param p2 追尾される座標または領域
3250 * @param speed 移動速度
3251 * @param t 経過時間
3252 */
3253 static homingY(p1: CommonOffset, p2: CommonOffset, speed: number, t: number): boolean;
3254 /**
3255 * p1にp2を横方向で追尾させる
3256 * @param p1 追尾する座標または領域
3257 * @param p2 追尾される座標または領域
3258 * @param speed 移動速度
3259 * @param t 経過時間
3260 */
3261 static homing(p1: CommonOffset, p2: CommonOffset, speed: number, t: number): boolean;
3262 /**
3263 * 表示順序をY座標順にするためのメソッドサンプル 。
3264 * 下記のようにLayerなどに指定すると、描画順を変更できる。
3265 * game.scene.root.orderDraw = JGUtil.orderDrawY;
3266 */
3267 static orderDrawY(target: E): void;
3268 /**
3269 * 線形グラデーションを作成する。ここで作成したグラデーションは、Shapeの色などに用いることが出来る。
3270 * @param rect グラデーションの範囲を指定。Rectangleクラス、またはjsの場合は4つの引数に分けてもよい。引数を4つにけると、colorsが第五引数、offsetsが第六引数となる
3271 * @param colors グラデーション色。CSSカラーで指定する
3272 * @param offsets グラデーションのオフセット値を0~1の範囲で指定。colorsと同じ個数指定する。省略した場合、等分に割られた値が自動的に割り当てられる
3273 */
3274 static createLinearGradient(rect: any, colors: string[], offsets?: number[]): CanvasGradient;
3275 /**
3276 * 円形グラデーションを作成する。ここで作成したグラデーションは、Shapeの色などに用いることが出来る。
3277 * @param rect グラデーションの範囲を指定。Rectangleクラス、またはjsの場合は4つの引数に分けてもよい。
3278 * @param radius1 開始円の半径
3279 * @param radius2 終了円の半径
3280 * @param colors グラデーション色。CSSカラーで指定する
3281 * @param offsets グラデーションのオフセット値を0~1の範囲で指定。colorsと同じ個数指定する。省略した場合、等分に割られた値が自動的に割り当てられる
3282 */
3283 static createRadialGradient(rect: any, radius1: number, radius2: number, colors: string[], offsets?: number[]): CanvasGradient;
3284 /**
3285 * パターン画像を作成する。ここで作成したパターン画像は、Shapeの色などに用いることが出来る
3286 * @param image パターン画像のソースイメージ
3287 * @param repeat 繰り返し方法を、repeat, repeat-x, repeat-y, no-repeatいずれかの文字列で指定。省略時はrepeatになる
3288 */
3289 static createPattern(image: any, repeat?: string): CanvasPattern;
3290 /**
3291 * style属性を使って拡縮しているかどうか
3292 */
3293 static isStyleScale: boolean;
3294 /**
3295 * 変形方法を返し、JGUtil.isStyleScaleに値が無い場合は値をセットする
3296 */
3297 static isTransformMode(): boolean;
3298 /**
3299 * キャンバスを引き伸ばす。通常、ゲームのサイズ変更で利用される
3300 * @param canvas 対象のキャンバス
3301 * @param size 引き伸ばした後のサイズ
3302 */
3303 static scaleCanvas(canvas: HTMLCanvasElement, size: CommonSize): void;
3304 /**
3305 * ブラウザ情報を取得する。
3306 * このメソッドは一度取得した後はJGUtil.browserに情報を格納し、以後はJGUtil.browserを返す。
3307 */
3308 static getBrowser(): BrowserInfo;
3309 /**
3310 * 画像描画時のアンチエイリアス効果を変更する。
3311 * 通常ドット絵を拡大するとアンチエイリアスによって滲むが、滲ませずにドットを強調して拡大する場合などに利用する。
3312 * 変更後、ゲームはrefreshによって再構築される。
3313 * このメソッドはページに存在するすべてのゲームに影響を及ぼす。将来的には指定されたゲームのみに影響が及ぶよう改修予定
3314 * @param game 対象のゲーム
3315 * @param crispEdges trueにすると転送時にアンチエイリアスをオフにする
3316 */
3317 static setCrispEdges(game: Game, crispEdges: boolean): void;
3318 /**
3319 * 必ず引数selfをthisとして受け取るコールバック関数を生成する。
3320 * このメソッドで生成したコールバックでDOMのaddEventListenerを実行すると、removeEventListenerがしにくくなる点に注意。
3321 * removeEventListenerをする可能性がある場合、createIdProxyの利用を検討した方がよい。
3322 * @param func コールバック関数
3323 * @param self thisとなるオブジェクト
3324 */
3325 static proxy(func: Function, self: any): () => void;
3326 /**
3327 * createIdProxyで生成されたID付きproxyデータ
3328 */
3329 private static idData;
3330 /**
3331 * ID付きのプロキシデータを生成する。
3332 * @param id 一意のID。通常、game.idを指定する
3333 * @param func コールバック関数
3334 * @param self thisとなるオブジェクト
3335 */
3336 static createIdProxy(id: number, func: Function, self: any): () => void;
3337 /**
3338 * 指定のID付きプロキシデータを取得する
3339 * @param id 一意のID。通常、game.idを指定する
3340 * @param func コールバック関数
3341 * @param self thisとなるオブジェクト
3342 */
3343 static getIdProxy(id: number, func: Function, self: any): () => void;
3344 /**
3345 * ID付きプロキシデータを削除する
3346 * @param id 一意のID。通常、game.idを指定する
3347 * @param func コールバック関数
3348 * @param self thisとなるオブジェクト
3349 */
3350 static deleteIdProxy(id: number, func: Function, self: any): void;
3351 /**
3352 * 一意のIDを生成する
3353 */
3354 static generateId(): number;
3355 /**
3356 * 二次元配列のX軸とY軸を入れ替えた結果を返す。
3357 * マトリックスのみのサポートであり、src[0].lengthとsrc[1].lengthが異なる配列はサポートされない。
3358 * src[x][y] == ret[y][x]
3359 * @param src 入力元配列
3360 */
3361 static transpose(src: any[][]): any[][];
3362 }
3363 }
3364 declare module jg {
3365 /**
3366 * 二次ベジェ曲線の座標
3367 */
3368 interface QuadraticPoint extends CommonOffset {
3369 /** 制御点のX座標 */
3370 cp1x: number;
3371 /** 制御点のY座標 */
3372 cp1y: number;
3373 }
3374 /**
3375 * 三次ベジェ曲線の座標
3376 */
3377 interface BezierPoint extends QuadraticPoint {
3378 /** 二つ目の制御点のX座標 */
3379 cp2x: number;
3380 /** 二つ目の制御点のY座標 */
3381 cp2y: number;
3382 }
3383 /**
3384 * 円弧の座標
3385 */
3386 interface ArcPoint extends CommonOffset {
3387 /** 終点X座標 */
3388 x2: number;
3389 /** 終点Y座標 */
3390 y2: number;
3391 /** 半径 */
3392 radius: number;
3393 }
3394 /**
3395 * 線を描画するクラス。
3396 * 一般的な直線から、複雑な図形描画も出来る。
3397 */
3398 class Line extends E {
3399 /** 各種線 */
3400 p: CommonOffset[];
3401 /** 塗りつぶすかどうか */
3402 fill: boolean;
3403 /** 直線を描くかどうか */
3404 stroke: boolean;
3405 /** パスを閉じるかどうか */
3406 closePath: boolean;
3407 /** 描画をせず、クリッピングとして使うかどうか */
3408 clip: boolean;
3409 /**
3410 * コンストラクタ
3411 * @param pos 基準点
3412 * @param line 直線を引く場合、最初の直線座標を入れるこ
3413 * @param color 線の色
3414 * @param width 線の幅
3415 */
3416 constructor(pos: CommonOffset, line?: CommonOffset, color?: string, width?: number);
3417 /**
3418 * クリッピングモードにする、または解除する
3419 * クリッピングモードにした場合、このクラスは直接描画されず、このクラスの後に描画される結果に対してクリッピング処理を行う。
3420 * @param value trueでクリッピングモード、falseで通常
3421 */
3422 setClip(value: boolean): void;
3423 /**
3424 * このオブジェクトのサイズを再計算する。
3425 * 現状あまりうまく動いていない模様。
3426 */
3427 updateSize(): void;
3428 /**
3429 * 線の色を指定する
3430 * @param color 線の色。CSSカラー形式の文字列や、グラデーションやパターンなど
3431 */
3432 setColor(color: any): Line;
3433 /**
3434 * 線の色を取得する
3435 */
3436 getColor(): any;
3437 /**
3438 * 塗りつぶし色を指定する
3439 */
3440 setFillColor(color: any): Line;
3441 /**
3442 * 塗りつぶし色を取得する
3443 * @param color 線の色。CSSカラー形式の文字列や、グラデーションやパターンなど
3444 */
3445 getFillColor(): any;
3446 /**
3447 * 線の幅を指定する
3448 * @param width 線の幅
3449 */
3450 setLineWidth(width: number): Line;
3451 /**
3452 * 線の幅を取得する
3453 */
3454 getLineWidth(): any;
3455 /**
3456 * 線の末端のスタイルをbutt, round, squareいずれかの文字列で指定する
3457 * @param lineCap 線の末端のスタイル
3458 */
3459 setLineCap(lineCap: string): Line;
3460 /**
3461 * 線の末端のスタイルを取得する
3462 */
3463 getLineCap(): any;
3464 /**
3465 * 線の結合方式をbevel, round, miterいずれかの文字列で指定する
3466 * @param lineJoin 線の結合形式
3467 */
3468 setLineJoin(lineJoin: string): Line;
3469 /**
3470 * 線の結合形式を取得する
3471 */
3472 getLineJoin(): any;
3473 /**
3474 * マイター限界比率を指定する
3475 * @param miterLimit マイター限界比率
3476 */
3477 setMiterLimit(miterLimit: number): Line;
3478 /**
3479 * マイター限界比率を取得する
3480 */
3481 getMiterLimit(): any;
3482 /**
3483 * 塗りつぶしに関して必要なパラメータを一括で指定する
3484 * @param fill 塗りつぶしを行うかどうか
3485 * @param color 塗りつぶし色
3486 * @param closePath パスを閉じるかどうか。省略した場合変更しない
3487 * @param stroke 線を描画するかどうか。fillとstrokeがいずれもtrueである場合、線描画と塗りつぶしの両方が行われる。省略した場合変更しない
3488 */
3489 setFill(fill: boolean, color: any, closePath?: boolean, stroke?: boolean): Line;
3490 /**
3491 * 線を追加する
3492 * @param line 数値またはCommonOffsetで指定。数値の場合はX座標
3493 * @param y 数値でY座標を指定。省略する場合、lineはCommonOffsetである必要がある
3494 */
3495 addLine(line: any, y?: number): Line;
3496 /**
3497 * 二次ベジェ曲線を追加
3498 * @param cp CommonOffsetで制御点を指定
3499 * @param p CommonOffsetで終点を指定
3500 */
3501 addQuadraticLine(cp: any, p?: any): Line;
3502 /**
3503 * 三次ベジェ曲線を追加
3504 * @param cp1 CommonOffsetで制御点1を指定
3505 * @param cp2 CommonOffsetで制御点2を指定
3506 * @param p CommonOffsetで終点を指定
3507 */
3508 addBezierLine(cp1: any, cp2?: any, p?: any): Line;
3509 /**
3510 * 曲線を追加
3511 * @param p CommonOffsetで地点1の座標を指定
3512 * @param p2 CommonOffsetで地点2の座標を指定
3513 * @param radius 半径
3514 */
3515 addArc(p: any, p2: any, radius: any): void;
3516 /**
3517 * 線を追加する。
3518 * 見直し予定。
3519 */
3520 add(): any;
3521 /**
3522 * 描画
3523 * @param context 対象の描画コンテキスト
3524 */
3525 draw(context: CanvasRenderingContext2D): void;
3526 }
3527 }
3528 declare module jg {
3529 /**
3530 * エフェクトを生成するクラス
3531 */
3532 class Effect {
3533 /** エフェクト時間 */
3534 static time: number;
3535 /** エフェクトの色 */
3536 static color: string;
3537 /**
3538 * シーンに対するエフェクトを生成し、実行する
3539 * @param game 対象のゲーム
3540 * @param scene1 遷移元シーン
3541 * @param scene2 遷移先シーン
3542 * @param type シーン種別。EffectTypeの数値か、EffectSceneを継承したクラスのインスタンスを指定する
3543 * @param collback
3544 * @param endOldScene trueを指定すると最初に遷移元シーンを終了させる
3545 */
3546 static sceneEffect(game: Game, scene1: Scene, scene2: Scene, type: any, callback: Function, endOldScene?: boolean): void;
3547 /** エフェクトを行うメソッド名 */
3548 method: string;
3549 /** エフェクトメソッドに渡す引数 */
3550 arguments: any[];
3551 /**
3552 * コンストラクタ
3553 * @param method エフェクトメソッド名
3554 * @param args エフェクトメソッドに引き渡す引数
3555 */
3556 constructor(method: string, ...args: any[]);
3557 /**
3558 * エフェクトを実行する
3559 * @param scene エフェクトを実行するためのEffectScene
3560 */
3561 callEffect(scene: EffectScene): void;
3562 }
3563 /**
3564 * シーンに対するEffectを実行するクラス
3565 */
3566 class EffectScene extends Scene {
3567 /** 遷移元シーンのキャプチャ */
3568 sp1: Sprite;
3569 /** 遷移先シーンのキャプチャ */
3570 sp2: Sprite;
3571 /** エフェクト完了後に呼び出されるイベント */
3572 effected: Trigger;
3573 /**
3574 * コンストラクタ
3575 * @param game エフェクト対象ゲーム
3576 * @param scene1 遷移元シーン
3577 * @param scene2 遷移先シーン
3578 */
3579 constructor(game: Game, scene1: Scene, scene2: Scene);
3580 /**
3581 * 現在のシーンの状態をキャプチャする
3582 * @param scene キャプチャ対象シーン
3583 */
3584 captureScene(scene: Scene): Sprite;
3585 /**
3586 * フェードエフェクトをかける
3587 * @param color フェード時の色。指定すると色へフェードアウト->色からフェードインの2段階フェードエフェクトになり、省略するとフェードアウトとフェードインが同時に行われる1段階フェードエフェクトとなる
3588 */
3589 fade(color?: any): void;
3590 /**
3591 * 色付きフェードエフェクトをかける
3592 * @param color フェード色
3593 */
3594 _fadeColor(color: any): void;
3595 /**
3596 * モザイクエフェクトを行う
3597 */
3598 mosaic(): void;
3599 /**
3600 * Blur(滲ませる)エフェクトを行う。非常に重いので注意
3601 */
3602 blur(): void;
3603 /**
3604 * 指定方向にスライドするエフェクトを行う
3605 * @param angle スライド方向
3606 */
3607 slide(angle: Angle): void;
3608 /**
3609 * 指定方向にワイプするエフェクトを行う
3610 * @param angle ワイプする方向
3611 */
3612 wipe(angle: Angle): void;
3613 /**
3614 * 指定方向へのワイプとフェードを組み合わせたエフェクトを行う
3615 * @param angle ワイプする方向
3616 */
3617 wipeFade(angle: Angle): void;
3618 /**
3619 * boxOut
3620 * @param rotate 四角の回転
3621 * @param color
3622 */
3623 boxOut(rotate?: number, color?: any): void;
3624 /**
3625 * boxIn
3626 * @param rotate 四角の回転
3627 * @param color
3628 */
3629 boxIn(rotate?: number, color?: any): void;
3630 /**
3631 * arcOut
3632 * @param color
3633 */
3634 arcOut(color?: any): void;
3635 /**
3636 * arcIn
3637 * @param color
3638 */
3639 arcIn(color?: any): void;
3640 /**
3641 * ユニバーサルエフェクトを行う
3642 * @param image エフェクトのための画像
3643 * @param repeat サイズが合わない場合、trueを指定すると繰り返し、falseを指定すると拡大する
3644 */
3645 universal(image: any, repeat?: boolean): void;
3646 /**
3647 * 遷移元シーンを画像通りのユニバーサルエフェクト、遷移先シーンを画像を反転させたユニバーサルエフェクトとして同時に実行する
3648 * @param image エフェクトのための画像
3649 * @param repeat サイズが合わない場合、trueを指定すると繰り返し、falseを指定すると拡大する
3650 */
3651 universalTwin(image: any, repeat?: boolean): void;
3652 /**
3653 * 遷移元シーンをユニバーサルエフェクトでフェードアウトさせ、その後遷移先シーンをユニバーサルエフェクトでフェードインさせる
3654 * @param image エフェクトのための画像
3655 * @param repeat サイズが合わない場合、trueを指定すると繰り返し、falseを指定すると拡大する
3656 * @param color フェードアウト時の色
3657 */
3658 universalDelay(image: any, repeat?: boolean, color?: any): void;
3659 /**
3660 * 対象からフィルタを取得する。対象がフィルタを持たない場合、空のImageFilter.FilterChainを返す
3661 * @param target フィルタ指定元オブジェクト
3662 */
3663 getFilter(target: any): any;
3664 /**
3665 * シーンのスワップショットの位置を入れ替える
3666 */
3667 swapScene(): void;
3668 }
3669 }
3670 declare module jg {
3671 /**
3672 * 継承前提で作られている基本のウィンドウクラス。
3673 * jgame.jsはUIライブラリではなくシンプルにエンジンのみの提供を目指しているため、本クラスを継承したUIクラスはMessageeWindowクラス以外用意されていないk。
3674 */
3675 class UIWindow extends E {
3676 /** 余白のサイズ */
3677 padding: IRectangle;
3678 /** 背景。変更する場合はsetBgを利用するべき */
3679 bg: E;
3680 /**
3681 * コンストラクタ
3682 * @param width 横幅
3683 * @param height 縦幅
3684 * @param bgImage 背景画像。省略時はdefaultSkinメソッドによるUIWindowが生成される
3685 * @param padding 余白
3686 */
3687 constructor(width: number, height: number, bgImage?: any, padding?: IRectangle);
3688 /**
3689 * 背景要素を返す。
3690 * って実態はthis.entities[0]を返しているけどいいのかこれ?
3691 */
3692 getBg(): E;
3693 /**
3694 * 背景要素を指定する。背景は常に最背面に配置される点に注意。
3695 * @param bg 指定する背景。通常、createBgImageで生成した画像を指定する
3696 */
3697 setBg(bg: E): void;
3698 /**
3699 * 描画要素を基に背景画像を生成する
3700 * @param e 背景の基となる描画要素。余白に合わせた引き伸ばし処理が行われる
3701 * @param srcPadding 余白。省略時はthis.paddingが用いられる
3702 * @param buf 生成に利用するバッファ。省略時は自動生成。フクスウUIを生成する場合には、指定すると若干高速になる
3703 */
3704 createBgImage(e: E, srcPadding?: IRectangle, buf?: BufferedRenderer): Sprite;
3705 /**
3706 * 簡素な見た目のデフォルトのスキンを生成する。
3707 */
3708 defaultSkin(): void;
3709 }
3710 }
3711 declare module jg {
3712 /**
3713 * メッセージウィンドウを表示するクラス。
3714 * UIWindowクラスの継承サンプル、並びにMultilineTextクラスの使用サンプルを兼ねている。
3715 */
3716 class MessageWindow extends UIWindow {
3717 /** 次カーソルの表示実態。本フィールドを直接編集しても次カーソルは変わらないため、次カーソルの表示を変更する場合setNextCursorメソッドを利用する */
3718 _nextCursor: Sprite;
3719 /** 次カーソルの元画像。これに対してcreateSpriteをしてから次カーソルを描画する。変更する場合setNextCursorメソッドを利用するのを推奨 */
3720 nextCursor: E;
3721 /** 現在までのテキスト表示位置 */
3722 scriptOffset: number;
3723 /** 表示するテキスト */
3724 script: string;
3725 /** テキスト表示速度(通常) */
3726 normalSpeed: number;
3727 /** テキスト表示速度(高速) */
3728 fastSpeed: number;
3729 /** 表示が完了した場合に発火されるイベント。パラメータがtrueであればまだ未読のスクリプトが次ページ以降に残っている事を示している */
3730 readed: Trigger;
3731 /** ページ表示が完了したことを示すフラグ */
3732 isReaded: boolean;
3733 /** ページ送りで利用されるクリッピング領域 */
3734 textClip: Shape;
3735 /** 次ページがあることを示すカーソルが出ているかどうか */
3736 hasNextCursor: boolean;
3737 /** テキスト表示用MultilineText */
3738 textArea: MultilineText;
3739 /**
3740 * コンストラクタ
3741 * @param width 横幅
3742 * @param height 縦幅
3743 * @param bgImage 背景画像
3744 * @param padding 上下左右の余白幅
3745 */
3746 constructor(width: number, height: number, bgImage?: any, padding?: IRectangle);
3747 /**
3748 * MultilineTextを設定する。
3749 * 通常、内部的に自動設定されるため、本メソッドを外部から呼び出す必要性は無い
3750 */
3751 setTextArea(textArea: MultilineText): void;
3752 /**
3753 * 次カーソルを取得
3754 */
3755 getNextCursor(): E;
3756 /**
3757 * 次カーソルを設定する
3758 * @param cursor 設定する次カーソル
3759 */
3760 setNextCursor(cursor: E): void;
3761 /**
3762 * テキストを設定する
3763 * @param text テキスト
3764 * @param offset テキストの処理開始オフセット位置
3765 */
3766 setText(text: string, offset?: number): number;
3767 /**
3768 * スクリプトを設定する
3769 * @param script スクリプト
3770 * @param offset スクリプトの処理開始オフセット位置
3771 */
3772 setScript(script: string, offset?: number): number;
3773 /**
3774 * 次カーソルを表示する。既に表示されている場合処理を行わない
3775 */
3776 showNextCursor(): void;
3777 /**
3778 * 次カーソルを削除する。表示されていない場合処理を行わない
3779 */
3780 deleteNextCursor(): void;
3781 /**
3782 * 非表示にする
3783 * @param fade trueにするとフェードアウトアニメーション後非表示にする
3784 */
3785 hide(fade?: boolean): void;
3786 /**
3787 * 表示する
3788 * @param fade trueにするとファー度インアニメーション後表示する
3789 */
3790 show(fade?: boolean): void;
3791 /**
3792 * テキストの表示を開始する
3793 */
3794 showText(): void;
3795 /**
3796 * テキストの表示速度を高速にする
3797 */
3798 fastMode(): void;
3799 /**
3800 * テキストの表示速度を通常速にする
3801 */
3802 normalMode(): void;
3803 /**
3804 * テキストをすべて表示する
3805 */
3806 showAll(): void;
3807 /**
3808 * 次のテキストを表示する
3809 */
3810 next(): boolean;
3811 /**
3812 * 古いテキストをワイプアニメーションで除外する
3813 */
3814 oldWipeOut(time?: number): void;
3815 /**
3816 * 古いテキストをフェードアウトアニメーションで除外する
3817 */
3818 oldFadeOut(time?: number): void;
3819 /**
3820 * テキスト表示完了時のイベントハンドラ
3821 */
3822 onAnimated(): void;
3823 }
3824 }
3825 declare module jg {
3826 /**
3827 * ピクセルデータを直接編集するクラス。
3828 * 現行バージョンでは少し扱いに癖がある
3829 */
3830 class Pixel extends E {
3831 /** 生ピクセルデータ */
3832 imageData: ImageData;
3833 /**
3834 * コンストラクタ
3835 * @param width 横幅
3836 * @param height 縦幅
3837 * @param srcImage 元画像
3838 * @param scale srcImageをwidth, heightの指定に基づいて拡大縮小した上でピクセルデータを生成するかどうか
3839 */
3840 constructor(width: number, height: number, srcImage?: any, scale?: boolean);
3841 /**
3842 * 指定した色で全ピクセルをクリアする
3843 * @param r 赤。省略時は0
3844 * @param g 緑。省略時は0
3845 * @param b 青。省略時は0
3846 * @param a 透明度。省略時は0
3847 */
3848 clear(r?: number, g?: number, b?: number, a?: number): void;
3849 /**
3850 * ピクセルデータをコンテキストに転送する
3851 * @param context 対象の描画コンテキスト
3852 */
3853 draw(context: CanvasRenderingContext2D): void;
3854 }
3855 }
3856 declare module jg {
3857 /**
3858 * window名前空間にjg名前空間の要素を展開する。
3859 * 一般的なjavascriptであれば、本関数実行後、jg.GameはGameとしてアクセスできるようになる。
3860 */
3861 function globalize(): void;
3862 }
3863 declare module jg {
3864 /**
3865 * Mersenne Twisterアルゴリズムによる乱数生成器。
3866 * このクラスがjgame.jsに組み込まれているのは、マルチプラットフォームでの乱数共有化が目的としてあり、本ソース自体もクロスプラットフォーム用Mersenne Twisterを移植したもの。
3867 * 移植元プロジェクト: https://github.com/tsugehara/mt-cross
3868 * 少数の精度の違いがありえるため、nextIntによる整数乱数を主に使うことが推奨されている。
3869 */
3870 class MT {
3871 /** 乱数シード群 */
3872 _mt: number[];
3873 /** シードに対するインデックス */
3874 _index: number;
3875 /**
3876 * コンストラクタ
3877 * @param seed 指定するとシードを指定して乱数生成器を生成する。省略時は自動的に設定される
3878 */
3879 constructor(seed?: number);
3880 /**
3881 * 何やってるのかよく知らない
3882 */
3883 static _mulUint32(a: number, b: number): number;
3884 /**
3885 * シード生成
3886 */
3887 setSeed(seed: any): void;
3888 /**
3889 * 次の乱数値を整数値で受け取る
3890 */
3891 _nextInt(): number;
3892 /**
3893 * 次の乱数値を小数値として受け取る。利用は推奨されない
3894 */
3895 next(): number;
3896 /**
3897 * 次の乱数値を整数値として受け取る
3898 */
3899 nextInt(min: number, sup: number): number;
3900 }
3901 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26