JavaScriptを色々あれこれしようとするがひたすら失敗を繰り返している
| Revision | 31 (tree) |
|---|---|
| Time | 2016-11-28 12:15:33 |
| Author | |
(empty log message)
| @@ -79,6 +79,8 @@ | ||
| 79 | 79 | font-size: small; |
| 80 | 80 | } |
| 81 | 81 | |
| 82 | + | |
| 83 | + | |
| 82 | 84 | /* パレット要素の定義 */ |
| 83 | 85 | .palbg, |
| 84 | 86 | .paltxtcol, |
| @@ -141,3 +143,20 @@ | ||
| 141 | 143 | 0% { background-position:100% 100%} |
| 142 | 144 | 100% {background-position:0% 0%} |
| 143 | 145 | } |
| 146 | + | |
| 147 | + | |
| 148 | + /* 制御用 ******************* */ | |
| 149 | + div.PauseAnimation, | |
| 150 | + img.PauseAnimation { | |
| 151 | + animation: none; | |
| 152 | + } | |
| 153 | + | |
| 154 | + #apparea:target img, | |
| 155 | + #apparea:target div { | |
| 156 | + animation: none; | |
| 157 | + background-color:red; | |
| 158 | + } | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + |
| @@ -20,6 +20,7 @@ | ||
| 20 | 20 | <button type=button class="pal" data-objid="pal" data-palid="3" title="アニメーションを停止します">アニメ停止</button> |
| 21 | 21 | <button type=button class="pal" data-objid="pal" data-palid="4" >button5</button> |
| 22 | 22 | <a href="#" id="save" download="DragDraw.dd" title="DragDraw.ddという名前でダウンロードフォルダに保存します">画像保存</a><br /> |
| 23 | + <a href="#apparea">停止</a> | |
| 23 | 24 | |
| 24 | 25 | <!-- Palette --> |
| 25 | 26 | <style id="stylepalbg"> |
| @@ -180,7 +181,7 @@ | ||
| 180 | 181 | <br /> |
| 181 | 182 | |
| 182 | 183 | <fieldset class="palgroup palgrouphorizon" data-objid="palgroup2" title="動きを設定するパレットです"> |
| 183 | - <legend class="pallegend"> Action Palette </legend> | |
| 184 | + <legend class="pallegend"> Action Palette <span id="btnpauseanim" class="buttonstyle" title="要素の動きを一時的に停止します">Ⅱ</span></legend> | |
| 184 | 185 | <div class="palact palact0" data-objid="palact0" data-palid="0"></div> |
| 185 | 186 | <div class="palact palact1" data-objid="palact1" data-palid="1"></div> |
| 186 | 187 | <div class="palact palact2" data-objid="palact2" data-palid="2"></div> |
| @@ -51,13 +51,14 @@ | ||
| 51 | 51 | num, // 書き換える CSS要素番号 (ele.sheet.cssRules[n] ← このnの値) |
| 52 | 52 | cssstr1, // CSS書き換え前半文字 |
| 53 | 53 | cssstr2, // CSS書き換え後半文字 |
| 54 | - file // 画像ファイルを指している file object | |
| 54 | + file, // 画像ファイルを指している file object | |
| 55 | + cbresult // 処理完了結果callback 引数:true/false ... 処理結果 | |
| 55 | 56 | ) { |
| 56 | 57 | // drop fileの読み込み |
| 57 | 58 | let reader = new FileReader(); |
| 58 | 59 | // Image fileを読み込み (画像の幅・高さは取れない。Binary dataを memory上に読むだけなので) |
| 59 | 60 | reader.readAsDataURL(file); |
| 60 | - reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2); | |
| 61 | + reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2, cbresult); | |
| 61 | 62 | }; |
| 62 | 63 | // Text fileを読み込み、その内容を対象CSSに設定 |
| 63 | 64 | function setTextFileToCSS( |
| @@ -65,20 +66,25 @@ | ||
| 65 | 66 | num, // 書き換える CSS要素番号 (ele.sheet.cssRules[n] ← このnの値) |
| 66 | 67 | cssstr1, // CSS書き換え前半文字 |
| 67 | 68 | cssstr2, // CSS書き換え後半文字 |
| 68 | - file // CSS定義が1つだけ入った Textファイルを指している file object | |
| 69 | + file, // CSS定義が1つだけ入った Textファイルを指している file object | |
| 70 | + cbresult // 処理完了結果callback 引数:true/false ... 処理結果 | |
| 69 | 71 | ) { |
| 70 | 72 | // drop fileの読み込み |
| 71 | 73 | let reader = new FileReader(); |
| 72 | 74 | // Text fileを読み込み |
| 73 | 75 | reader.readAsText(file); |
| 74 | - reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2); | |
| 76 | + reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2, cbresult); | |
| 75 | 77 | }; |
| 76 | -function setFileToCSS( ele, num, cssstr1, cssstr2, evt ){ | |
| 78 | +function setFileToCSS(ele, num, cssstr1, cssstr2, cbresult, evt) { | |
| 77 | 79 | let blob = evt.target.result; |
| 78 | 80 | // blobの適用 |
| 79 | 81 | let csstext = String(cssstr1) + blob + String(cssstr2); |
| 80 | 82 | ele.sheet.deleteRule(num); |
| 81 | 83 | ele.sheet.insertRule(csstext, num); |
| 84 | + | |
| 85 | + if (null != cbresult) { | |
| 86 | + cbresult(true); | |
| 87 | + } | |
| 82 | 88 | }; |
| 83 | 89 | |
| 84 | 90 | // CSSに定義をセット |
| @@ -104,7 +104,14 @@ | ||
| 104 | 104 | } |
| 105 | 105 | } |
| 106 | 106 | |
| 107 | + // 全ての要素に引数 CSS classを toggleでセット | |
| 108 | + toggleClassToAllObj(classname) { | |
| 109 | + for (let i = 0; i < this.ObjIDLen; i++) { | |
| 110 | + this.ObjIDarray[i].DOMobject.classList.toggle(classname); | |
| 111 | + } | |
| 112 | + } | |
| 107 | 113 | |
| 114 | + | |
| 108 | 115 | // Command処理 ---------------------- |
| 109 | 116 | createDispObj(type, rect, opt) { |
| 110 | 117 | this.debuglog("createDispObj"); |
| @@ -66,7 +66,7 @@ | ||
| 66 | 66 | ) { |
| 67 | 67 | let cssstr1 = '.palbg' + id + ' { background-image: url('; |
| 68 | 68 | let cssstr2 = '); background-size: cover; }'; |
| 69 | - setImageFileToCSS(this.stylebg, id, cssstr1, cssstr2, file); | |
| 69 | + setImageFileToCSS(this.stylebg, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpalbg[id], file)); | |
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | // text color ('#000000, rgba(0,0,0,0) など) |
| @@ -76,7 +76,7 @@ | ||
| 76 | 76 | ) { |
| 77 | 77 | let cssstr1 = '.paltxtcol' + id + ' {\ncolor: '; |
| 78 | 78 | let cssstr2 = ';\n}'; |
| 79 | - setTextFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file); | |
| 79 | + setTextFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpaltxtcol[id], file)); | |
| 80 | 80 | }; |
| 81 | 81 | // 指定された画像を font colorとして設定する |
| 82 | 82 | definepaltxtcolImage( |
| @@ -85,8 +85,20 @@ | ||
| 85 | 85 | ) { |
| 86 | 86 | let cssstr1 = '.paltxtcol' + id + ' { background: url('; |
| 87 | 87 | let cssstr2 = '); background-size: contain; color: #fff; -webkit-text-fill-color: transparent; -webkit-background-clip: text; }'; |
| 88 | - setImageFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file); | |
| 88 | + setImageFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpaltxtcol[id], file)); | |
| 89 | 89 | }; |
| 90 | + loadresult(ele, file, result) { | |
| 91 | + if (true == result) { | |
| 92 | + // file名をtooltipにセット | |
| 93 | + let title = file.name.match(/^[\s\S]*\./); | |
| 94 | + ele.title = (null != title) ? title[0] : ''; | |
| 95 | + return; | |
| 96 | + } | |
| 97 | + else { | |
| 98 | + console.error('パレットへの drop file読み込み失敗 \npalette=' + ele.dataset.objid + ', file=' + file.name); | |
| 99 | + return; | |
| 100 | + } | |
| 101 | + } | |
| 90 | 102 | // 指定された Text fileを CSS animation定義として保持する |
| 91 | 103 | // Text fileには下記2つの定義が含まれていること |
| 92 | 104 | // 1. 「animation:」で始まり 「;」で終わる animation定義 |
| @@ -102,7 +114,7 @@ | ||
| 102 | 114 | let reader = new FileReader(); |
| 103 | 115 | // Text fileを読み込み |
| 104 | 116 | reader.readAsText(file); |
| 105 | - reader.onload = function (ele, num, cssstr1, cssstr2, evt) { | |
| 117 | + reader.onload = function (ele, num, cssstr1, cssstr2, filename, evt) { | |
| 106 | 118 | let cssdata = evt.target.result; // 読み込んだ文字列 |
| 107 | 119 | |
| 108 | 120 | // 読み込んだ文字列を 「animation定義」と「keyframe定義」に分割 |
| @@ -120,9 +132,19 @@ | ||
| 120 | 132 | // keyframe定義置き換え |
| 121 | 133 | ele.sheet.deleteRule(defAnimNum + 1); |
| 122 | 134 | ele.sheet.insertRule(cssKeyframe, defAnimNum + 1); |
| 123 | - }.bind(this, this.styleact, id, cssstr1, cssstr2); | |
| 135 | + | |
| 136 | + // file名をtooltipにセット | |
| 137 | + let title = filename.match(/^[\s\S]*\./); | |
| 138 | + this.DOMpalact[num].title = (null != title) ? title[0] : ''; | |
| 139 | + }.bind(this, this.styleact, id, cssstr1, cssstr2, file.name); | |
| 124 | 140 | }; |
| 125 | 141 | |
| 142 | + // Action paletteの全要素に引数 CSS classを toggleでセット | |
| 143 | + toggleClassToActionPalettes(classname) { | |
| 144 | + for (let cnt = 0; cnt < this.DOMpalact.length; cnt++) { | |
| 145 | + this.DOMpalact[cnt].classList.toggle(classname); | |
| 146 | + } | |
| 147 | + } | |
| 126 | 148 | |
| 127 | 149 | |
| 128 | 150 | // 描画関数 --------------------- |
| @@ -30,6 +30,9 @@ | ||
| 30 | 30 | this.DOMobject[cnt].addEventListener('mousedown', this.onMouseDown.bind(this), false); |
| 31 | 31 | this.DOMobject[cnt].addEventListener('mouseup', this.mouseUp.bind(this), false); |
| 32 | 32 | } |
| 33 | + | |
| 34 | + this.DOMpauseanim = document.getElementById('btnpauseanim'); | |
| 35 | + this.DOMpauseanim.addEventListener('click', this.onClickPauseAnimation.bind(this)); | |
| 33 | 36 | } |
| 34 | 37 | |
| 35 | 38 | // 操作関数 ---------------------------- |
| @@ -40,6 +43,8 @@ | ||
| 40 | 43 | let data = this.DOMobject[groupType].innerHTML; |
| 41 | 44 | } |
| 42 | 45 | |
| 46 | + | |
| 47 | + | |
| 43 | 48 | // 描画関数 --------------------- |
| 44 | 49 | |
| 45 | 50 | render() { |
| @@ -104,4 +109,13 @@ | ||
| 104 | 109 | window.appArea.setMouseEventObj(null, null); |
| 105 | 110 | } |
| 106 | 111 | |
| 112 | + | |
| 113 | + // アニメーション停止ボタン押下 | |
| 114 | + onClickPauseAnimation(evt) { | |
| 115 | + // DispObjとPalette要素にPauseAnimation css classを付与する | |
| 116 | + window.ObjIDMgr.toggleClassToAllObj('PauseAnimation'); | |
| 117 | + window.CSSPalette.toggleClassToActionPalettes('PauseAnimation'); | |
| 118 | + | |
| 119 | + evt.target.innerText = ('Ⅱ' == evt.target.innerText) ? '>' : 'Ⅱ'; | |
| 120 | + } | |
| 107 | 121 | } |
| @@ -79,6 +79,8 @@ | ||
| 79 | 79 | font-size: small; |
| 80 | 80 | } |
| 81 | 81 | |
| 82 | + | |
| 83 | + | |
| 82 | 84 | /* パレット要素の定義 */ |
| 83 | 85 | .palbg, |
| 84 | 86 | .paltxtcol, |
| @@ -141,3 +143,20 @@ | ||
| 141 | 143 | 0% { background-position:100% 100%} |
| 142 | 144 | 100% {background-position:0% 0%} |
| 143 | 145 | } |
| 146 | + | |
| 147 | + | |
| 148 | + /* 制御用 ******************* */ | |
| 149 | + div.PauseAnimation, | |
| 150 | + img.PauseAnimation { | |
| 151 | + animation: none; | |
| 152 | + } | |
| 153 | + | |
| 154 | + #apparea:target img, | |
| 155 | + #apparea:target div { | |
| 156 | + animation: none; | |
| 157 | + background-color:red; | |
| 158 | + } | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + |
| @@ -20,6 +20,7 @@ | ||
| 20 | 20 | <button type=button class="pal" data-objid="pal" data-palid="3" title="アニメーションを停止します">アニメ停止</button> |
| 21 | 21 | <button type=button class="pal" data-objid="pal" data-palid="4" >button5</button> |
| 22 | 22 | <a href="#" id="save" download="DragDraw.dd" title="DragDraw.ddという名前でダウンロードフォルダに保存します">画像保存</a><br /> |
| 23 | + <a href="#apparea">停止</a> | |
| 23 | 24 | |
| 24 | 25 | <!-- Palette --> |
| 25 | 26 | <style id="stylepalbg"> |
| @@ -180,7 +181,7 @@ | ||
| 180 | 181 | <br /> |
| 181 | 182 | |
| 182 | 183 | <fieldset class="palgroup palgrouphorizon" data-objid="palgroup2" title="動きを設定するパレットです"> |
| 183 | - <legend class="pallegend"> Action Palette </legend> | |
| 184 | + <legend class="pallegend"> Action Palette <span id="btnpauseanim" class="buttonstyle" title="要素の動きを一時的に停止します">Ⅱ</span></legend> | |
| 184 | 185 | <div class="palact palact0" data-objid="palact0" data-palid="0"></div> |
| 185 | 186 | <div class="palact palact1" data-objid="palact1" data-palid="1"></div> |
| 186 | 187 | <div class="palact palact2" data-objid="palact2" data-palid="2"></div> |
| @@ -51,13 +51,14 @@ | ||
| 51 | 51 | num, // 書き換える CSS要素番号 (ele.sheet.cssRules[n] ← このnの値) |
| 52 | 52 | cssstr1, // CSS書き換え前半文字 |
| 53 | 53 | cssstr2, // CSS書き換え後半文字 |
| 54 | - file // 画像ファイルを指している file object | |
| 54 | + file, // 画像ファイルを指している file object | |
| 55 | + cbresult // 処理完了結果callback 引数:true/false ... 処理結果 | |
| 55 | 56 | ) { |
| 56 | 57 | // drop fileの読み込み |
| 57 | 58 | let reader = new FileReader(); |
| 58 | 59 | // Image fileを読み込み (画像の幅・高さは取れない。Binary dataを memory上に読むだけなので) |
| 59 | 60 | reader.readAsDataURL(file); |
| 60 | - reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2); | |
| 61 | + reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2, cbresult); | |
| 61 | 62 | }; |
| 62 | 63 | // Text fileを読み込み、その内容を対象CSSに設定 |
| 63 | 64 | function setTextFileToCSS( |
| @@ -65,20 +66,25 @@ | ||
| 65 | 66 | num, // 書き換える CSS要素番号 (ele.sheet.cssRules[n] ← このnの値) |
| 66 | 67 | cssstr1, // CSS書き換え前半文字 |
| 67 | 68 | cssstr2, // CSS書き換え後半文字 |
| 68 | - file // CSS定義が1つだけ入った Textファイルを指している file object | |
| 69 | + file, // CSS定義が1つだけ入った Textファイルを指している file object | |
| 70 | + cbresult // 処理完了結果callback 引数:true/false ... 処理結果 | |
| 69 | 71 | ) { |
| 70 | 72 | // drop fileの読み込み |
| 71 | 73 | let reader = new FileReader(); |
| 72 | 74 | // Text fileを読み込み |
| 73 | 75 | reader.readAsText(file); |
| 74 | - reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2); | |
| 76 | + reader.onload = setFileToCSS.bind(null, ele, num, cssstr1, cssstr2, cbresult); | |
| 75 | 77 | }; |
| 76 | -function setFileToCSS( ele, num, cssstr1, cssstr2, evt ){ | |
| 78 | +function setFileToCSS(ele, num, cssstr1, cssstr2, cbresult, evt) { | |
| 77 | 79 | let blob = evt.target.result; |
| 78 | 80 | // blobの適用 |
| 79 | 81 | let csstext = String(cssstr1) + blob + String(cssstr2); |
| 80 | 82 | ele.sheet.deleteRule(num); |
| 81 | 83 | ele.sheet.insertRule(csstext, num); |
| 84 | + | |
| 85 | + if (null != cbresult) { | |
| 86 | + cbresult(true); | |
| 87 | + } | |
| 82 | 88 | }; |
| 83 | 89 | |
| 84 | 90 | // CSSに定義をセット |
| @@ -39,7 +39,7 @@ | ||
| 39 | 39 | let styleaction = document.getElementById('stylepalact'); |
| 40 | 40 | let cssbg = stylebg.sheet.cssText; |
| 41 | 41 | let csstextcol = styletextcol.sheet.cssText; |
| 42 | - let cssaction = getAnimationCssFromElement(styleaction); | |
| 42 | + let cssaction = getAnimationCssFromElement(styleaction); // keyframe情報を取得するため、専用関数になっている | |
| 43 | 43 | |
| 44 | 44 | // 最終出力 |
| 45 | 45 | let savestr = '<style id="stylepalbg">' + cssbg + '</style><style id="stylepaltxtcol">' + csstextcol + '</style><style id="stylepalact">' + cssaction + '</style>' + displayInfo; |
| @@ -104,7 +104,14 @@ | ||
| 104 | 104 | } |
| 105 | 105 | } |
| 106 | 106 | |
| 107 | + // 全ての要素に引数 CSS classを toggleでセット | |
| 108 | + toggleClassToAllObj(classname) { | |
| 109 | + for (let i = 0; i < this.ObjIDLen; i++) { | |
| 110 | + this.ObjIDarray[i].DOMobject.classList.toggle(classname); | |
| 111 | + } | |
| 112 | + } | |
| 107 | 113 | |
| 114 | + | |
| 108 | 115 | // Command処理 ---------------------- |
| 109 | 116 | createDispObj(type, rect, opt) { |
| 110 | 117 | this.debuglog("createDispObj"); |
| @@ -280,14 +280,18 @@ | ||
| 280 | 280 | function onClickPalButton(evt) { |
| 281 | 281 | debuglog('【onClickPalButton' + evt.target.dataset.palid + '】'); |
| 282 | 282 | switch (parseInt(evt.target.dataset.palid)) { |
| 283 | - case 0: | |
| 283 | + case 0: // Delete (Elase) element | |
| 284 | 284 | removeFocusedObject(); |
| 285 | 285 | break; |
| 286 | - case 1: | |
| 286 | + case 1: // Save palette settings | |
| 287 | 287 | let data = window.CSSPalGroup.getPalGroupInfo(window.CSSPalGroup.typeBackground); |
| 288 | 288 | break; |
| 289 | 289 | case 2: |
| 290 | - case 3: | |
| 290 | + case 3: // Pouse animation | |
| 291 | + // DispObjとPalette要素にPauseAnimation css classを付与する | |
| 292 | + window.ObjIDMgr.toggleClassToAllObj('PauseAnimation'); | |
| 293 | + window.CSSPalette.toggleClassToActionPalettes('PauseAnimation'); | |
| 294 | + break; | |
| 291 | 295 | case 4: |
| 292 | 296 | case 5: |
| 293 | 297 | let color = parseInt(evt.target.dataset.value); |
| @@ -66,7 +66,7 @@ | ||
| 66 | 66 | ) { |
| 67 | 67 | let cssstr1 = '.palbg' + id + ' { background-image: url('; |
| 68 | 68 | let cssstr2 = '); background-size: cover; }'; |
| 69 | - setImageFileToCSS(this.stylebg, id, cssstr1, cssstr2, file); | |
| 69 | + setImageFileToCSS(this.stylebg, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpalbg[id], file)); | |
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | // text color ('#000000, rgba(0,0,0,0) など) |
| @@ -76,7 +76,7 @@ | ||
| 76 | 76 | ) { |
| 77 | 77 | let cssstr1 = '.paltxtcol' + id + ' {\ncolor: '; |
| 78 | 78 | let cssstr2 = ';\n}'; |
| 79 | - setTextFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file); | |
| 79 | + setTextFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpaltxtcol[id], file)); | |
| 80 | 80 | }; |
| 81 | 81 | // 指定された画像を font colorとして設定する |
| 82 | 82 | definepaltxtcolImage( |
| @@ -85,8 +85,20 @@ | ||
| 85 | 85 | ) { |
| 86 | 86 | let cssstr1 = '.paltxtcol' + id + ' { background: url('; |
| 87 | 87 | let cssstr2 = '); background-size: contain; color: #fff; -webkit-text-fill-color: transparent; -webkit-background-clip: text; }'; |
| 88 | - setImageFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file); | |
| 88 | + setImageFileToCSS(this.styletxtcol, id, cssstr1, cssstr2, file, this.loadresult.bind(this, this.DOMpaltxtcol[id], file)); | |
| 89 | 89 | }; |
| 90 | + loadresult(ele, file, result) { | |
| 91 | + if (true == result) { | |
| 92 | + // file名をtooltipにセット | |
| 93 | + let title = file.name.match(/^[\s\S]*\./); | |
| 94 | + ele.title = (null != title) ? title[0] : ''; | |
| 95 | + return; | |
| 96 | + } | |
| 97 | + else { | |
| 98 | + console.error('パレットへの drop file読み込み失敗 \npalette=' + ele.dataset.objid + ', file=' + file.name); | |
| 99 | + return; | |
| 100 | + } | |
| 101 | + } | |
| 90 | 102 | // 指定された Text fileを CSS animation定義として保持する |
| 91 | 103 | // Text fileには下記2つの定義が含まれていること |
| 92 | 104 | // 1. 「animation:」で始まり 「;」で終わる animation定義 |
| @@ -102,7 +114,7 @@ | ||
| 102 | 114 | let reader = new FileReader(); |
| 103 | 115 | // Text fileを読み込み |
| 104 | 116 | reader.readAsText(file); |
| 105 | - reader.onload = function (ele, num, cssstr1, cssstr2, evt) { | |
| 117 | + reader.onload = function (ele, num, cssstr1, cssstr2, filename, evt) { | |
| 106 | 118 | let cssdata = evt.target.result; // 読み込んだ文字列 |
| 107 | 119 | |
| 108 | 120 | // 読み込んだ文字列を 「animation定義」と「keyframe定義」に分割 |
| @@ -120,9 +132,19 @@ | ||
| 120 | 132 | // keyframe定義置き換え |
| 121 | 133 | ele.sheet.deleteRule(defAnimNum + 1); |
| 122 | 134 | ele.sheet.insertRule(cssKeyframe, defAnimNum + 1); |
| 123 | - }.bind(this, this.styleact, id, cssstr1, cssstr2); | |
| 135 | + | |
| 136 | + // file名をtooltipにセット | |
| 137 | + let title = filename.match(/^[\s\S]*\./); | |
| 138 | + this.DOMpalact[num].title = (null != title) ? title[0] : ''; | |
| 139 | + }.bind(this, this.styleact, id, cssstr1, cssstr2, file.name); | |
| 124 | 140 | }; |
| 125 | 141 | |
| 142 | + // Action paletteの全要素に引数 CSS classを toggleでセット | |
| 143 | + toggleClassToActionPalettes(classname) { | |
| 144 | + for (let cnt = 0; cnt < this.DOMpalact.length; cnt++) { | |
| 145 | + this.DOMpalact[cnt].classList.toggle(classname); | |
| 146 | + } | |
| 147 | + } | |
| 126 | 148 | |
| 127 | 149 | |
| 128 | 150 | // 描画関数 --------------------- |
| @@ -30,6 +30,9 @@ | ||
| 30 | 30 | this.DOMobject[cnt].addEventListener('mousedown', this.onMouseDown.bind(this), false); |
| 31 | 31 | this.DOMobject[cnt].addEventListener('mouseup', this.mouseUp.bind(this), false); |
| 32 | 32 | } |
| 33 | + | |
| 34 | + this.DOMpauseanim = document.getElementById('btnpauseanim'); | |
| 35 | + this.DOMpauseanim.addEventListener('click', this.onClickPauseAnimation.bind(this)); | |
| 33 | 36 | } |
| 34 | 37 | |
| 35 | 38 | // 操作関数 ---------------------------- |
| @@ -40,6 +43,8 @@ | ||
| 40 | 43 | let data = this.DOMobject[groupType].innerHTML; |
| 41 | 44 | } |
| 42 | 45 | |
| 46 | + | |
| 47 | + | |
| 43 | 48 | // 描画関数 --------------------- |
| 44 | 49 | |
| 45 | 50 | render() { |
| @@ -104,4 +109,13 @@ | ||
| 104 | 109 | window.appArea.setMouseEventObj(null, null); |
| 105 | 110 | } |
| 106 | 111 | |
| 112 | + | |
| 113 | + // アニメーション停止ボタン押下 | |
| 114 | + onClickPauseAnimation(evt) { | |
| 115 | + // DispObjとPalette要素にPauseAnimation css classを付与する | |
| 116 | + window.ObjIDMgr.toggleClassToAllObj('PauseAnimation'); | |
| 117 | + window.CSSPalette.toggleClassToActionPalettes('PauseAnimation'); | |
| 118 | + | |
| 119 | + evt.target.innerText = ('Ⅱ' == evt.target.innerText) ? '>' : 'Ⅱ'; | |
| 120 | + } | |
| 107 | 121 | } |