-var CharacterClass = function(ownerStage, args)
-{
- //args[imgAry0, ...]初期状態で描画したい画像のファイル名の配列(アニメーションさせる)を指定
- CharacterClass.base.apply(this, arguments);
- //キャラ独自の機能(たとえば攻撃や相手が当たってきたときのあたり判定など)
-
- this.interval = 15;
- this.imageState = -1;
- //-1:画像は無効
- // 0:左右歩行中または左右方向に向いて停止中(方向に関係なし。画像はすべて左向きで用意する。)
- // 1:攻撃アニメーション(一周分表示したら0に戻る)
- this.imageIndex = 0;
- this.imageList = [];
- this.lastImage = null;
- //キャラが向いている向き(0:Left,1:Right,[2:Up,3:Down])
- this.direction = 0;
-
- this.isItemCollector = true;
- this.lastFireTick = 0;
- this.fireTickInterval = 60;
-
- for(var k in args){
- var a = [];
- for(var f in args[k]){
- var img = document.createElement('img');
- img.src = "images/" + args[k][f];
- a.push(img);
- }
- this.imageList.push(a);
- }
- if(this.imageList.length > 0){
- this.imageState = 0;
- }
-
- //初期画像の設定
- if(this.imageList[0] && this.imageList[0].length > 0){
- this.lastImage = this.imageList[0][0];
- }
-}.extend(MovableStageObjectClass, {
- className: "CharacterClass",
- draw: function(x, y){
- MovableStageObjectClass.prototype.draw.apply(this, arguments);
- if(this.lastImage){
- //コンテキスト変換行列を保存
- this.ownerStage.mainContext.save();
- //コンテキスト変換行列を設定
- switch(this.direction){
- case 1:
- //Right
- this.ownerStage.mainContext.transform(-1, 0, 0, 1, x + this.size.x, y);
- break;
- default:
- //Left, Up, Down, OtherState
- this.ownerStage.mainContext.transform(1, 0, 0, 1, x, y);
- break;
- }
- //描画
- this.ownerStage.mainContext.globalAlpha = this.opacity;
- this.ownerStage.mainContext.drawImage(this.lastImage, 0, 0, this.size.x, this.size.y);
- this.ownerStage.mainContext.globalAlpha = 1.0;
- //コンテキスト変換行列を復帰
- this.ownerStage.mainContext.restore();
- }
- },
- tick: function(){
- MovableStageObjectClass.prototype.tick.apply(this, []);
-
- if(this.ownerStage.manager.tickCount % this.interval == 0){
- //インターバル時刻になった
- if(this.imageState != -1){
- if(this.imageList[this.imageState]){
- if(this.imageList[this.imageState].length > 0){
- if(this.imageIndex >= this.imageList[this.imageState].length){
- this.imageIndex = 0;
- if(this.imageState == 1){
- this.imageState = 0;
- }
- }
- this.lastImage = this.imageList[this.imageState][this.imageIndex];
- if(!(this.imageState == 0 && this.movingSpeed.x == 0)){
- //imageState:0の時にspeed == 0のときは画像をアニメしない。それ以外の時はインデックスを進める。
- this.imageIndex ++;
- }
- } else{
- this.lastImage = null;
- }
- } else{
- this.lastImage = null;
- }
- } else{
- this.lastImage = null;
- }
- }
- if(this.movingSpeed.x < 0){
- this.direction = 0;
- } else if(this.movingSpeed.x > 0){
- this.direction = 1;
- }
- },
- fire: function()
- {
- if(this.lastFireTick < this.ownerStage.manager.tickCount - this.fireTickInterval){
- var f = new FireObjectClass(this.ownerStage, [["breadball1.png","breadball2.png","breadball3.png"]]);
- if(this.ownerStage.manager.breadItemWidget)
- {
- var score = this.ownerStage.manager.breadItemWidget.getLastSelectedBreadIndex();
- if(score != -1)
- {
- if(score > 50) score = 50;
- this.touchDamage *= (score / 50);
- f.fire(this);
- this.lastFireTick = this.ownerStage.manager.tickCount;
- }else
- {
- showAlert(this.ownerStage.manager, "武器が選択されていません");
- }
- }
- }
- }
-
-});
-
+var CharacterClass = function(ownerStage, args)\r
+{\r
+ //args[imgAry0, ...]初期状態で描画したい画像のファイル名の配列(アニメーションさせる)を指定\r
+ CharacterClass.base.apply(this, arguments);\r
+ //キャラ独自の機能(たとえば攻撃や相手が当たってきたときのあたり判定など)\r
+ \r
+ this.interval = 15;\r
+ this.imageState = -1;\r
+ //-1:画像は無効\r
+ // 0:左右歩行中または左右方向に向いて停止中(方向に関係なし。画像はすべて左向きで用意する。)\r
+ // 1:攻撃アニメーション(一周分表示したら0に戻る)\r
+ this.imageIndex = 0;\r
+ this.imageList = [];\r
+ this.lastImage = null;\r
+ //キャラが向いている向き(0:Left,1:Right,[2:Up,3:Down])\r
+ this.direction = 0;\r
+ \r
+ this.isItemCollector = true;\r
+ this.lastFireTick = 0;\r
+ this.fireTickInterval = 60;\r
+ \r
+ for(var k in args){\r
+ var a = [];\r
+ for(var f in args[k]){\r
+ var img = document.createElement('img');\r
+ img.src = "images/" + args[k][f];\r
+ a.push(img);\r
+ }\r
+ this.imageList.push(a);\r
+ }\r
+ if(this.imageList.length > 0){\r
+ this.imageState = 0;\r
+ }\r
+ \r
+ //初期画像の設定\r
+ if(this.imageList[0] && this.imageList[0].length > 0){\r
+ this.lastImage = this.imageList[0][0];\r
+ }\r
+}.extend(MovableStageObjectClass, {\r
+ className: "CharacterClass",\r
+ draw: function(x, y){\r
+ MovableStageObjectClass.prototype.draw.apply(this, arguments);\r
+ if(this.lastImage){\r
+ //コンテキスト変換行列を保存\r
+ this.ownerStage.mainContext.save();\r
+ //コンテキスト変換行列を設定\r
+ switch(this.direction){\r
+ case 1:\r
+ //Right\r
+ this.ownerStage.mainContext.transform(-1, 0, 0, 1, x + this.size.x, y);\r
+ break;\r
+ default:\r
+ //Left, Up, Down, OtherState\r
+ this.ownerStage.mainContext.transform(1, 0, 0, 1, x, y);\r
+ break;\r
+ }\r
+ //描画\r
+ this.ownerStage.mainContext.globalAlpha = this.opacity;\r
+ this.ownerStage.mainContext.drawImage(this.lastImage, 0, 0, this.size.x, this.size.y);\r
+ this.ownerStage.mainContext.globalAlpha = 1.0;\r
+ //コンテキスト変換行列を復帰\r
+ this.ownerStage.mainContext.restore();\r
+ }\r
+ },\r
+ tick: function(){\r
+ MovableStageObjectClass.prototype.tick.apply(this, []);\r
+ \r
+ if(this.ownerStage.manager.tickCount % this.interval == 0){\r
+ //インターバル時刻になった\r
+ if(this.imageState != -1){\r
+ if(this.imageList[this.imageState]){\r
+ if(this.imageList[this.imageState].length > 0){\r
+ if(this.imageIndex >= this.imageList[this.imageState].length){\r
+ this.imageIndex = 0;\r
+ if(this.imageState == 1){\r
+ this.imageState = 0;\r
+ }\r
+ }\r
+ this.lastImage = this.imageList[this.imageState][this.imageIndex];\r
+ if(!(this.imageState == 0 && this.movingSpeed.x == 0)){\r
+ //imageState:0の時にspeed == 0のときは画像をアニメしない。それ以外の時はインデックスを進める。\r
+ this.imageIndex ++;\r
+ }\r
+ } else{\r
+ this.lastImage = null;\r
+ }\r
+ } else{\r
+ this.lastImage = null;\r
+ }\r
+ } else{\r
+ this.lastImage = null;\r
+ }\r
+ }\r
+ if(this.movingSpeed.x < 0){\r
+ this.direction = 0;\r
+ } else if(this.movingSpeed.x > 0){\r
+ this.direction = 1;\r
+ }\r
+ },\r
+ fire: function()\r
+ {\r
+ if(this.lastFireTick < this.ownerStage.manager.tickCount - this.fireTickInterval){\r
+ var f = new FireObjectClass(this.ownerStage, [["breadball1.png","breadball2.png","breadball3.png"]]);\r
+ if(this.ownerStage.manager.breadItemWidget)\r
+ {\r
+ var score = this.ownerStage.manager.breadItemWidget.getLastSelectedBreadIndex();\r
+ if(score != -1)\r
+ {\r
+ if(score > 50) score = 50;\r
+ this.touchDamage *= (score / 50);\r
+ f.fire(this);\r
+ this.lastFireTick = this.ownerStage.manager.tickCount;\r
+ }else\r
+ {\r
+ showAlert(this.ownerStage.manager, "武器が選択されていません");\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+});\r
+\r