OSDN Git Service

当たり判定の修正と敵キャラクターを踏んでダメージを与える動作の実装
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / coresubf.js
1
2 function createAudio(name)
3 {
4         //拡張子も含めて指定
5         return new Audio(URL_PCD_Audio + name);
6 }
7
8 function createCanvas(id, width, height, x, y, z, parent)
9 {
10         //識別名idで
11         //width * heightの大きさのCanvasを
12         //(x,y,z)に生成する。
13         //parentには、Canvasタグを包含することになるDOMオブジェクトのidを指定する。
14         var canvas = document.createElement("canvas");
15
16         canvas.id = id;
17         
18         parent.appendChild(canvas);
19
20         canvas.style.position = "absolute";
21         canvas.style.top = y + "px";
22         canvas.style.left = x + "px";
23         canvas.style.zIndex = z;
24
25         canvas.width = width;
26         canvas.height = height;
27
28         return canvas;
29 }
30
31 function createMessageBox(id, width, height, x, y, parent, color, foreColor, z)
32 {
33         if(color == undefined) color = "#000";
34         if(foreColor == undefined) foreColor = "#fff";
35         
36         var base = document.createElement("div");
37         base.style.opacity = "0.7";
38         base.style.top = y + "px";
39         base.style.left = x + "px";
40         base.style.backgroundColor = color;
41         base.style.color = foreColor;
42         base.style.position = "absolute";
43         base.style.border = "1px " + foreColor + " solid";
44         base.style.overflow = "hidden";
45         base.style.fontSize = "32px";
46         base.style.width = width + "px";
47         base.style.height = height + "px";
48         base.style.zIndex = "100";
49         base.id = id;
50         
51         var p = document.createElement("div");
52         p.style.position = "absolute";
53         p.style.padding = "16px";
54         p.style.width = (width - 32) + "px";
55         p.style.bottom = "0";
56         p.style.wordBreak = "break-all";
57         p.className = "messageBoxInside";
58         base.appendChild(p);
59         
60         var ar = document.createElement("div");
61         ar.style.position = "absolute";
62         ar.style.bottom = "0";
63         ar.style.right = "0";
64         ar.style.padding = "4px";
65         //ar.style.width = "24px";
66         //ar.style.height = "16px";
67         ar.innerText = "▼";
68         ar.className = "messageBoxArrow";
69         base.appendChild(ar);
70         
71         parent.appendChild(base);
72         return base;
73 }
74
75 function changeMessageBox(box, message, showArrow)
76 {
77         if(showArrow == undefined) showArrow = false;
78         for(var i = 0; i < box.childNodes.length; i++)
79         {
80                 var element = box.childNodes[i];
81                 if(element.className == "messageBoxInside")
82                 {
83                         element.innerText = message;
84                         //element.style.top = (parseInt(box.style.height.slice(0, box.style.height.length - 2)) - parseInt(element.style.height.slice(0, element.style.height.length - 2))) + "px";     //"px"は削除される
85                         //console.log(box.style.height.slice(0, box.style.height.length - 2) + "  " + element.style.height.slice(0, element.style.height.length - 2));
86                         
87                 }else if(element.className == "messageBoxArrow")
88                 {
89                         element.style.display = (showArrow && mainManager.tickCount % 30 < 15) ? "block" : "none";
90                 }
91         }
92 }
93
94 function createDOMObject(typestr, idstr, parentidstr)
95 {
96         dobj = document.createElement(typestr);
97         parentObj = document.getElementById(parentidstr);
98         
99         dobj.id = idstr;
100         parentObj.appendChild(dobj);
101         
102         for(;;){
103                 if(document.getElementById(idstr)){
104                         break;
105                 }
106         }
107         
108         return dobj;
109 }
110
111 function destroyDOMObjectByID(id)
112 {
113         //識別名idのDOMオブジェクトを破棄する。
114         object = document.getElementById(id);
115         parentObj = object.parentNode;
116
117         parentObj.removeChild(object);
118 }
119
120 function removeObjectFromArray(anArray, anObject)
121 {
122         //anArray中にある全てのanObjectを削除し、空いた部分は前につめる。
123         for(var i = 0; i < anArray.length; i++){
124                 if(anArray[i] == anObject){
125                         anArray.splice(i, 1);
126                         i--;
127                 }
128         }
129 }
130
131 function parseArrayToStringSource(anArray){
132         //戻り値をevalすると等価なオブジェクトを得ることができる。
133         //parseArrayToStringSource({1,"321a","abc",test:["cder","",554]});
134         //parseArrayToStringSource([1,"321a","abc",{a:"cder",0:"",1:554}]);
135         if(!anArray){
136                 return "null";
137         }
138
139         var srcstr = "var t=";
140         
141         srcstr += parseArrayToStringSource_Sub(anArray);
142         
143         srcstr += ";t;";
144         
145         return srcstr;
146 }
147
148 function parseArrayToStringSource_Sub(anArray){
149         if(!anArray){
150                 return "null";
151         }
152
153         var srcstr = "{";
154         
155         for(var k in anArray){
156                 var v = anArray[k];
157                 var t = Object.prototype.toString.call(v);
158                 if(v instanceof Array){
159                         srcstr += k + ":" + parseArrayToStringSource_Sub(v) + ",";
160                 } else if(!isNaN(v) && v.toString().replace(/\s+/g, "").length > 0){
161                         //isNaNだけでは数値判定できないので、文字列化後の空白文字を削除した長さも検査している。
162                         srcstr += k + ":" + v + ",";
163                 } else if(t == "[object String]"){
164                         //文字列として変換
165                         srcstr += k + ":'" + v + "',";
166                 } else if(t == "[object Object]"){
167                         srcstr += k + ":" + parseArrayToStringSource_Sub(v) + ",";
168                 } else{
169                         srcstr += k + ":undefined,";
170                 }
171         }
172
173         if(srcstr.charAt(srcstr.length - 1) == ","){
174                 //最後の余計なカンマを削除
175                 srcstr = srcstr.slice(0, srcstr.length - 1);
176         }
177         srcstr += "}";
178         
179         return srcstr;
180 }
181
182 function isValidResponseText(res)
183 {
184         //phpからのレスポンスにエラーが含まれていないかをチェックする。
185         if(res.indexOf("Warning") == -1){
186                 if(res.indexOf("error") == -1){
187                         return true;
188                 }
189         }
190         alert("サーバースクリプトがエラーを返しました。:" + res);
191         mainManager.stopStage();
192         return false;
193 }