• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

JavaScriptを色々あれこれしようとするがひたすら失敗を繰り返している


Commit MetaInfo

Revision36 (tree)
Time2016-12-01 20:42:53
Authortakoyaki_umaaaa

Log Message

dropで背景領域にも画像をセットできるように対応

Change Summary

Incremental Difference

--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/css/default.css (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/css/default.css (revision 36)
@@ -57,8 +57,11 @@
5757 margin: 0; padding: 0;
5858 background-color: white;
5959 }
60+ .FrameArea {
6061
62+ }
6163
64+
6265 .DispBase,
6366 .DispObj {
6467 display: inline-block;
--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/Common.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/Common.js (revision 36)
@@ -196,10 +196,28 @@
196196 }
197197 return null;
198198 };
199+function getCssRule(ruleName) {
200+ var ss = document.styleSheets,
201+ rule, i, x;
199202
203+ for (i = 0; i < ss.length; ++i) {
204+ if (ss[i].cssRules) {
205+ // loop through all the rules
200206
207+ for (x =0; x < ss[i].cssRules.length; x++) {
208+ rule = ss[i].cssRules[x];
209+ if (rule.type === window.CSSRule.STYLE_RULE && rule.selectorText === ruleName) {
210+ return rule;
211+ }
212+ }
213+ }
214+ }
215+ return null;
216+};
201217
202218
219+
220+
203221 // elementを起点に classNameを持った要素を遡って検索
204222 // 見つからなければ nullを返す
205223 function findClassNameParent(
--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/DisplayField.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/DisplayField.js (revision 36)
@@ -26,6 +26,22 @@
2626 this.DOMobject.addEventListener('dragstart', this.onDragStart.bind(this), false);
2727 this.DOMobject.addEventListener('dragover', this.onDragover.bind(this), false);
2828 this.DOMobject.addEventListener('drop', this.onDrop.bind(this), false);
29+
30+ let css = getCssRule('#DispField');
31+ if (null == css) {
32+ console.error('キャンバス情報取得失敗 CSS定義が見つからない');
33+ return false;
34+ }
35+ let width = css.cssText.match(/[\s\S]*width ?: *([0-9]+)(px|%);/)[1];
36+ let height = css.cssText.match(/[\s\S]*height ?: *([0-9]+)(px|%);/)[1];
37+ this.x = 0; // position: relativeなのでx,yは0固定
38+ this.y = 0;
39+ if (null == width || null == height) {
40+ console.error('キャンバス情報取得失敗 CSSから幅高さが取れない\ncss=' + css.cssText);
41+ return false;
42+ }
43+ this.width = parseInt(width);
44+ this.height = parseInt(height);
2945 }
3046
3147
--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/apparea.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/apparea.js (revision 36)
@@ -30,6 +30,7 @@
3030
3131
3232 // 操作関数 -----------------------------------
33+/*
3334 getFieldData() {
3435 // 表示情報取得
3536 let data = this.DOMobject.innerHTML;
@@ -76,9 +77,9 @@
7677 this.DOMobject.innerHTML = result;
7778 return true;
7879 }
80+ */
7981
8082
81-
8283 // Mouse eventを拾ったときに通知してほしいときにセット
8384 // 上書きすると前に設定されていた callbackが消えます
8485 // callback: function mouseMove( evt ) move eventの evt.targetは目的のelementでない場合が多いため検索しない
--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/framearea.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/framearea.js (revision 36)
@@ -35,6 +35,7 @@
3535 return false;
3636 }
3737 this.DOMobject = dom;
38+ this.DOMobject.classList.add('FrameArea');
3839 }
3940
4041
@@ -50,6 +51,24 @@
5051 }
5152 }
5253
54+ hitCheck(x, y) {
55+ let ret = false;
56+ let chkx = parseFloat(x);
57+ let chky = parseFloat(y);
58+ // frameareaはサイズを持っていないため親elementから取得
59+ let thisx = window.displayField.x;
60+ let thisy = window.displayField.y;
61+ let thiswidth = window.displayField.width;
62+ let thisheight = window.displayField.height;
5363
64+ if (thisx <= chkx && chkx <= thisx + thiswidth) {
65+ if (thisy <= chky && chky <= thisy + thisheight) {
66+ ret = true;
67+ }
68+ }
5469
70+ return ret;
71+ }
72+
73+
5574 }
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
--- HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/palette.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/bin/x64/Debug/AppX/js/palette.js (revision 36)
@@ -256,6 +256,10 @@
256256 // マウス座標直下にある要素を検索
257257 // (evt.targetは自分を指してしまうため)
258258 let target = window.ObjIDMgr.hitCheck(evt.pageX, evt.pageY);
259+ if (null == target) {
260+ if (window.frameArea.hitCheck(evt.pageX, evt.pageY))
261+ target = window.frameArea;
262+ }
259263
260264 // Drag中 palette elementから target element へ CSS classを追加する
261265 // 同じ種類のCSS class(Text color, BG imgなど)が既にある場合は上書き
--- HtmlDrawApp/HTMLDrawApp/css/default.css (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/css/default.css (revision 36)
@@ -57,8 +57,11 @@
5757 margin: 0; padding: 0;
5858 background-color: white;
5959 }
60+ .FrameArea {
6061
62+ }
6163
64+
6265 .DispBase,
6366 .DispObj {
6467 display: inline-block;
--- HtmlDrawApp/HTMLDrawApp/js/Common.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/Common.js (revision 36)
@@ -196,10 +196,28 @@
196196 }
197197 return null;
198198 };
199+function getCssRule(ruleName) {
200+ var ss = document.styleSheets,
201+ rule, i, x;
199202
203+ for (i = 0; i < ss.length; ++i) {
204+ if (ss[i].cssRules) {
205+ // loop through all the rules
200206
207+ for (x =0; x < ss[i].cssRules.length; x++) {
208+ rule = ss[i].cssRules[x];
209+ if (rule.type === window.CSSRule.STYLE_RULE && rule.selectorText === ruleName) {
210+ return rule;
211+ }
212+ }
213+ }
214+ }
215+ return null;
216+};
201217
202218
219+
220+
203221 // elementを起点に classNameを持った要素を遡って検索
204222 // 見つからなければ nullを返す
205223 function findClassNameParent(
--- HtmlDrawApp/HTMLDrawApp/js/DisplayField.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/DisplayField.js (revision 36)
@@ -26,6 +26,22 @@
2626 this.DOMobject.addEventListener('dragstart', this.onDragStart.bind(this), false);
2727 this.DOMobject.addEventListener('dragover', this.onDragover.bind(this), false);
2828 this.DOMobject.addEventListener('drop', this.onDrop.bind(this), false);
29+
30+ let css = getCssRule('#DispField');
31+ if (null == css) {
32+ console.error('キャンバス情報取得失敗 CSS定義が見つからない');
33+ return false;
34+ }
35+ let width = css.cssText.match(/[\s\S]*width ?: *([0-9]+)(px|%);/)[1];
36+ let height = css.cssText.match(/[\s\S]*height ?: *([0-9]+)(px|%);/)[1];
37+ this.x = 0; // position: relativeなのでx,yは0固定
38+ this.y = 0;
39+ if (null == width || null == height) {
40+ console.error('キャンバス情報取得失敗 CSSから幅高さが取れない\ncss=' + css.cssText);
41+ return false;
42+ }
43+ this.width = parseInt(width);
44+ this.height = parseInt(height);
2945 }
3046
3147
--- HtmlDrawApp/HTMLDrawApp/js/apparea.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/apparea.js (revision 36)
@@ -30,6 +30,7 @@
3030
3131
3232 // 操作関数 -----------------------------------
33+/*
3334 getFieldData() {
3435 // 表示情報取得
3536 let data = this.DOMobject.innerHTML;
@@ -76,9 +77,9 @@
7677 this.DOMobject.innerHTML = result;
7778 return true;
7879 }
80+ */
7981
8082
81-
8283 // Mouse eventを拾ったときに通知してほしいときにセット
8384 // 上書きすると前に設定されていた callbackが消えます
8485 // callback: function mouseMove( evt ) move eventの evt.targetは目的のelementでない場合が多いため検索しない
--- HtmlDrawApp/HTMLDrawApp/js/framearea.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/framearea.js (revision 36)
@@ -35,6 +35,7 @@
3535 return false;
3636 }
3737 this.DOMobject = dom;
38+ this.DOMobject.classList.add('FrameArea');
3839 }
3940
4041
@@ -50,6 +51,24 @@
5051 }
5152 }
5253
54+ hitCheck(x, y) {
55+ let ret = false;
56+ let chkx = parseFloat(x);
57+ let chky = parseFloat(y);
58+ // frameareaはサイズを持っていないため親elementから取得
59+ let thisx = window.displayField.x;
60+ let thisy = window.displayField.y;
61+ let thiswidth = window.displayField.width;
62+ let thisheight = window.displayField.height;
5363
64+ if (thisx <= chkx && chkx <= thisx + thiswidth) {
65+ if (thisy <= chky && chky <= thisy + thisheight) {
66+ ret = true;
67+ }
68+ }
5469
70+ return ret;
71+ }
72+
73+
5574 }
--- HtmlDrawApp/HTMLDrawApp/js/main.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/main.js (revision 36)
@@ -239,7 +239,7 @@
239239 window.ObjIDMgr.clear(); // 表示中の要素を削除 (ObjIDMgr.deletebox()は隠すだけなので注意)
240240 window.frameArea.clear();
241241 // canvas上の要素
242- let data = str.match(/<div id=\"FrameArea\"[\s\S]*/);
242+ let data = str.match(/<div [\s\S]*/);
243243 if (null == data) {
244244 console.error('ファイル読みこみ 失敗 キャンバス情報が取得できません data=' + data);
245245 return;
--- HtmlDrawApp/HTMLDrawApp/js/palette.js (revision 35)
+++ HtmlDrawApp/HTMLDrawApp/js/palette.js (revision 36)
@@ -256,6 +256,10 @@
256256 // マウス座標直下にある要素を検索
257257 // (evt.targetは自分を指してしまうため)
258258 let target = window.ObjIDMgr.hitCheck(evt.pageX, evt.pageY);
259+ if (null == target) {
260+ if (window.frameArea.hitCheck(evt.pageX, evt.pageY))
261+ target = window.frameArea;
262+ }
259263
260264 // Drag中 palette elementから target element へ CSS classを追加する
261265 // 同じ種類のCSS class(Text color, BG imgなど)が既にある場合は上書き