■Implemented ---------------------------------------------------------------------- 2006/03/08 Version 0.1.0 - 【 Architecture 】 Adobe SVG Viewer内でprototype.jsが使用できないことへの対策。 親HTMLにprototype.jsを読み込ませる。 その場合にも、Object.extendが使用できないため、独自に定義を行う。 - 【 Architecture 】 イベントハンドリングアーキテクチャ作成。 - 【 Architecture 】 スクリプトデバッグアーキテクチャ作成。 - 【 Architecture 】 テーブル上のオブジェクトを表すTableObjectモデルを作成。 テーブルオブジェクト Ballを作成。 ---------------------------------------------------------------------- 2006/03/12 Version 0.1.1 - 【 Function 】 Drag&DropによるBallの配置機能(暫定版)を追加。 Drag先に配置可能かの判定は未実装。 - 【 Design 】 画面レイアウト(暫定版) 作成。 - 【 Architecture 】 イベントハンドリングアーキテクチャを変更。 Document全体でのキャプチャをやめ、特定のElementのみ EventListenerを登録するようにした。 ---------------------------------------------------------------------- 2006/03/15 Version 0.1.2 - 【 Architecture 】 Arrayオブジェクトに対しての拡張を追加。 - 【 Architecture 】 TebleBed内かの座標判定処理を追加した。 Adobe SVG ViewrではW3C SVG1.0で規定されているSVGSVGElementの checkEnclosureが実装されていないため、特定の矩形内に 座標が含まれるか判定する方法を自作する必要があった。 - 【 Utility 】 座標関連ユーティリティ作成。 座標、一次方程式、一次不等式を追加。 - 【 Architecture 】 テーブルオブジェクト Cushionを作成。 - 【 Function 】 Drag時にBallをハイライトするようにした。 ---------------------------------------------------------------------- 2006/03/17 Version 0.1.3 - 【 Utility 】 座標関連ユーティリティにベクトル、多角形、円を追加。 - 【 Architecture 】 TebleBed内かの座標判定方法を修正した。 - 【 Function 】 Drag&DropによるBallの配置機能に、配置先が Tebleベッド内か、他のBallと重ならないかの判定を追加した。 ---------------------------------------------------------------------- 2006/03/18 Version 0.1.4 - 【 Architecture 】 Help表示機能を追加。Helpの内容は未実装。 - 【 Architecture 】 Version表示機能を追加。 - 【 Utility 】 複数キーハッシュ MHash 追加。 - 【 BugFix 】 一次方程式での交点の算出に不具合があったのを修正した。 - 【 Utility 】 Wedget(ボタン)作成。 - 【 Architecture 】 イベントハンドリングアーキテクチャを変更。 EventTableの内容を配列ではなくMHashで保持するようにした。 EventTableのIDに正規表現を指定できるようにした。 EventDispatcherに登録されているHandlerをMHashで保持するようにした。 - 【 Utility 】 SVGDocumentから正規表現に一致するIDのNodeを検索する関数を追加。 ---------------------------------------------------------------------- 2006/03/20 Version 0.1.5 - 【 Architecture 】 状態によって画面部品の有効/無効を制御する機能を追加した。 - 【 Architecture 】 ボタン関連のイベントが2回実行されてしまう不具合に対処した。 - 【 Architecture 】 右クリックイベントをハンドルできるようにした。 - 【 Design 】 Prevボタン、Nextボタンを追加した。 - 【 BugFix 】 Ball配置時に他のBallとの衝突判定を修正した。 ---------------------------------------------------------------------- 2006/03/21 Version 0.2.0 - 【 Architecture 】 1回のショットをひとつのLayerオブジェクトにまとめ、切り替えが可能な データ構成に変更した。 - 【 Design 】 Prevボタンを削除し、Shot表示切替ボタンを追加した。 Newボタン、removeボタンを追加した。 Infoボタンを削除し、Clearボタンを追加した。 - 【 BugFix 】 コンソールエリアにあるDrag元のBallがハイライトされない不具合に対処した。 ---------------------------------------------------------------------- 2006/03/22 Version 0.2.1 - 【 Utility 】 未使用のユーティリティを削除。 - 【 Function 】 ショットの新規作成(Newボタン)、削除(Removeボタン)、切り替えボタンを 実装した。 - 【 Architecture 】 テーブルオブジェクト Line、Pocketを作成。 ---------------------------------------------------------------------- 2006/03/23 Version 0.2.2 - 【 Design 】 Ball選択時のハイライトの色を変更した - 【 BugFix 】 Ball配置時に他のBallとの衝突判定を修正した。 - 【 Function 】 ショット描画機能のうち、以下の機能を実装した。 ・Shotボタン押下でショット描画モードへ移行する。 ・ショット描画モード中のマウス移動に対応して、Ballの軌跡を 描画する。 ・Ballと線との接触点を、Ballの移動方向から算出してマウス移動に対応して 描画するようにした。 ・他のBallをクリックすることで、描画対象のBallを変更する。 ・テーブル上でクリックすることにより、描画中のBallの移動先を確定する。 ・ポケットをクリックすることで、描画中のBallのポケット先を確定する。 ・Ballにマウスを当てるとハイライトする。 ・ポケットにマウスを当てるとハイライトする。 ・ショット描画後にBallをDragで移動させると、 描画された線も移動するようした。 ・移動されたBallをDragする際には、移動されたBall同士が重ならないよう 判定するようにした。 --------------------------------------------------------------------- 2006/03/25 Version 0.2.3 - 【 Function 】 ショット描画機能のうち、以下の機能を実装した。 ・テーブル外をクリックした際に、描画中の線と交差するクッションを クッションする点に追加する。 ・テーブル外をクリックした際に、描画中の線と交差するポケットを Ballの移動先に設定する。 ・マウス移動の際に、線がクッションに当たる場合はクッションからの 反射角を計算して補助線を描画する。 以下の機能は、今後実装する予定である。 ・Ballにあたった後の線を描画するときには、分離角の補助線を表示する。 ・現在どのBallの軌跡を描画しているか表示する。 ・描画しているBallを変更できるようにする。 --------------------------------------------------------------------- 2006/03/25 Version 0.3.0 - 【 Release 】 アルファリリース。 --------------------------------------------------------------------- 2006/12/19 Version 0.4.0 - 【 Architecture 】 SVGによる実装から、VMLまたはCanvas要素による描画にアーキテクチャを 変更した。 そのため、ブラウザによって描画方式を切り替えるGraphicsオブジェクトを 導入した。 また、実行環境がAdobe SVG Viewerからブラウザ(IE6またはFirefox1.5)に 切り替わったため、クロスブラウザ対策を行う。 基本はprototype.jsに吸収させる予定。 - 【 Design 】 HTML上で利用するため、ロゴや背景、ボタン、ボール、テーブルなどは すべてPNGファイルとし、IMG要素またはDIVのbackground-imageとして 表示させるようにした。 - 【 Function 】 以下の機能を再実装した。 ・Drag&DropによるBallの配置機能 ・Version表示機能 ・Help表示機能 ・ショット描画機能 - Shotボタン押下でショット描画モードへ移行する。 - ショット描画モード中のマウス移動に対応して、Ballの軌跡を 描画する。 - Ballと線との接触点を、Ballの移動方向から算出してマウス移動に対応して 描画するようにした。 - 他のBallをクリックすることで、描画対象のBallを変更する。 - テーブル上でクリックすることにより、描画中のBallの移動先を確定する。 - ポケットをクリックすることで、描画中のBallのポケット先を確定する。 - Ballにマウスを当てるとハイライトする。 - ポケットにマウスを当てるとハイライトする。 - ショット描画後にBallをDragで移動させると、 描画された線も移動するようした。 - 移動されたBallをDragする際には、移動されたBall同士が重ならないよう 判定するようにした。 - テーブル外をクリックした際に、描画中の線と交差するクッションを クッションする点に追加する。 - テーブル外をクリックした際に、描画中の線と交差するポケットを Ballの移動先に設定する。 - マウス移動の際に、線がクッションに当たる場合はクッションからの 反射角を計算して補助線を描画する。 --------------------------------------------------------------------- 2006/12/22 Version 0.4.1 - 【 Architecture 】 ショットの軌跡をVMLのpolylineではなく、複数のlineで表現するように した。 - 【 Architecture 】 jsファイルをutil,event,modelのカテゴリに分けて分割した。 また、NineStepsUnder.jsから全jsファイルを動的にロードするように した。 - 【 Function 】 直線を選択するとハイライトするようにした。 - 【 BugFix 】 以下の不具合を修正した。 ・ボタンのonmouseoverイベントで画像が切り替わらない。 ・shot描画時に、クッションから離れたら補助線が表示されたままになる。 ・クッションに入ったあとのマウスの動きで線がぶれる。 ・ショット描画中に、一度選択した玉を再度選択できる。 ・移動後の手玉が選択されている状態でshotボタンが有効である。 ・同一要素の同一イベント種別に対して、異なるステータスでイベントハンドラを 追加すると、2回イベント処理が実行されてしまう。 --------------------------------------------------------------------- 2006/12/25 Version 0.4.1 - 【 Architecture 】 画面コンポーネントを作成。 ダイアログ、ドロップダウンリスト、入力フィールド、ボタン。 - 【 Design 】 X座標選択リスト、Y座標選択リスト、ShotPower選択リスト,撞点(縦)選択リスト, 撞点(横)選択リスト、移動量入力フィールド、コメント入力フィールド、 レイヤーNo入力フィールドを画面コンポーネントを利用するようにした。 Newボタン、removeボタンを追加した。 Infoボタンを削除し、Clearボタンを追加した。 - 【 Function 】 ・X座標選択リスト、Y座標選択リストのいづれかを開いていて、オプションにフォーカスが ある間、選択されている座標を示すガイドラインを表示するようにした。 同様に、Setボタンにマウスがあたっている間もガイドラインを表示するようにした。 ・SetボタンでBallをリストで選択したポイントに設定できるようにした。 ・→↑↓→ボタンで指定ピクセルだけ選択したBallを移動できる機能を追加した。 ・Shot描画中にSelectボタンを押すことで描画をキャンセルできるようにした。 ・Deleteボタン、Clearボタンを実装した。 --------------------------------------------------------------------- 2006/12/27 Version 0.5.0 - 【 Function 】 ・Curveの描画機能(Curveボタン、制御線のDrag&Drop)を実装した。 ・Jumpの描画機能(Jumpボタン、制御線と着地点のDrag&Drop)を実装した。 ・NextボタンでShot描画後の配置を作成する機能を追加した。 ・Shot描画中に、どのBallが現在選択されているか表示する機能を追加した。 --------------------------------------------------------------------- 2007/01/10 Version 0.5.1 - 【 Function 】 ・Drag可能なシンプルなウィンドウ部品を作成した。 ・HelpボタンでのHelpウィンドウの表示を実装した。 --------------------------------------------------------------------- 2007/01/10 Version 0.6.0 - 【 Function 】 ・撞点の設定を実装した。 ・Shotの強さの設定を実装した。 ・撞点、強さ、コメントをレイヤー毎に保持するようにした。 - 【 BugFix 】 ・BallをDropした地点がテーブル外だった場合、その後のBall移動の際の 衝突判定で例外が発生していたのを修正した。 --------------------------------------------------------------------- 2007/01/12 Version 0.7.0 - 【 Function 】 ・Infoウィンドウを実装した。 ・表示位置を画面中央に変更した。 ・表示位置からの座標系の変換に対応した。 --------------------------------------------------------------------- 2007/01/12 Version 0.7.1 - 【 Function 】 ・Exportウィンドウを実装した。 ・作成した配置をJSONに変換する機能を実装した。 ---------------------------------------------------------------------- 2007/01/13 Version 0.8.0 - 【 Function 】 ・JSONでの配置情報から画像を生成するCGIを暫定実装した。 ---------------------------------------------------------------------- 2007/01/16 Version 0.8.1 - 【 Function 】 ・画像生成時に、Infoウィンドウの情報と、撞点、強さ、コメントを あわせて出力するようにした。 ・日本語の出力に対応した。 - 【 BugFix 】 以下の不具合を修正した。 ・Shotの描画中に、ポケット付近でマウスをすばやく動かすと例外が 発生する場合に対応した。 ・ポケットをクリックしても、移動後の的球がクリックした地点に 描画されてしまう不具合に対応した。 ---------------------------------------------------------------------- Version 1.0.0 FireFox対応