2018 ソフトウェア設計及び演習用の班Wiki
18::gr01::須藤広平::覚え書き
目次
thisのスコープ
thisは便利なのですが、
addEventListener("--", function(){ …
の…の中でthisを使うとうまく動作してくれないことがあります。
そんなときはaddEventListenerよりも前にvar that = this;と宣言しておいて、addEventListenerの中のfunctionの中ではthisの代わりにthatを使うとうまく動いてくれると思います。一例としてソースコードを下においておきます。
- ソースコード(64 〜 67行目あたり)
rotateの回転の軸
rotateは画像を回転させてくれる非常に便利なメソッドなのですが、画像の左上を軸に回転してしまいます。それが便利なときもあるのですが、自分がコードを書いているときは非常に不便でした。rotateの回転の基準点はspriteのoriginX, originYという値をいじってあげると回転の軸を変えることができます。ただし、拡大・縮小の基準点もこれによって変わってしまうようです。
- ソースコード(1045, 1046行目あたり)
自分のノートパソコン(Windows)でGitを使うには
自分のノートパソコンでGitを使うにはGit for Windowsが必要です。また、atomを自分のノートパソコンにインストールしているのであれば、拡張パッケージであるplatformio-ide-terminalをインストールすることをおすすめします。(インストールしなくてもwindowsであれば、windows power shellからgitコマンドを使うことができます)
統合で苦労した話
自分の班は統合にとても苦労しました。統合の際に、最初に班員で決めておいたほうが良かったなぁ…と思ったことをいくつか書いておこうと思います。参考になれば幸いです。
-
fpsの値
- 自分たちはfpsの値を最初に決め忘れてしまったので、各モジュール担当者ごとにfpsの値が異なり、最後の統合の際に意図しない挙動を起こしたモジュールが多数ありました…
- モジュールとテスト用mainファイルの分割
-
モジュールの内容のみ記述したファイルとテスト用のmainファイルは別々にしたほうが良いと思いました。モジュール単体のみのファイルを用意しておくと、最後の統合の際にhtmlファイルに必要なファイル名を記述するだけで済みます。自分たちの班は最初これをやらなかったために、中間発表の時はひたすら各人のファイルをコピーしてはエラーが出ての繰り返しでした。(最終発表までにはなんとか分割しました…)
- ソースコード置き場(flag.jsがモジュール単体のファイル、flag_test.jsがテスト用のmainファイル、flag_index.htmlがhtmlファイルです。)
-
モジュールの内容のみ記述したファイルとテスト用のmainファイルは別々にしたほうが良いと思いました。モジュール単体のみのファイルを用意しておくと、最後の統合の際にhtmlファイルに必要なファイル名を記述するだけで済みます。自分たちの班は最初これをやらなかったために、中間発表の時はひたすら各人のファイルをコピーしてはエラーが出ての繰り返しでした。(最終発表までにはなんとか分割しました…)
- 使用するキーとそのkeybind
- 使用するキーとそのkeybindに関しては最初に統一しておいたほうが良いと思いました。自分たちの班はcore.keybind(37, "left")と書く人もいれば、core.keybind(37, "Left")などと書く人もいて、最後の統合の際にキーが急に入力を受け付けなくなったりして、混乱しました…core.keybindの" "の中身の書き方は最初に統一しておいたほうが良い気がします…
- 画像ファイルや音声ファイルのパスの指定
- preloadする際には十分に気をつけましょう。これが原因で何度も画像がでない、音声が出ない事態に陥りました。
個人的に参考にさせていただいたサイト様(リンクは外部サイトに飛びます、敬称略)
-
enchant.js関連
-
JsDoc Reference
- enchant.jsのメソッドやプロパティの詳しい説明が書いています。
- Plugins
- enchant.jsのプラグインについて書かれています。便利なものがたくさんあるので見てみると良いかもしれません。
- enchant.jsでゲームを作る
- ソースコードとともに説明が詳しく載っているので最初の頃によくお世話になりました。
- Let's start enchant.js
- enchant.jsの公式サイトにある、使い方の説明です。衝突判定についてなど書かれているので最初に見てみると良いと思います。
- くろの雑記帳
- 地味に思っていた、Label();の中央揃えに関して書いています。どうやら他にも方法があるみたいです。
- ゲームが作れるようになるまでがんばる日記
- moveTo()とmoveBy()について書かれています。強制イベントなどでアニメーション制作したい方にとっては重要かなと思います。
- enchant.jsでのイベントの追加・削除について
- enchant.jsにはaddEventListenerだけでなく、イベントを消去するためのremoveEventListenerも存在します。その使い方についてソースコードとともに詳しく書かれています。
- Tips:クラスを継承する
- enchant.jsの公式サイトです。クラスの作り方、継承の仕方が書いてあります。
-
JsDoc Reference
-
JavaScript関連
-
addEventListener type一覧と各ブラウザ対応
- addEventListenerのtypeについて書かれています。
- フロントエンドBlog
- C言語にはない、連想配列について詳しく書かれています。自分も今回コードを書いていく中で度々連想配列にはお世話になりました。
- 豆になるJS
- 多分今回の授業の中で外部サイトの中では1番見た回数が多いと思います。前の方にも書きましたがこのサイトにはaddEventListenerとthisと引数の関係について書かれています。thisに関して非常に参考になったのでおすすめです。
-
addEventListener type一覧と各ブラウザ対応
-
Git関連
-
サルでもわかるGit入門
- Git関連は講義のサイトの他にここで勉強しました。ここもわかりやすく書いてあると思うのでおすすめです。
-
サルでもわかるGit入門
-
素材関連
-
魔王魂
- SEやBGMでお世話になりました。
- 効果音ラボ
- 主にSEでお世話になりました。
- ポケットサウンド
- 主にSEでお世話になりました。
- DOVA-SYNDROME
- 主にBGMでお世話になりました。非常に沢山の種類があります。trueエンドのエンディングテーマはこちらのサイト様からお借りしました。
- 白螺子屋
- キャラクター画像などでお世話になりました。
- もうひとつキャラクター画像などでお世話になったサイト様がありますが、リンク不可だったので控えておきます…ゲームのエンディングには記載してあるので気になる方はtrueエンドでクレジットを参照してください…
-
魔王魂
memory.enchant.jsについて
最後にmemory.enchant.jsについて書こうと思います。memory.enchant.jsはセーブ機能を提供してくれる非常に嬉しいプラグインです。実際に自分たちの班もゲームに実装しました。セーブ機能を実装してみたい方はぜひ使ってみることをおすすめします。以下に参考にさせていただいたサイト様や難点とその解決法を書いておきます。
-
wise9
- memory.enchant.jsは自分でも使い方を調べたのですが、なかなか見つかりませんでした。その中で唯一見つけたサイトです。memory.enchant.jsについてソースコードとともに詳しく説明も書かれていますので参考にしてみてください。
- ソースコード
- 自分が書いたソースコードも一応載せておきます。参考になれば幸いです。
- memory.enchant.js
-
memory.enchant.jsの本体です。ダウンロードするときは右上あたりにあるRawを押してから、右クリック→名前をつけてページを保存で出来たと思います。ちなみに使うためには他にも必要なプラグインがあります。それとセットで使わないと使えませんので気をつけてください。詳しくは下記のリンク先に書いてあります。
- ソフトウェア設計及び演習(2018年の講義のサイトです)
-
memory.enchant.jsの本体です。ダウンロードするときは右上あたりにあるRawを押してから、右クリック→名前をつけてページを保存で出来たと思います。ちなみに使うためには他にも必要なプラグインがあります。それとセットで使わないと使えませんので気をつけてください。詳しくは下記のリンク先に書いてあります。
- memory.enchant.js(nineleap.enchant.js)を使用して、ゲームをスタートした時に画面に大きな"START"が映ることについて
-
memory.enchant.jsはセーブ機能を提供してくれるため、非常に嬉しいのですが、nineleap.enchant.jsの仕様によって自動的にスタートシーンも生成されてしまいます。これを解決するにはnineleap.enchant.jsの中身をいじる必要があります。
-
ゲームをスタートしたときに"START"が表示されないようにするには、nineleap.enchant.jsの75行目にあるthis.pushScene(this.startScene);というのをコメントアウトすることでゲームスタート時にスタートシーンを表示しないようにすることができます。
ソースコード - 他にもstart.pngを透明な画像にする、などと言った方法もあるようです。
-
ゲームをスタートしたときに"START"が表示されないようにするには、nineleap.enchant.jsの75行目にあるthis.pushScene(this.startScene);というのをコメントアウトすることでゲームスタート時にスタートシーンを表示しないようにすることができます。
-
memory.enchant.jsはセーブ機能を提供してくれるため、非常に嬉しいのですが、nineleap.enchant.jsの仕様によって自動的にスタートシーンも生成されてしまいます。これを解決するにはnineleap.enchant.jsの中身をいじる必要があります。
最終更新日:2018/08/12 17:55:47