1 var CharacterClass = function(ownerStage, args)
\r
3 //args[imgAry0, ...]初期状態で描画したい画像のファイル名の配列(アニメーションさせる)を指定
\r
4 CharacterClass.base.apply(this, arguments);
\r
5 //キャラ独自の機能(たとえば攻撃や相手が当たってきたときのあたり判定など)
\r
8 this.imageState = -1;
\r
10 // 0:左右歩行中または左右方向に向いて停止中(方向に関係なし。画像はすべて左向きで用意する。)
\r
11 // 1:攻撃アニメーション(一周分表示したら0に戻る)
\r
12 this.imageIndex = 0;
\r
13 this.imageList = [];
\r
14 this.lastImage = null;
\r
15 //キャラが向いている向き(0:Left,1:Right,[2:Up,3:Down])
\r
18 this.isItemCollector = true;
\r
19 this.lastFireTick = 0;
\r
20 this.fireTickInterval = 60;
\r
24 for(var f in args[k]){
\r
25 var img = document.createElement('img');
\r
26 img.src = "images/" + args[k][f];
\r
29 this.imageList.push(a);
\r
31 if(this.imageList.length > 0){
\r
32 this.imageState = 0;
\r
36 if(this.imageList[0] && this.imageList[0].length > 0){
\r
37 this.lastImage = this.imageList[0][0];
\r
39 }.extend(MovableStageObjectClass, {
\r
40 className: "CharacterClass",
\r
41 draw: function(x, y){
\r
42 MovableStageObjectClass.prototype.draw.apply(this, arguments);
\r
45 this.ownerStage.mainContext.save();
\r
47 switch(this.direction){
\r
50 this.ownerStage.mainContext.transform(-1, 0, 0, 1, x + this.size.x, y);
\r
53 //Left, Up, Down, OtherState
\r
54 this.ownerStage.mainContext.transform(1, 0, 0, 1, x, y);
\r
58 this.ownerStage.mainContext.globalAlpha = this.opacity;
\r
59 this.ownerStage.mainContext.drawImage(this.lastImage, 0, 0, this.size.x, this.size.y);
\r
60 this.ownerStage.mainContext.globalAlpha = 1.0;
\r
62 this.ownerStage.mainContext.restore();
\r
66 MovableStageObjectClass.prototype.tick.apply(this, []);
\r
68 if(this.ownerStage.manager.tickCount % this.interval == 0){
\r
70 if(this.imageState != -1){
\r
71 if(this.imageList[this.imageState]){
\r
72 if(this.imageList[this.imageState].length > 0){
\r
73 if(this.imageIndex >= this.imageList[this.imageState].length){
\r
74 this.imageIndex = 0;
\r
75 if(this.imageState == 1){
\r
76 this.imageState = 0;
\r
79 this.lastImage = this.imageList[this.imageState][this.imageIndex];
\r
80 if(!(this.imageState == 0 && this.movingSpeed.x == 0)){
\r
81 //imageState:0の時にspeed == 0のときは画像をアニメしない。それ以外の時はインデックスを進める。
\r
85 this.lastImage = null;
\r
88 this.lastImage = null;
\r
91 this.lastImage = null;
\r
94 if(this.movingSpeed.x < 0){
\r
96 } else if(this.movingSpeed.x > 0){
\r
102 if(this.lastFireTick < this.ownerStage.manager.tickCount - this.fireTickInterval){
\r
103 var f = new FireObjectClass(this.ownerStage, [["breadball1.png","breadball2.png","breadball3.png"]]);
\r
104 if(this.ownerStage.manager.breadItemWidget)
\r
106 var score = this.ownerStage.manager.breadItemWidget.getLastSelectedBreadIndex();
\r
109 if(score > 50) score = 50;
\r
110 this.touchDamage *= (score / 50);
\r
112 this.lastFireTick = this.ownerStage.manager.tickCount;
\r
115 showAlert(this.ownerStage.manager, "武器が選択されていません");
\r