JavaScriptを色々あれこれしようとするがひたすら失敗を繰り返している
| Revision | 17 (tree) |
|---|---|
| Time | 2016-11-16 08:15:45 |
| Author | |
(empty log message)
| @@ -26,6 +26,19 @@ | ||
| 26 | 26 | border:1px solid black; |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | + .csspal { | |
| 30 | + display: inline-block; | |
| 31 | + width: 25px; height: 25px; | |
| 32 | + border: 1px solid black; | |
| 33 | + margin: 10px; | |
| 34 | + } | |
| 35 | + .css1 { | |
| 36 | + background-color:red; | |
| 37 | + } | |
| 38 | + .css2 { | |
| 39 | + background-color:aqua; | |
| 40 | + } | |
| 41 | + | |
| 29 | 42 | .scaler { |
| 30 | 43 | border: 2px solid black; |
| 31 | 44 | border-radius: 50%; |
| @@ -17,12 +17,18 @@ | ||
| 17 | 17 | <button type=button class="pal" data-objid="pal" data-palid="2" data-value="0x0000ff01">button3</button> |
| 18 | 18 | <button type=button class="pal" data-objid="pal" data-palid="3" data-value="0xffffff01">button4</button> |
| 19 | 19 | <button type=button class="pal" data-objid="pal" data-palid="4" data-value="0x00000000">button5</button> |
| 20 | - <a href="#" id="save" download="savefilename.txt">Save</a> | |
| 20 | + <a href="#" id="save" download="savefilename.txt">Save</a><br /> | |
| 21 | + <div class="csspal css1" data-objid="csspal" data-palid="0" data-value="css1"></div> | |
| 22 | + <div class="csspal css2" data-objid="csspal" data-palid="1" data-value="css2"></div> | |
| 23 | + <div class="csspal css3" data-objid="csspal" data-palid="2" data-value="css3"></div> | |
| 24 | + <div class="csspal css4" data-objid="csspal" data-palid="3" data-value="css4"></div> | |
| 25 | + <div class="csspal css5" data-objid="csspal" data-palid="4" data-value="css5"></div> | |
| 21 | 26 | |
| 22 | 27 | <script type="text/javascript" src="js/Common.js"></script> |
| 23 | 28 | <script type="text/javascript" src="js/Queue.js"></script> |
| 24 | 29 | <script type="text/javascript" src="js/CommandObj.js"></script> |
| 25 | 30 | <script type="text/javascript" src="js/UI_parts.js"></script> |
| 31 | + <script type="text/javascript" src="js/palette.js"></script> | |
| 26 | 32 | <script type="text/javascript" src="js/DispObj.js"></script> |
| 27 | 33 | <script type="text/javascript" src="js/ObjIDMgr.js"></script> |
| 28 | 34 | <script type="text/javascript" src="js/ThreadMessage.js"></script> |
| @@ -144,7 +144,7 @@ | ||
| 144 | 144 | this.DOMobject.style.width = this.width.toString() + "px"; |
| 145 | 145 | this.DOMobject.style.height = this.height.toString() + "px"; |
| 146 | 146 | this.DOMobject.style.border = "1px solid black"; // 指定するI/Fが必要 |
| 147 | - this.DOMobject.style.backgroundColor = "#cdcdcd"; | |
| 147 | +// this.DOMobject.style.backgroundColor = "#cdcdcd"; | |
| 148 | 148 | if (null != this.text) this.DOMobject.innerHTML = this.text; |
| 149 | 149 | |
| 150 | 150 | document.getElementById('DispField').appendChild(this.DOMobject); |
| @@ -269,46 +269,32 @@ | ||
| 269 | 269 | let moveX = this.endDragX - this.startDragX; |
| 270 | 270 | let moveY = this.endDragY - this.startDragY; |
| 271 | 271 | |
| 272 | - switch(2){ | |
| 273 | - case 0: | |
| 272 | + switch(1){ | |
| 273 | + case 0: // 領域サイズ変更のみ | |
| 274 | 274 | this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, this.scaleStartWidth + moveX, this.scaleStartHeight + moveY)); |
| 275 | 275 | break; |
| 276 | - case 1: | |
| 276 | + case 1: // 縦倍率に合わせfont sizeも変更 | |
| 277 | 277 | { |
| 278 | 278 | let orgwidth = parseInt(this.clingingPartner.dataset.orgwidth); |
| 279 | 279 | let orgheight = parseInt(this.clingingPartner.dataset.orgheight); |
| 280 | - let scaleX = (orgwidth + moveX) / orgwidth; | |
| 281 | - let scaleY = (orgheight + moveY) / orgheight; | |
| 282 | - | |
| 283 | - this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, scaleX, scaleY)); | |
| 284 | - } | |
| 285 | - break; | |
| 286 | - case 2: | |
| 287 | - { | |
| 288 | - let orgwidth = parseInt(this.clingingPartner.dataset.orgwidth); | |
| 289 | - let orgheight = parseInt(this.clingingPartner.dataset.orgheight); | |
| 290 | - let scaleX = (this.scaleStartWidth + moveX) / orgwidth; | |
| 291 | - let scaleY = (this.scaleStartHeight + moveY) / orgheight; | |
| 280 | + let scaleY = (this.scaleStartHeight + moveY) / orgheight * 100; // ★さらに初期倍率設定値を掛ける必要がある | |
| 292 | 281 | this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, this.scaleStartWidth + moveX, this.scaleStartHeight + moveY, scaleX, scaleY)); |
| 293 | 282 | } |
| 294 | 283 | break; |
| 295 | 284 | } |
| 296 | 285 | } |
| 297 | - renderMouseMoveScale(width, height, scalex, scaley) { | |
| 286 | + renderMouseMoveScale(width, height, scalefont) { | |
| 298 | 287 | this.clingingPartner.style.opacity = 0.4; |
| 299 | 288 | |
| 300 | - switch(2){ | |
| 289 | + switch(1){ | |
| 301 | 290 | case 0: |
| 302 | 291 | this.clingingPartner.style.width = width + "px"; |
| 303 | 292 | this.clingingPartner.style.height = height + "px"; |
| 304 | 293 | break; |
| 305 | 294 | case 1: |
| 306 | - this.clingingPartner.style.transform = 'scaleX(' + width + ') scaleY(' + height + ') rotateZ(' + parseInt(this.clingingPartner.dataset.degree) + 'deg);'; | |
| 307 | - break; | |
| 308 | - case 2: | |
| 309 | 295 | this.clingingPartner.style.width = width + "px"; |
| 310 | 296 | this.clingingPartner.style.height = height + "px"; |
| 311 | - this.clingingPartner.style.fontSize = (scaley * 100) + '%'; | |
| 297 | + this.clingingPartner.style.fontSize = scalefont + '%'; | |
| 312 | 298 | break; |
| 313 | 299 | } |
| 314 | 300 | } |
| @@ -38,6 +38,8 @@ | ||
| 38 | 38 | let savelink = document.getElementById('save'); |
| 39 | 39 | savelink.addEventListener('click', onClickSaveLink, false); |
| 40 | 40 | |
| 41 | + window.CSSPalette = new CSSPalette(); | |
| 42 | + window.CSSPalette.initialize(); | |
| 41 | 43 | |
| 42 | 44 | |
| 43 | 45 | // --- test code ------- |
| @@ -0,0 +1,37 @@ | ||
| 1 | +class CSSPalette { | |
| 2 | + constructor() { | |
| 3 | + this.DOMobject = []; | |
| 4 | + this.draggingDOM = null; | |
| 5 | + } | |
| 6 | + | |
| 7 | + initialize() { | |
| 8 | + this.DOMobject = document.getElementsByClassName('csspal'); | |
| 9 | + for (let cnt = 0; cnt < this.DOMobject.length; cnt++) { | |
| 10 | + this.DOMobject[cnt].addEventListener('mousedown', this.onMouseDown.bind(this), false); | |
| 11 | + } | |
| 12 | + } | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + onMouseDown(evt) { | |
| 19 | + this.draggingDOM = evt.target; | |
| 20 | + let palid = evt.target.dataset.palid; | |
| 21 | + let dragclass = evt.target.dataset.value; | |
| 22 | + | |
| 23 | + // Mouse eventをDisplayFieldからCSSPalに渡してもらうように設定 | |
| 24 | + window.displayField.setMouseEventObj(this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
| 25 | + } | |
| 26 | + mouseMove(evt) { | |
| 27 | + } | |
| 28 | + mouseUp(evt) { | |
| 29 | + // Mouse event callback設定をクリア | |
| 30 | + window.displayField.setMouseEventObj(null, null); | |
| 31 | + | |
| 32 | + let dropele = document.elementFromPoint(evt.pageX, evt.pageY); | |
| 33 | + dropele.classList.remove(); | |
| 34 | + dropele.classList.add(this.draggingDOM.dataset.value); | |
| 35 | + } | |
| 36 | + | |
| 37 | +} // class CSSPalette |
| @@ -26,6 +26,19 @@ | ||
| 26 | 26 | border:1px solid black; |
| 27 | 27 | } |
| 28 | 28 | |
| 29 | + .csspal { | |
| 30 | + display: inline-block; | |
| 31 | + width: 25px; height: 25px; | |
| 32 | + border: 1px solid black; | |
| 33 | + margin: 10px; | |
| 34 | + } | |
| 35 | + .css1 { | |
| 36 | + background-color:red; | |
| 37 | + } | |
| 38 | + .css2 { | |
| 39 | + background-color:aqua; | |
| 40 | + } | |
| 41 | + | |
| 29 | 42 | .scaler { |
| 30 | 43 | border: 2px solid black; |
| 31 | 44 | border-radius: 50%; |
| @@ -17,12 +17,18 @@ | ||
| 17 | 17 | <button type=button class="pal" data-objid="pal" data-palid="2" data-value="0x0000ff01">button3</button> |
| 18 | 18 | <button type=button class="pal" data-objid="pal" data-palid="3" data-value="0xffffff01">button4</button> |
| 19 | 19 | <button type=button class="pal" data-objid="pal" data-palid="4" data-value="0x00000000">button5</button> |
| 20 | - <a href="#" id="save" download="savefilename.txt">Save</a> | |
| 20 | + <a href="#" id="save" download="savefilename.txt">Save</a><br /> | |
| 21 | + <div class="csspal css1" data-objid="csspal" data-palid="0" data-value="css1"></div> | |
| 22 | + <div class="csspal css2" data-objid="csspal" data-palid="1" data-value="css2"></div> | |
| 23 | + <div class="csspal css3" data-objid="csspal" data-palid="2" data-value="css3"></div> | |
| 24 | + <div class="csspal css4" data-objid="csspal" data-palid="3" data-value="css4"></div> | |
| 25 | + <div class="csspal css5" data-objid="csspal" data-palid="4" data-value="css5"></div> | |
| 21 | 26 | |
| 22 | 27 | <script type="text/javascript" src="js/Common.js"></script> |
| 23 | 28 | <script type="text/javascript" src="js/Queue.js"></script> |
| 24 | 29 | <script type="text/javascript" src="js/CommandObj.js"></script> |
| 25 | 30 | <script type="text/javascript" src="js/UI_parts.js"></script> |
| 31 | + <script type="text/javascript" src="js/palette.js"></script> | |
| 26 | 32 | <script type="text/javascript" src="js/DispObj.js"></script> |
| 27 | 33 | <script type="text/javascript" src="js/ObjIDMgr.js"></script> |
| 28 | 34 | <script type="text/javascript" src="js/ThreadMessage.js"></script> |
| @@ -144,7 +144,7 @@ | ||
| 144 | 144 | this.DOMobject.style.width = this.width.toString() + "px"; |
| 145 | 145 | this.DOMobject.style.height = this.height.toString() + "px"; |
| 146 | 146 | this.DOMobject.style.border = "1px solid black"; // 指定するI/Fが必要 |
| 147 | - this.DOMobject.style.backgroundColor = "#cdcdcd"; | |
| 147 | +// this.DOMobject.style.backgroundColor = "#cdcdcd"; | |
| 148 | 148 | if (null != this.text) this.DOMobject.innerHTML = this.text; |
| 149 | 149 | |
| 150 | 150 | document.getElementById('DispField').appendChild(this.DOMobject); |
| @@ -269,46 +269,32 @@ | ||
| 269 | 269 | let moveX = this.endDragX - this.startDragX; |
| 270 | 270 | let moveY = this.endDragY - this.startDragY; |
| 271 | 271 | |
| 272 | - switch(2){ | |
| 273 | - case 0: | |
| 272 | + switch(1){ | |
| 273 | + case 0: // 領域サイズ変更のみ | |
| 274 | 274 | this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, this.scaleStartWidth + moveX, this.scaleStartHeight + moveY)); |
| 275 | 275 | break; |
| 276 | - case 1: | |
| 276 | + case 1: // 縦倍率に合わせfont sizeも変更 | |
| 277 | 277 | { |
| 278 | 278 | let orgwidth = parseInt(this.clingingPartner.dataset.orgwidth); |
| 279 | 279 | let orgheight = parseInt(this.clingingPartner.dataset.orgheight); |
| 280 | - let scaleX = (orgwidth + moveX) / orgwidth; | |
| 281 | - let scaleY = (orgheight + moveY) / orgheight; | |
| 282 | - | |
| 283 | - this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, scaleX, scaleY)); | |
| 284 | - } | |
| 285 | - break; | |
| 286 | - case 2: | |
| 287 | - { | |
| 288 | - let orgwidth = parseInt(this.clingingPartner.dataset.orgwidth); | |
| 289 | - let orgheight = parseInt(this.clingingPartner.dataset.orgheight); | |
| 290 | - let scaleX = (this.scaleStartWidth + moveX) / orgwidth; | |
| 291 | - let scaleY = (this.scaleStartHeight + moveY) / orgheight; | |
| 280 | + let scaleY = (this.scaleStartHeight + moveY) / orgheight * 100; // ★さらに初期倍率設定値を掛ける必要がある | |
| 292 | 281 | this.renderFunc.enqueue(this.renderMouseMoveScale.bind(this, this.scaleStartWidth + moveX, this.scaleStartHeight + moveY, scaleX, scaleY)); |
| 293 | 282 | } |
| 294 | 283 | break; |
| 295 | 284 | } |
| 296 | 285 | } |
| 297 | - renderMouseMoveScale(width, height, scalex, scaley) { | |
| 286 | + renderMouseMoveScale(width, height, scalefont) { | |
| 298 | 287 | this.clingingPartner.style.opacity = 0.4; |
| 299 | 288 | |
| 300 | - switch(2){ | |
| 289 | + switch(1){ | |
| 301 | 290 | case 0: |
| 302 | 291 | this.clingingPartner.style.width = width + "px"; |
| 303 | 292 | this.clingingPartner.style.height = height + "px"; |
| 304 | 293 | break; |
| 305 | 294 | case 1: |
| 306 | - this.clingingPartner.style.transform = 'scaleX(' + width + ') scaleY(' + height + ') rotateZ(' + parseInt(this.clingingPartner.dataset.degree) + 'deg);'; | |
| 307 | - break; | |
| 308 | - case 2: | |
| 309 | 295 | this.clingingPartner.style.width = width + "px"; |
| 310 | 296 | this.clingingPartner.style.height = height + "px"; |
| 311 | - this.clingingPartner.style.fontSize = (scaley * 100) + '%'; | |
| 297 | + this.clingingPartner.style.fontSize = scalefont + '%'; | |
| 312 | 298 | break; |
| 313 | 299 | } |
| 314 | 300 | } |
| @@ -38,6 +38,8 @@ | ||
| 38 | 38 | let savelink = document.getElementById('save'); |
| 39 | 39 | savelink.addEventListener('click', onClickSaveLink, false); |
| 40 | 40 | |
| 41 | + window.CSSPalette = new CSSPalette(); | |
| 42 | + window.CSSPalette.initialize(); | |
| 41 | 43 | |
| 42 | 44 | |
| 43 | 45 | // --- test code ------- |
| @@ -0,0 +1,37 @@ | ||
| 1 | +class CSSPalette { | |
| 2 | + constructor() { | |
| 3 | + this.DOMobject = []; | |
| 4 | + this.draggingDOM = null; | |
| 5 | + } | |
| 6 | + | |
| 7 | + initialize() { | |
| 8 | + this.DOMobject = document.getElementsByClassName('csspal'); | |
| 9 | + for (let cnt = 0; cnt < this.DOMobject.length; cnt++) { | |
| 10 | + this.DOMobject[cnt].addEventListener('mousedown', this.onMouseDown.bind(this), false); | |
| 11 | + } | |
| 12 | + } | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + onMouseDown(evt) { | |
| 19 | + this.draggingDOM = evt.target; | |
| 20 | + let palid = evt.target.dataset.palid; | |
| 21 | + let dragclass = evt.target.dataset.value; | |
| 22 | + | |
| 23 | + // Mouse eventをDisplayFieldからCSSPalに渡してもらうように設定 | |
| 24 | + window.displayField.setMouseEventObj(this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
| 25 | + } | |
| 26 | + mouseMove(evt) { | |
| 27 | + } | |
| 28 | + mouseUp(evt) { | |
| 29 | + // Mouse event callback設定をクリア | |
| 30 | + window.displayField.setMouseEventObj(null, null); | |
| 31 | + | |
| 32 | + let dropele = document.elementFromPoint(evt.pageX, evt.pageY); | |
| 33 | + dropele.classList.remove(); | |
| 34 | + dropele.classList.add(this.draggingDOM.dataset.value); | |
| 35 | + } | |
| 36 | + | |
| 37 | +} // class CSSPalette |