JavaScriptを色々あれこれしようとするがひたすら失敗を繰り返している
リビジョン | 51 (tree) |
---|---|
日時 | 2016-12-14 23:35:50 |
作者 | ![]() |
(メッセージはありません)
@@ -188,16 +188,28 @@ | ||
188 | 188 | border: 1px solid rgba(0,0,0,0.2); |
189 | 189 | background-color: rgba(27, 158, 131, 0.6); |
190 | 190 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
191 | + /* ********************** */ | |
192 | + position: relative; | |
193 | + width: 60px; height: 60px; | |
194 | + margin: 7px 7px; padding: 0; | |
191 | 195 | } |
192 | 196 | .paltxtcol { |
193 | 197 | border: 1px solid rgba(0,0,0,0.2); |
194 | 198 | background-color: rgba(154,145,140,0.6); |
195 | 199 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
200 | + /* ********************** */ | |
201 | + position: relative; | |
202 | + width: 60px; height: 60px; | |
203 | + margin: 7px 7px; padding: 0; | |
196 | 204 | } |
197 | 205 | .palact { |
198 | 206 | border: 1px solid rgba(0,0,0,0.2); |
199 | 207 | background-color: rgba(156, 165, 55, 0.6); |
200 | 208 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
209 | + /* ********************** */ | |
210 | + position: relative; | |
211 | + width: 60px; height: 60px; | |
212 | + margin: 7px 7px; padding: 0; | |
201 | 213 | } |
202 | 214 | .palset { |
203 | 215 | border: 1px solid rgba(0,0,0,0.2); |
@@ -155,43 +155,52 @@ | ||
155 | 155 | } |
156 | 156 | </style> |
157 | 157 | |
158 | - <fieldset class="palgroup palgroup0" data-objid="palgroup0" title="背景の色や画像を設定するパレットです"> | |
158 | + <fieldset class="palgroup palgroup0" data-objid="palgroup0" style="width:400px; height:130px;" title="背景の色や画像を設定するパレットです"> | |
159 | 159 | <legend class="pallegend"> Background Palette </legend> |
160 | 160 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
161 | 161 | <span class="paldesc1">背景</span><span class="paldesc2">色 </span> |
162 | 162 | </div> |
163 | - <div class="palbg palbg0" data-objid="palbg0" data-palid="0"></div> | |
164 | - <div class="palbg palbg1" data-objid="palbg1" data-palid="1"></div> | |
165 | - <div class="palbg palbg2" data-objid="palbg2" data-palid="2"></div> | |
166 | - <div class="palbg palbg3" data-objid="palbg3" data-palid="3"></div> | |
167 | - <div class="palbg palbg4" data-objid="palbg4" data-palid="4"></div> | |
163 | + <ul class="palflex"> | |
164 | + <li class="palbg palbg0" data-objid="palbg0" data-palid="0"></li> | |
165 | + <li class="palbg palbg1" data-objid="palbg1" data-palid="1"></li> | |
166 | + <li class="palbg palbg2" data-objid="palbg2" data-palid="2"></li> | |
167 | + <li class="palbg palbg3" data-objid="palbg3" data-palid="3"></li> | |
168 | + <li class="palbg palbg4" data-objid="palbg4" data-palid="4"></li> | |
169 | + </ul> | |
170 | + <div class="palsize"></div> | |
168 | 171 | </fieldset> |
169 | 172 | <br /> |
170 | 173 | |
171 | - <fieldset class="palgroup palgroup1" data-objid="palgroup1" title="テキストの色を設定するパレットです"> | |
174 | + <fieldset class="palgroup palgroup1" data-objid="palgroup1" style="width:400px; height:130px;" title="テキストの色を設定するパレットです"> | |
172 | 175 | <legend class="pallegend"> Style Palette </legend> |
173 | 176 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
174 | 177 | <span class="paldesc1">外観</span><span class="paldesc2">見た</span> |
175 | 178 | </div> |
176 | - <div class="paltxtcol paltxtcol0" data-objid="paltxtcol0" data-palid="0"></div> | |
177 | - <div class="paltxtcol paltxtcol1" data-objid="paltxtcol1" data-palid="1"></div> | |
178 | - <div class="paltxtcol paltxtcol2" data-objid="paltxtcol2" data-palid="2"></div> | |
179 | - <div class="paltxtcol paltxtcol3" data-objid="paltxtcol3" data-palid="3"></div> | |
180 | - <div class="paltxtcol paltxtcol4" data-objid="paltxtcol4" data-palid="4"></div> | |
179 | + <ul class="palflex"> | |
180 | + <li class="paltxtcol paltxtcol0" data-objid="paltxtcol0" data-palid="0"></li> | |
181 | + <li class="paltxtcol paltxtcol1" data-objid="paltxtcol1" data-palid="1"></li> | |
182 | + <li class="paltxtcol paltxtcol2" data-objid="paltxtcol2" data-palid="2"></li> | |
183 | + <li class="paltxtcol paltxtcol3" data-objid="paltxtcol3" data-palid="3"></li> | |
184 | + <li class="paltxtcol paltxtcol4" data-objid="paltxtcol4" data-palid="4"></li> | |
185 | + </ul> | |
186 | + <div class="palsize"></div> | |
181 | 187 | </fieldset> |
182 | 188 | |
183 | 189 | <br /> |
184 | 190 | |
185 | - <fieldset class="palgroup palgroup2" data-objid="palgroup2" title="動きを設定するパレットです"> | |
191 | + <fieldset class="palgroup palgroup2" data-objid="palgroup2" style="width:400px; height:130px;" title="動きを設定するパレットです"> | |
186 | 192 | <legend class="pallegend"> Action Palette </legend> |
187 | 193 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
188 | 194 | <span class="paldesc1">動き</span><span class="paldesc2">流れ</span> |
189 | 195 | </div> |
190 | - <div class="palact palact0" data-objid="palact0" data-palid="0"></div> | |
191 | - <div class="palact palact1" data-objid="palact1" data-palid="1"></div> | |
192 | - <div class="palact palact2" data-objid="palact2" data-palid="2"></div> | |
193 | - <div class="palact palact3" data-objid="palact3" data-palid="3"></div> | |
194 | - <div class="palact palact4" data-objid="palact4" data-palid="4"></div> | |
196 | + <ul class="palflex"> | |
197 | + <li class="palact palact0" data-objid="palact0" data-palid="0"></li> | |
198 | + <li class="palact palact1" data-objid="palact1" data-palid="1"></li> | |
199 | + <li class="palact palact2" data-objid="palact2" data-palid="2"></li> | |
200 | + <li class="palact palact3" data-objid="palact3" data-palid="3"></li> | |
201 | + <li class="palact palact4" data-objid="palact4" data-palid="4"></li> | |
202 | + </ul> | |
203 | + <div class="palsize"></div> | |
195 | 204 | </fieldset> |
196 | 205 | |
197 | 206 | <fieldset class="palgroup palgroup3" data-objid="palgroup3" style="width:400px; height:130px;" title="設定を変更するパレットです"> |
@@ -4,10 +4,8 @@ | ||
4 | 4 | class appArea { |
5 | 5 | constructor(dom) { |
6 | 6 | this.DOMobject = dom; |
7 | - this.mouseMoveFunc = null; | |
8 | - this.mouseUpFunc = null; | |
9 | - this.touchMoveFunc = null; | |
10 | - this.touchEndFunc = null; | |
7 | + | |
8 | + this.clearCallEventObj(); | |
11 | 9 | } |
12 | 10 | // 保存ファイルから編集エリア内容 (DispFieldの divとそこに連なるelement) を |
13 | 11 | // 取得するための正規表現object取得 |
@@ -112,6 +110,26 @@ | ||
112 | 110 | this.mouseMoveFunc = mouseMove; |
113 | 111 | this.mouseUpFunc = mouseUp; |
114 | 112 | } |
113 | + setInputEventObj( | |
114 | + strclass, // End event callback 第2引数 targetとして返してほしいelementが持つ css class名 | |
115 | + funcMove, // Move eventで呼んでほしい関数 or null | |
116 | + funcEnd // End eventで呼んでほしい関数 or null | |
117 | + ) { | |
118 | + this.debuglog('setInputEventObj strclass=' + strclass + ', callbackMove=' + ((null != funcMove) ? funcMove.name : 'null') + ', callbackUp=' + ((null != funcEnd) ? funcEnd.name : 'null')); | |
119 | + | |
120 | + // Callbackを上書きしてしまう場合はエラー出力し、ひとまず処理を継続 | |
121 | + if (null != funcMove || null != funcEnd) { | |
122 | + if (null != this.mouseMoveFunc || null != this.mouseUpFunc) { | |
123 | + console.error('入力イベント callback設定上書き \n\ | |
124 | +Before strclass=' + this.strclass + 'callbackMove=' + (this.inputMoveFunc ? this.inputMoveFunc.name : 'null') + ', callbackUp=' + (this.inputEndFunc ? this.inputEndFunc.name : 'null') + '\n\ | |
125 | +After strclass=' + strclass + 'callbackMove=' + ((null != funcMove) ? funcMove.name : 'null') + ', callbackUp=' + ((null != funcEnd) ? funcEnd.name : 'null')); | |
126 | + } | |
127 | + } | |
128 | + | |
129 | + this.strclass = strclass; | |
130 | + this.inputMoveFunc = funcMove; | |
131 | + this.inputEndFunc = funcEnd; | |
132 | + } | |
115 | 133 | // Touch I/F 用 |
116 | 134 | // 最初のtouch objectのみを返す (そのため mouse I/Fと同じように扱える) |
117 | 135 | setSingleTouchEventObj( |
@@ -143,6 +161,8 @@ | ||
143 | 161 | this.mouseUpFunc = null; |
144 | 162 | this.touchMoveFunc = null; |
145 | 163 | this.touchEndFunc = null; |
164 | + this.inputMoveFunc = null; | |
165 | + this.inputEndFunc = null; | |
146 | 166 | } |
147 | 167 | // Event handler ------------------- |
148 | 168 |
@@ -159,11 +179,17 @@ | ||
159 | 179 | if (null != this.mouseMoveFunc) { |
160 | 180 | this.mouseMoveFunc(evt); |
161 | 181 | } |
182 | + if (null != this.inputMoveFunc) { | |
183 | + this.inputMoveFunc(evt); | |
184 | + } | |
162 | 185 | } |
163 | 186 | onTouchMove(evt){ |
164 | 187 | if (null != this.touchMoveFunc) { |
165 | 188 | this.touchMoveFunc(evt.targetTouches[0], evt); |
166 | 189 | } |
190 | + if (null != this.inputMoveFunc) { | |
191 | + this.inputMoveFunc(evt); | |
192 | + } | |
167 | 193 | } |
168 | 194 | |
169 | 195 | // ドロップ処理 |
@@ -178,6 +204,9 @@ | ||
178 | 204 | if (null != this.mouseUpFunc) { |
179 | 205 | this.mouseUpFunc(evt, e); |
180 | 206 | } |
207 | + if (null != this.inputEndFunc) { | |
208 | + this.inputEndFunc(evt, e); | |
209 | + } | |
181 | 210 | } |
182 | 211 | onTouchEnd(evt){ |
183 | 212 | this.debuglog('タッチエンド onTouchEnd() findClass=' + this.strclass + ', callback move=' + (this.touchMoveFunc ? this.touchMoveFunc.name : 'null') + ', End=' + (this.touchEndFunc ? this.touchEndFunc.name : 'null')); |
@@ -190,6 +219,9 @@ | ||
190 | 219 | if (null != this.touchEndFunc) { |
191 | 220 | this.touchEndFunc(evt.changedTouches[0], e, evt); |
192 | 221 | } |
222 | + if (null != this.inputEndFunc) { | |
223 | + this.inputEndFunc(evt, e); | |
224 | + } | |
193 | 225 | } |
194 | 226 | |
195 | 227 |
@@ -9,7 +9,7 @@ | ||
9 | 9 | // パレットのCSS機能ボタンを押したときに実行する機能を提供する |
10 | 10 | // (保持中CSS class nameを対象Elementに付加, 削除) |
11 | 11 | // (Button instanceが自分の機能を意識しないようにするためのclass) |
12 | -class PaletteCSS { | |
12 | +class PaletteApplyCSS { | |
13 | 13 | constructor() { |
14 | 14 | this.paletteRule = null; |
15 | 15 | this.dataScheme = null; |
@@ -91,12 +91,12 @@ | ||
91 | 91 | getDescription() { |
92 | 92 | return this.description; |
93 | 93 | } |
94 | -} PaletteCSS | |
94 | +} | |
95 | 95 | |
96 | 96 | // パレットのFunctionボタンを押したときに実行する機能を提供する |
97 | 97 | class PaletteFunction { |
98 | 98 | constructor() { |
99 | - this.paletteFunction = null; | |
99 | + this.palettePressFunction = null; | |
100 | 100 | this.dataScheme = null; |
101 | 101 | this.description = null; |
102 | 102 | this.replaceObject = null; |
@@ -117,25 +117,25 @@ | ||
117 | 117 | // 登録するとき、必要に応じてthisやargをbindすること |
118 | 118 | |
119 | 119 | registerFunction(func) { |
120 | - if (null != this.paletteFunction) { | |
121 | - console.error('パレット機能 上書き登録\n以前の機能 = ' + this.paletteFunction.name + ', 今回の機能 = ' + func.name); | |
120 | + if (null != this.palettePressFunction) { | |
121 | + console.error('パレット機能 上書き登録\n以前の機能 = ' + this.palettePressFunction.name + ', 今回の機能 = ' + func.name); | |
122 | 122 | // ひとまず処理継続 |
123 | 123 | } |
124 | - this.paletteFunction = func; | |
124 | + this.palettePressFunction = func; | |
125 | 125 | return true; |
126 | 126 | } |
127 | 127 | removeFunction() { |
128 | - this.paletteFunction = null; | |
128 | + this.palettePressFunction = null; | |
129 | 129 | } |
130 | 130 | getFunction() { |
131 | - return this.paletteFunction; | |
131 | + return this.palettePressFunction; | |
132 | 132 | } |
133 | 133 | executeFunction() { |
134 | - if (null == this.paletteFunction) { | |
134 | + if (null == this.palettePressFunction) { | |
135 | 135 | console.error('パレット機能登録前に呼び出そうとした'); |
136 | 136 | return false; |
137 | 137 | } |
138 | - return this.paletteFunction(); | |
138 | + return this.palettePressFunction(); | |
139 | 139 | } |
140 | 140 | |
141 | 141 | // executeFunction実行後に PaletteFunction の Instance を入れ替える設定 |
@@ -181,86 +181,86 @@ | ||
181 | 181 | // パレット機能定義 Class と 表示定義 Class を繋ぐ Class。即時実行。 |
182 | 182 | // 表示定義 Class 寄りの存在 (画面仕様に影響される処理内容なので) |
183 | 183 | var paletteFunctionObjects = (function () { |
184 | - let paletteFunction = []; | |
184 | + let palettePressFunction =[]; | |
185 | 185 | |
186 | 186 | var defineFunctions = function () { |
187 | 187 | let cnt = 0; |
188 | 188 | // 設定パレット非表示設定 |
189 | - paletteFunction[cnt] = new PaletteFunction(); | |
190 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setShowHideSettingPalette.bind(this, false)); | |
191 | - paletteFunction[cnt].registerDescription("設定パレット (このパレット) を非表示にします。表示させたい場合は設定画面から表示設定を変更できます。"); | |
192 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
189 | + palettePressFunction[cnt] = new PaletteFunction(); | |
190 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setShowHideSettingPalette.bind(this, false)); | |
191 | + palettePressFunction[cnt].registerDescription("設定パレット (このパレット) を非表示にします。表示させたい場合は設定画面から表示設定を変更できます。"); | |
192 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
193 | 193 | cnt++; |
194 | 194 | // 選択要素削除 |
195 | - paletteFunction[cnt] = new PaletteFunction(); | |
196 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.removeFocusedObject.bind(this)); | |
197 | - paletteFunction[cnt].registerDescription("選択中の要素を削除します。なにも選択していない場合は何も変化しません。"); | |
198 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
195 | + palettePressFunction[cnt] = new PaletteFunction(); | |
196 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.removeFocusedObject.bind(this)); | |
197 | + palettePressFunction[cnt].registerDescription("選択中の要素を削除します。なにも選択していない場合は何も変化しません。"); | |
198 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
199 | 199 | cnt++; |
200 | 200 | // 枠の表示/非表示 |
201 | - paletteFunction[cnt] = new PaletteFunction(); | |
202 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, true)); | |
203 | - paletteFunction[cnt].registerDescription("編集中の要素に識別用の枠を表示します。"); | |
204 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
201 | + palettePressFunction[cnt] = new PaletteFunction(); | |
202 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, true)); | |
203 | + palettePressFunction[cnt].registerDescription("編集中の要素に識別用の枠を表示します。"); | |
204 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
205 | 205 | cnt++; |
206 | - paletteFunction[cnt] = new PaletteFunction(); | |
207 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, false)); | |
208 | - paletteFunction[cnt].registerDescription("識別用の枠を消します。"); | |
209 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
210 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
211 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
206 | + palettePressFunction[cnt] = new PaletteFunction(); | |
207 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, false)); | |
208 | + palettePressFunction[cnt].registerDescription("識別用の枠を消します。"); | |
209 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
210 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
211 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
212 | 212 | cnt++; |
213 | 213 | // アニメーションする/しない設定 |
214 | - paletteFunction[cnt] = new PaletteFunction(); | |
215 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, false)); | |
216 | - paletteFunction[cnt].registerDescription("アニメーションを停止します。"); | |
217 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
214 | + palettePressFunction[cnt] = new PaletteFunction(); | |
215 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, false)); | |
216 | + palettePressFunction[cnt].registerDescription("アニメーションを停止します。"); | |
217 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
218 | 218 | cnt++; |
219 | - paletteFunction[cnt] = new PaletteFunction(); | |
220 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, true)); | |
221 | - paletteFunction[cnt].registerDescription("アニメーションを再開します。"); | |
222 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
223 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
224 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
219 | + palettePressFunction[cnt] = new PaletteFunction(); | |
220 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, true)); | |
221 | + palettePressFunction[cnt].registerDescription("アニメーションを再開します。"); | |
222 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
223 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
224 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
225 | 225 | cnt++; |
226 | 226 | // パレット上の要素は常にアニメーションをしない/する設定 |
227 | - paletteFunction[cnt] = new PaletteFunction(); | |
228 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, true)); | |
229 | - paletteFunction[cnt].registerDescription("パレットのボタンはアニメーションしないようにします。"); | |
230 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
227 | + palettePressFunction[cnt] = new PaletteFunction(); | |
228 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, true)); | |
229 | + palettePressFunction[cnt].registerDescription("パレットのボタンはアニメーションしないようにします。"); | |
230 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
231 | 231 | cnt++; |
232 | - paletteFunction[cnt] = new PaletteFunction(); | |
233 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, false)); | |
234 | - paletteFunction[cnt].registerDescription("パレットのボタンもアニメーションさせます。"); | |
235 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
236 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt -1]); | |
237 | - paletteFunction[cnt -1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
232 | + palettePressFunction[cnt] = new PaletteFunction(); | |
233 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, false)); | |
234 | + palettePressFunction[cnt].registerDescription("パレットのボタンもアニメーションさせます。"); | |
235 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
236 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
237 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
238 | 238 | cnt++; |
239 | 239 | // image要素拡大縮小操作中、画像のアスペクト比を保つ/保たない設定 |
240 | - paletteFunction[cnt] = new PaletteFunction(); | |
241 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, true)); | |
242 | - paletteFunction[cnt].registerDescription("画像の大きさ変更するとき、元画像の縦横比率を保つようにします。"); | |
243 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
240 | + palettePressFunction[cnt] = new PaletteFunction(); | |
241 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, true)); | |
242 | + palettePressFunction[cnt].registerDescription("画像の大きさ変更するとき、元画像の縦横比率を保つようにします。"); | |
243 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
244 | 244 | cnt++; |
245 | - paletteFunction[cnt] = new PaletteFunction(); | |
246 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, false)); | |
247 | - paletteFunction[cnt].registerDescription("画像の大きさ変更するとき、縦横の長さを自由に設定できるようにします。"); | |
248 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
249 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt -1]); | |
250 | - paletteFunction[cnt -1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
245 | + palettePressFunction[cnt]= new PaletteFunction(); | |
246 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, false)); | |
247 | + palettePressFunction[cnt].registerDescription("画像の大きさ変更するとき、縦横の長さを自由に設定できるようにします。"); | |
248 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
249 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
250 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
251 | 251 | cnt++; |
252 | 252 | // div要素拡大縮小操作中、フォントのサイズも変更する/しない設定 |
253 | - paletteFunction[cnt] = new PaletteFunction(); | |
254 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, true)); | |
255 | - paletteFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさも変更するようにします (枠の縦サイズと連動します)"); | |
256 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
253 | + palettePressFunction[cnt] = new PaletteFunction(); | |
254 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, true)); | |
255 | + palettePressFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさも変更するようにします (枠の縦サイズと連動します)"); | |
256 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
257 | 257 | cnt++; |
258 | - paletteFunction[cnt] = new PaletteFunction(); | |
259 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, false)); | |
260 | - paletteFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさは変わらないようにします"); | |
261 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
262 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
263 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
258 | + palettePressFunction[cnt] = new PaletteFunction(); | |
259 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, false)); | |
260 | + palettePressFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさは変わらないようにします"); | |
261 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
262 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
263 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
264 | 264 | cnt++; |
265 | 265 | }; |
266 | 266 | defineFunctions(); |
@@ -267,11 +267,11 @@ | ||
267 | 267 | |
268 | 268 | return { |
269 | 269 | getItem: function (num) { |
270 | - if (paletteFunction.length <= num) { | |
271 | - console.error('パレット機能取得要求エラー 指定された値が範囲外 num = ' + num + ', len = ' + paletteFunction.length); | |
270 | + if (palettePressFunction.length <= num) { | |
271 | + console.error('パレット機能取得要求エラー 指定された値が範囲外 num = ' + num + ', len = ' + palettePressFunction.length); | |
272 | 272 | return null; |
273 | 273 | } |
274 | - return paletteFunction[num]; | |
274 | + return palettePressFunction[num]; | |
275 | 275 | } |
276 | 276 | }; |
277 | 277 | })(); |
@@ -281,7 +281,7 @@ | ||
281 | 281 | class PaletteShapeFunctionButton { |
282 | 282 | constructor() { |
283 | 283 | this.DOMobject = null; |
284 | - this.paletteFunction = null; | |
284 | + this.palettePressFunction = null; | |
285 | 285 | } |
286 | 286 | |
287 | 287 | // 表示に使用するDOM要素を作成 |
@@ -288,7 +288,8 @@ | ||
288 | 288 | // DOM 要素を作成してこの Instance の表示要素として登録 |
289 | 289 | createButtonElement(parent) { |
290 | 290 | if (null != this.DOMobject) { |
291 | - console.error('パレットボタン ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
291 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
292 | + // そのまま実行 | |
292 | 293 | } |
293 | 294 | |
294 | 295 | this.DOMobject = document.createElement('div'); |
@@ -304,11 +305,11 @@ | ||
304 | 305 | // 既に存在する Element をこの Instance の表示要素として登録する |
305 | 306 | setButtonElement(ele) { |
306 | 307 | if (null == ele) { |
307 | - console.error('パレットボタン ボタン要素設定エラー 引数の要素が未設定'); | |
308 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素設定エラー 引数の要素が未設定'); | |
308 | 309 | return false; |
309 | 310 | } |
310 | 311 | if (null != this.DOMobject) { |
311 | - console.error('パレットボタン ボタン要素設定エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = ' + ele); | |
312 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素設定エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = ' + ele); | |
312 | 313 | } |
313 | 314 | this.DOMobject = ele; |
314 | 315 | this.setDomHandler(); |
@@ -324,15 +325,15 @@ | ||
324 | 325 | // Palent の left, top, width, height に合わせたサイズで表示する |
325 | 326 | setPalentElement(ele) { |
326 | 327 | if (null == ele) { |
327 | - console.error('パレットボタン 親要素設定エラー 引数の親要素が未設定'); | |
328 | + console.error('パレットボタン(PaletteShapeFunctionButton) 親要素設定エラー 引数の親要素が未設定'); | |
328 | 329 | return false; |
329 | 330 | } |
330 | 331 | if (null == this.DOMobject) { |
331 | - console.error('パレットボタン 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
332 | + console.error('パレットボタン(PaletteShapeFunctionButton) 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
332 | 333 | return false; |
333 | 334 | } |
334 | 335 | |
335 | - if (null == this.DOMobject.parentNode) console.log('パレットボタン 親要素設定未設定状態'); | |
336 | + if (null == this.DOMobject.parentNode) console.log('パレットボタン(PaletteShapeFunctionButton) 親要素設定未設定状態'); | |
336 | 337 | else this.DOMobject.parentNode.removeChild(this.DOMobject); |
337 | 338 | |
338 | 339 | // 最も手前に追加 |
@@ -343,20 +344,20 @@ | ||
343 | 344 | } |
344 | 345 | |
345 | 346 | // ボタン Click で実行する機能を登録 |
346 | - setPaletteFunction(palfunc) { | |
347 | - if (null != this.paletteFunction) { | |
348 | - console.error('パレットボタンへの機能設定エラー 上書き登録\n以前の機能 = ' + this.paletteFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
347 | + setPalettePressFunction(palfunc) { | |
348 | + if (null != this.palettePressFunction) { | |
349 | + console.error('パレットボタン(PaletteShapeFunctionButton)への機能設定エラー 上書き登録\n以前の機能 = ' + this.palettePressFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
349 | 350 | // ひとまず処理継続 |
350 | 351 | } |
351 | - this.paletteFunction = palfunc; | |
352 | + this.palettePressFunction = palfunc; | |
352 | 353 | |
353 | 354 | // 表示要素の更新 |
354 | - this.DOMobject.title = this.paletteFunction.getDescription(); | |
355 | - this.DOMobject.style.backgroundImage = 'url(' + this.paletteFunction.getImage() + ')'; | |
355 | + this.DOMobject.title = this.palettePressFunction.getDescription(); | |
356 | + this.DOMobject.style.backgroundImage = 'url(' + this.palettePressFunction.getImage() + ')'; | |
356 | 357 | this.DOMobject.style.backgroundSize = 'cover'; |
357 | 358 | } |
358 | - clearPaletteFunction() { | |
359 | - this.paletteFunction = null; | |
359 | + clearPalettePressFunction() { | |
360 | + this.palettePressFunction = null; | |
360 | 361 | this.DOMobject.title = null; |
361 | 362 | this.DOMobject.style.backgroundImage = 'none'; |
362 | 363 | } |
@@ -367,10 +368,10 @@ | ||
367 | 368 | setDomHandler() { |
368 | 369 | this.DOMobject.classList.add('palbutton'); |
369 | 370 | this.DOMobject.dataset.objid = 'palbutton'; |
370 | - this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShape.bind(this), false); | |
371 | - this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShape.bind(this), false); | |
372 | - this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShape.bind(this), false); | |
373 | - this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShape.bind(this), false); | |
371 | + this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShapeFunctionButton.bind(this), false); | |
372 | + this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShapeFunctionButton.bind(this), false); | |
373 | + this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShapeFunctionButton.bind(this), false); | |
374 | + this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShapeFunctionButton.bind(this), false); | |
374 | 375 | this.DOMobject.addEventListener('dragstart', prohibitDropHandler_dragStart.bind(this), false); |
375 | 376 | this.DOMobject.addEventListener('dragover', prohibitDropHandler_dragOver.bind(this), false); |
376 | 377 | this.DOMobject.addEventListener('drop', prohibitDropHandler_drop.bind(this), false); |
@@ -379,22 +380,22 @@ | ||
379 | 380 | |
380 | 381 | // Event handler ------------------------ |
381 | 382 | |
382 | - onMouseDownPaletteShape(evt) { | |
383 | + onMouseDownPaletteShapeFunctionButton(evt) { | |
383 | 384 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
384 | 385 | evt.preventDefault(); // 要素既定のdefault動作を止める |
385 | 386 | } |
386 | - onMouseUpPaletteShape(evt) { | |
387 | + onMouseUpPaletteShapeFunctionButton(evt) { | |
387 | 388 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
388 | 389 | evt.preventDefault(); // 要素既定のdefault動作を止める |
389 | 390 | |
390 | - // 登録処理実行 | |
391 | - this.paletteFunction.executeFunction(); | |
391 | + // Function実行 | |
392 | + this.palettePressFunction.executeFunction(); | |
392 | 393 | |
393 | 394 | // Toggle button 処理 |
394 | - let replaceObject = this.paletteFunction.getObjectToReplaceAfterExecution(); | |
395 | + let replaceObject = this.palettePressFunction.getObjectToReplaceAfterExecution(); | |
395 | 396 | if (null != replaceObject) { |
396 | - this.clearPaletteFunction(); | |
397 | - this.setPaletteFunction(replaceObject); | |
397 | + this.clearPalettePressFunction(); | |
398 | + this.setPalettePressFunction(replaceObject); | |
398 | 399 | } |
399 | 400 | } |
400 | 401 | } // class PaletteShapeFunctionButton |
@@ -405,24 +406,270 @@ | ||
405 | 406 | // DOM Elementの保持、ボタンdrag & dropでの実行機能との関連付け |
406 | 407 | // Input eventから必要機能の呼び出し |
407 | 408 | class PaletteShapeCSSButton { |
408 | -} | |
409 | + constructor() { | |
410 | + this.DOMobject = null; | |
411 | + this.paletteDropFunction = null; | |
412 | + } | |
409 | 413 | |
410 | -// Drop file(CSS定義test)の内容読み込み | |
411 | -// string objectを返す | |
412 | -// Stringの解析 | |
413 | -// class name取得 | |
414 | -// 定義内容取得 | |
415 | -// description取得 | |
416 | -// data scheme取得 | |
417 | -// StringをStyle elementへadd - Ruleへの参照を返す | |
418 | -// Element指定は必須 | |
419 | -// StringをStyle elementへreplace - Ruleへの参照を返す | |
420 | -// Element指定は必須 | |
421 | -// CSS class name指定でRuleへの参照を返す | |
422 | -// Element指定あり …… 指定Element内から検索 | |
423 | -// Element指定なし …… document全体から検索 | |
414 | + // 表示に使用するDOM要素を作成 | |
415 | + // DOM 要素を作成してこの Instance の表示要素として登録 | |
416 | + createButtonElement(parent) { | |
417 | + if (null != this.DOMobject) { | |
418 | + console.error('パレットボタン(PaletteShapeCSSButton) ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
419 | + // そのまま実行 | |
420 | + } | |
424 | 421 | |
422 | + this.DOMobject = document.createElement('div'); | |
423 | + this.setDomHandler(); | |
425 | 424 | |
425 | + // 引数 Element の Child として登録 | |
426 | + this.setPalentElement(parent); | |
427 | + | |
428 | + return true; | |
429 | + } | |
430 | + | |
431 | + // 親要素設定。所属パレットを切り替えたい場合など | |
432 | + // ボタンを引数 Element の Child として登録する | |
433 | + // Palent は position:static 以外の指定が必須 | |
434 | + // Palent の left, top, width, height に合わせたサイズで表示する | |
435 | + setPalentElement(ele) { | |
436 | + if (null == ele) { | |
437 | + console.error('パレットボタン(PaletteShapeCSSButton) 親要素設定エラー 引数の親要素が未設定'); | |
438 | + return false; | |
439 | + } | |
440 | + if (null == this.DOMobject) { | |
441 | + console.error('パレットボタン(PaletteShapeCSSButton) 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
442 | + return false; | |
443 | + } | |
444 | + | |
445 | + if (null == this.DOMobject.parentNode) console.log('パレットボタン(PaletteShapeFunctionButton) 親要素設定未設定状態'); | |
446 | + else this.DOMobject.parentNode.removeChild(this.DOMobject); | |
447 | + | |
448 | + // 最も手前に追加 | |
449 | + // DOM tree に入ったタイミングで CSS 設定が適用される | |
450 | + // (親要素の位置とサイズにフィットする) | |
451 | + ele.appendChild(this.DOMobject); | |
452 | + return true; | |
453 | + } | |
454 | + | |
455 | + // Paletteボタン対象Dropで実行する機能を登録 | |
456 | + setPaletteDropFunction(dropcssfunc) { | |
457 | + if (null != this.paletteDropFunction) { | |
458 | + console.error('パレットボタン(PaletteShapeFunctionButton)への機能設定エラー 上書き登録\n以前の機能 = ' + this.paletteDropFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
459 | + // ひとまず処理継続 | |
460 | + } | |
461 | + this.paletteDropFunction = palfunc; | |
462 | + | |
463 | + // 表示要素の更新 | |
464 | + this.DOMobject.title = this.palettePressFunction.getDescription(); | |
465 | + this.DOMobject.style.backgroundImage = 'url(' + this.palettePressFunction.getImage() + ')'; | |
466 | + this.DOMobject.style.backgroundSize = 'cover'; | |
467 | + } | |
468 | + | |
469 | + clearPaletteDropFunction() { | |
470 | + this.paletteDropFunction = null; | |
471 | + this.DOMobject.title = null; | |
472 | + this.DOMobject.style.backgroundImage = 'none'; | |
473 | + } | |
474 | + | |
475 | + | |
476 | + // Private 関数 ------------------------ | |
477 | + | |
478 | + setDomHandler() { | |
479 | + this.DOMobject.classList.add('palbutton'); | |
480 | + this.DOMobject.dataset.objid = 'palbutton'; | |
481 | + this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShapeCSSButton.bind(this), false); | |
482 | + // this.DOMobject.addEventListener('mousemove', this.onMouseMovePaletteShapeCSSButton.bind(this), false); | |
483 | + // this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShapeCSSButton.bind(this), false); | |
484 | + this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShapeCSSButton.bind(this), false); | |
485 | + // this.DOMobject.addEventListener('touchmove', this.onMouseMovePaletteShapeCSSButton.bind(this), false); | |
486 | + // this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShapeCSSButton.bind(this), false); | |
487 | + this.DOMobject.addEventListener('dragstart', prohibitDropHandler_dragStart.bind(this), false); | |
488 | + this.DOMobject.addEventListener('dragover', prohibitDropHandler_dragOver.bind(this), false); | |
489 | + this.DOMobject.addEventListener('drop', prohibitDropHandler_drop.bind(this), false); | |
490 | + } | |
491 | + | |
492 | + | |
493 | + // Event handler ------------------------ | |
494 | + | |
495 | + // Mouse/Touch event handler | |
496 | + // Mouse Up座標にあるElementにCSS classを追加する | |
497 | + | |
498 | + // 移動対象Palette要素選択 | |
499 | + onMouseDownPaletteShapeCSSButton(evt) { | |
500 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
501 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
502 | + // Mouse/Touch event 差分 | |
503 | + let eleTarget = (null != evt.targetTouches) ? evt.targetTouches[0] : evt.target; | |
504 | + | |
505 | + // Mouse eventをappAreaからCSSPalに渡してもらうように設定 (evt.targetは必ずpalette要素である前提。子要素なし。) | |
506 | + window.appArea.setInputEventObj(eleTarget.dataset.objid, this.onMouseMovePaletteShapeCSSButton.bind(this), this.onMouseUpPaletteShapeCSSButton.bind(this)); | |
507 | + this.startMovingElement(evt); | |
508 | + } | |
509 | + startMovingElement(evt){ | |
510 | + // Drag対象を保持 | |
511 | + this.draggingDOM = (null != evt.targetTouches) ? evt.targetTouches[0] : evt.target; | |
512 | + // ElementのDrag開始位置を保持 | |
513 | + this.startElementX = parseInt(this.draggingDOM.style.left); | |
514 | + this.startElementY = parseInt(this.draggingDOM.style.top); | |
515 | + // MouseのDrag開始位置を保持 | |
516 | + this.startDragX = evt.pageX; | |
517 | + this.startDragY = evt.pageY; | |
518 | + this.draggingDOM.style.opacity = 0.4; | |
519 | + } | |
520 | + | |
521 | + // Palette要素移動 | |
522 | + onMouseMovePaletteShapeCSSButton(evt) { | |
523 | + if (null == this.draggingDOM) return; | |
524 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
525 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
526 | + | |
527 | + // 画像の仮移動 | |
528 | + this.endDragX = evt.pageX; | |
529 | + this.endDragY = evt.pageY; | |
530 | + // 移動量取得 | |
531 | + let moveX = this.endDragX - this.startDragX; | |
532 | + let moveY = this.endDragY - this.startDragY; | |
533 | + // dispObjがあった位置からマウス移動分移動させた後の位置取得 | |
534 | + moveX = this.startElementX + moveX; | |
535 | + moveY = this.startElementY + moveY; | |
536 | + | |
537 | + window.renderLoop.requestRenderFunc(this.renderMoveDragging.bind(this, moveX, moveY)); | |
538 | + } | |
539 | + renderMoveDragging(x, y) { | |
540 | + if (null == this.draggingDOM) return; | |
541 | + this.draggingDOM.style.left = x + "px"; | |
542 | + this.draggingDOM.style.top = y + "px"; | |
543 | + } | |
544 | + | |
545 | + // Palette要素移動完了 | |
546 | + onMouseUpPaletteShapeCSSButton(evt) { | |
547 | + if (null == this.draggingDOM) return; | |
548 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
549 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
550 | + this.endMovingElement(evt); | |
551 | + } | |
552 | + endMovingElement(evt) { | |
553 | + // 初期表示状態に戻す | |
554 | + this.draggingDOM.style.left = this.startElementX + "px"; | |
555 | + this.draggingDOM.style.top = this.startElementY + "px"; | |
556 | + this.draggingDOM.style.opacity = 1.0; | |
557 | + | |
558 | + // Drag中 element情報をクリア | |
559 | + this.draggingDOM = null; | |
560 | + // Mouse event callback設定をクリア | |
561 | + window.appArea.clearCallEventObj(); | |
562 | + | |
563 | + // マウス座標直下にある要素を検索 | |
564 | + // (evt.targetは自分を指してしまうため) | |
565 | + let target = window.ObjIDMgr.hitCheck(evt.pageX, evt.pageY); | |
566 | + if (null == target) { | |
567 | + if (window.frameArea.hitCheck(evt.pageX, evt.pageY)) | |
568 | + target = window.frameArea; | |
569 | + } | |
570 | + | |
571 | + // Target element へ CSS classを追加する | |
572 | + } | |
573 | + | |
574 | + | |
575 | + // Drag&Drop event | |
576 | + // Applicationの外からFile Dropされたときに | |
577 | + // File内容情報を読み込み、CSSに反映させる | |
578 | + onDragStartPaletteShapeCSSButton(evt) { | |
579 | + evt.preventDefault(); | |
580 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
581 | + } | |
582 | + onDragOverPaletteShapeCSSButton(evt) { | |
583 | + evt.preventDefault(); | |
584 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
585 | + evt.dataTransfer.dropEffect = "copy"; | |
586 | + } | |
587 | + onDropPaletteShapeCSSButton(evt) { | |
588 | + this.debuglog('onDrop'); | |
589 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
590 | + evt.stopImmediatePropagation(); // 処理中要素の他のevent listenerを止める | |
591 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
592 | + | |
593 | + // Text, Imageそれぞれの解析処理呼び出し | |
594 | + getDropFile(evt, this.replaceCSSText.bind(this), this.parseImage.bind(this), this.parseError.bind(this)); | |
595 | + } | |
596 | + | |
597 | + replaceCSSText(file) { | |
598 | + let cssText = null; | |
599 | + cssText = this.paletteTextParser.readTextFile(file); | |
600 | + this.paletteTextParser.parseText(cssText); | |
601 | + let rule = this.paletteApplyCss.getCSS(); | |
602 | + this.paletteTextParser.replaceCSSRule(rule, cssText); | |
603 | + } | |
604 | + parseImage(file) { | |
605 | + console.error('画像ファイルには未対応'); | |
606 | + return false; | |
607 | + } | |
608 | + parseError() { | |
609 | + console.error('ドロップファイル解析エラー'); | |
610 | + return false; | |
611 | + } | |
612 | +} // class PaletteShapeCSSButton | |
613 | + | |
614 | +// Text解析、CSS登録 | |
615 | +// CSSの汎用操作を扱うわけではない | |
616 | +// 解析後のTextやImageは保持しない | |
617 | +// singletonにしたいがやり方がわからないので1つだけ作るようにする;´Д`)運用でカバー | |
618 | +class PaletteCSSTextParser { | |
619 | + constructor() { | |
620 | + this.filename = null; | |
621 | + this.cssText = null; | |
622 | + } | |
623 | + | |
624 | + // Drop file(CSS定義test)の内容読み込み(file, ele, num) | |
625 | + // 基本的には上書きで使う。パレット要素数とCSS定義数がイコールになる。 | |
626 | + // keyframeはkeyframe登録専用のstyle elementに登録する | |
627 | + // string objectを返す | |
628 | + // 引数style elementへのCSS登録 | |
629 | + // num番目のCSSへ上書きする | |
630 | + // (len <= num) or (num < 0) はaddする | |
631 | + readTextFile( | |
632 | + file, // 読みこむ対象ファイル | |
633 | + readComplete // 読み込み完了Callback(function(fileReadStr)) | |
634 | + ) { | |
635 | + // file名保持 | |
636 | + this.filename = file.name; | |
637 | + | |
638 | + let text = null; | |
639 | + // drop fileの読み込み | |
640 | + let reader = new FileReader(); | |
641 | + // Text fileを読み込み | |
642 | + reader.readAsText(file); | |
643 | + reader.onload = function (evt) { | |
644 | + this.cssText = evt.target.result; // 読み込んだ文字列 | |
645 | + if (null != readComplete) | |
646 | + readComplete(this.cssText); | |
647 | + }.bind(this); | |
648 | + } | |
649 | + | |
650 | + // Stringの解析・解析結果を一旦内部保持 (解析実行ごとに上書き) | |
651 | + // class name取得 | |
652 | + // 定義内容取得 | |
653 | + // description取得 | |
654 | + // data scheme取得 | |
655 | + // comment取得 | |
656 | + parseText(str) { | |
657 | + // Textを下記要素に分解する | |
658 | + // ・ | |
659 | + } | |
660 | + | |
661 | + // StringをStyle elementへadd - Ruleへの参照を返す | |
662 | + // Element指定は必須 | |
663 | + // StringをStyle elementへreplace - Ruleへの参照を返す | |
664 | + // Element指定は必須 | |
665 | + replaceCSSRule(rule, text) { | |
666 | + } | |
667 | + | |
668 | + // CSS class name指定でRuleへの参照を返す | |
669 | + // Element指定あり …… 指定Element内から検索 | |
670 | + // Element指定なし …… document全体から検索 | |
671 | +} | |
672 | + | |
426 | 673 | class CSSPalette { |
427 | 674 | constructor() { |
428 | 675 | this.draggingDOM = null; |
@@ -440,6 +687,14 @@ | ||
440 | 687 | |
441 | 688 | // palette要素を保持 |
442 | 689 | // 背景設定パレット |
690 | + let elePalbg = document.getElementsByClassName('palbg'); | |
691 | + this.palBackground = []; | |
692 | + for (let cnt = 0; cnt < elePalbg.length; cnt++) { | |
693 | + this.palBackground[cnt] = new PaletteShapeCSSButton(); | |
694 | + this.palBackground[cnt].createButtonElement(elePalbg[cnt]); | |
695 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
696 | + } | |
697 | +/* | |
443 | 698 | this.DOMpalbg = document.getElementsByClassName('palbg'); |
444 | 699 | for (let cnt = 0; cnt < this.DOMpalbg.length; cnt++) { |
445 | 700 | this.DOMpalbg[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -452,7 +707,16 @@ | ||
452 | 707 | this.DOMpalbg[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
453 | 708 | this.DOMpalbg[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
454 | 709 | } |
455 | - // テキストカラーパレット | |
710 | +*/ | |
711 | + // スタイルパレット | |
712 | + let elePalstyle = document.getElementsByClassName('paltxtcol'); | |
713 | + this.palStyle = []; | |
714 | + for (let cnt = 0; cnt < elePalstyle.length; cnt++) { | |
715 | + this.palStyle[cnt] = new PaletteShapeCSSButton(); | |
716 | + this.palStyle[cnt].createButtonElement(elePalstyle[cnt]); | |
717 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
718 | + } | |
719 | +/* | |
456 | 720 | this.DOMpaltxtcol = document.getElementsByClassName('paltxtcol'); |
457 | 721 | for (let cnt = 0; cnt < this.DOMpaltxtcol.length; cnt++) { |
458 | 722 | this.DOMpaltxtcol[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -465,7 +729,16 @@ | ||
465 | 729 | this.DOMpaltxtcol[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
466 | 730 | this.DOMpaltxtcol[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
467 | 731 | } |
732 | +*/ | |
468 | 733 | // アクションパレット |
734 | + let elePalaction = document.getElementsByClassName('palact'); | |
735 | + this.palAction = []; | |
736 | + for (let cnt = 0; cnt < elePalaction.length; cnt++) { | |
737 | + this.palAction[cnt] = new PaletteShapeCSSButton(); | |
738 | + this.palAction[cnt].createButtonElement(elePalaction[cnt]); | |
739 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
740 | + } | |
741 | +/* | |
469 | 742 | this.DOMpalact = document.getElementsByClassName('palact'); |
470 | 743 | for (let cnt = 0; cnt < this.DOMpalact.length; cnt++) { |
471 | 744 | this.DOMpalact[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -478,6 +751,7 @@ | ||
478 | 751 | this.DOMpalact[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
479 | 752 | this.DOMpalact[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
480 | 753 | } |
754 | +*/ | |
481 | 755 | // 設定パレット |
482 | 756 | // (リファクタにより、設定パレットのみ処理を別物にしている) |
483 | 757 | let palfuncs = [ |
@@ -490,11 +764,11 @@ | ||
490 | 764 | paletteFunctionObjects.getItem(10) // Toggle Scale font size |
491 | 765 | ]; |
492 | 766 | let elePalset = document.getElementsByClassName('palset'); // 土台 Element 取得 |
493 | - this.palSetting = []; | |
767 | + this.palSetting = []; // ボタン機能提供Elementを保持するClass Instance配列 | |
494 | 768 | for (let cnt = 0; cnt < elePalset.length; cnt++) { |
495 | - this.palSetting[cnt] = new PaletteShapeFunctionButton(); | |
496 | - this.palSetting[cnt].createButtonElement(elePalset[cnt]); | |
497 | - this.palSetting[cnt].setPaletteFunction(palfuncs[cnt]); | |
769 | + this.palSetting[cnt] = new PaletteShapeFunctionButton(); // ボタン機能Class Instance生成 | |
770 | + this.palSetting[cnt].createButtonElement(elePalset[cnt]); // ボタンElement生成とパレットに関連付け | |
771 | + this.palSetting[cnt].setPalettePressFunction(palfuncs[cnt]); // ボタン押下で実行する機能の登録 | |
498 | 772 | } |
499 | 773 | /* |
500 | 774 | // 設定パレットは 要素のdrop処理がなく、表示ボタン押下で登録機能を実行する |
@@ -692,7 +966,7 @@ | ||
692 | 966 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
693 | 967 | evt.preventDefault(); // 要素既定のdefault動作を止める |
694 | 968 | // Mouse eventをappAreaからCSSPalに渡してもらうように設定 (evt.targetは必ずpalette要素である前提。子要素なし。) |
695 | - window.appArea.setSingleTouchEventObj(evt.target.dataset.objid, this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
969 | + window.appArea.setSingleTouchEventObj(evt.targetTouches[0].target.dataset.objid, this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
696 | 970 | this.startMovingElement(evt.targetTouches[0]); |
697 | 971 | } |
698 | 972 | startMovingElement(evt){ |
@@ -38,7 +38,9 @@ | ||
38 | 38 | |
39 | 39 | let palsize = document.getElementsByClassName('palsize'); |
40 | 40 | this.paletteSizeChanger = []; |
41 | - this.paletteSizeChanger[0] = new PalGroupSize(palsize[0]); | |
41 | + for (let cnt = 0; cnt < palsize.length; cnt++) { | |
42 | + this.paletteSizeChanger[cnt] = new PalGroupSize(palsize[cnt]); | |
43 | + } | |
42 | 44 | } |
43 | 45 | |
44 | 46 | // 操作関数 ---------------------------- |
@@ -148,6 +150,9 @@ | ||
148 | 150 | this.DOMobject.title = "ドラッグでサイズを変更します"; |
149 | 151 | this.DOMobject.addEventListener('mousedown', this.onMouseDownPalGroupSize.bind(this), false); |
150 | 152 | this.DOMobject.addEventListener('touchstart', this.onTouchStartPalGroupSize.bind(this), false); |
153 | + if (null == this.DOMobject.parentNode) { | |
154 | + console.error('パレットサイズ変更エラー 指定要素の親要素が見つかりません。\nサイズ変更対象が見つからないためパレットのサイズは変更できません'); | |
155 | + } | |
151 | 156 | } |
152 | 157 | |
153 | 158 | onMouseDownPalGroupSize(evt) { |
@@ -167,13 +172,13 @@ | ||
167 | 172 | this.startChangingSize(evt.targetTouches[0]); |
168 | 173 | } |
169 | 174 | startChangingSize(evt) { |
170 | - let target = evt.target.parentNode; | |
175 | + let target = this.DOMobject.parentNode; | |
171 | 176 | this.startLeft = parseInt(target.style.left); |
172 | 177 | this.startTop = parseInt(target.style.top); |
173 | - this.startWidth = parseInt(target.style.width); | |
178 | + this.startWidth = parseInt(target.style.width); | |
174 | 179 | this.startHeight = parseInt(target.style.height); |
175 | - this.startDragX = evt.pageX; | |
176 | - this.startDragY = evt.pageY; | |
180 | + this.startDragX = evt.pageX; | |
181 | + this.startDragY = evt.pageY; | |
177 | 182 | } |
178 | 183 | |
179 | 184 | InputMovePalGroupSize(evt, touchevt) { |
@@ -192,10 +197,10 @@ | ||
192 | 197 | window.renderLoop.requestRenderFunc(this.renderInputMovePalGroupSize.bind(this, eleTarget, this.startLeft, this.startTop, this.startWidth + moveX, this.startHeight + moveY)); |
193 | 198 | } |
194 | 199 | renderInputMovePalGroupSize(eleTarget, left, top, width, height) { |
195 | - eleTarget.style.left = left + "px"; | |
196 | - eleTarget.style.top = top + "px"; | |
197 | - eleTarget.style.width = width + "px"; | |
198 | - eleTarget.style.height = height + "px"; | |
200 | + eleTarget.style.left = left + "px"; | |
201 | + eleTarget.style.top = top + "px"; | |
202 | + eleTarget.style.width = width + "px"; | |
203 | + eleTarget.style.height = height + "px"; | |
199 | 204 | } |
200 | 205 | |
201 | 206 | InputUpPalGroupSize(evt, touchevt) { |
@@ -188,16 +188,28 @@ | ||
188 | 188 | border: 1px solid rgba(0,0,0,0.2); |
189 | 189 | background-color: rgba(27, 158, 131, 0.6); |
190 | 190 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
191 | + /* ********************** */ | |
192 | + position: relative; | |
193 | + width: 60px; height: 60px; | |
194 | + margin: 7px 7px; padding: 0; | |
191 | 195 | } |
192 | 196 | .paltxtcol { |
193 | 197 | border: 1px solid rgba(0,0,0,0.2); |
194 | 198 | background-color: rgba(154,145,140,0.6); |
195 | 199 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
200 | + /* ********************** */ | |
201 | + position: relative; | |
202 | + width: 60px; height: 60px; | |
203 | + margin: 7px 7px; padding: 0; | |
196 | 204 | } |
197 | 205 | .palact { |
198 | 206 | border: 1px solid rgba(0,0,0,0.2); |
199 | 207 | background-color: rgba(156, 165, 55, 0.6); |
200 | 208 | box-shadow: 10px 10px 20px -4px rgba(0,0,0,0.21); |
209 | + /* ********************** */ | |
210 | + position: relative; | |
211 | + width: 60px; height: 60px; | |
212 | + margin: 7px 7px; padding: 0; | |
201 | 213 | } |
202 | 214 | .palset { |
203 | 215 | border: 1px solid rgba(0,0,0,0.2); |
@@ -155,43 +155,52 @@ | ||
155 | 155 | } |
156 | 156 | </style> |
157 | 157 | |
158 | - <fieldset class="palgroup palgroup0" data-objid="palgroup0" title="背景の色や画像を設定するパレットです"> | |
158 | + <fieldset class="palgroup palgroup0" data-objid="palgroup0" style="width:400px; height:130px;" title="背景の色や画像を設定するパレットです"> | |
159 | 159 | <legend class="pallegend"> Background Palette </legend> |
160 | 160 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
161 | 161 | <span class="paldesc1">背景</span><span class="paldesc2">色 </span> |
162 | 162 | </div> |
163 | - <div class="palbg palbg0" data-objid="palbg0" data-palid="0"></div> | |
164 | - <div class="palbg palbg1" data-objid="palbg1" data-palid="1"></div> | |
165 | - <div class="palbg palbg2" data-objid="palbg2" data-palid="2"></div> | |
166 | - <div class="palbg palbg3" data-objid="palbg3" data-palid="3"></div> | |
167 | - <div class="palbg palbg4" data-objid="palbg4" data-palid="4"></div> | |
163 | + <ul class="palflex"> | |
164 | + <li class="palbg palbg0" data-objid="palbg0" data-palid="0"></li> | |
165 | + <li class="palbg palbg1" data-objid="palbg1" data-palid="1"></li> | |
166 | + <li class="palbg palbg2" data-objid="palbg2" data-palid="2"></li> | |
167 | + <li class="palbg palbg3" data-objid="palbg3" data-palid="3"></li> | |
168 | + <li class="palbg palbg4" data-objid="palbg4" data-palid="4"></li> | |
169 | + </ul> | |
170 | + <div class="palsize"></div> | |
168 | 171 | </fieldset> |
169 | 172 | <br /> |
170 | 173 | |
171 | - <fieldset class="palgroup palgroup1" data-objid="palgroup1" title="テキストの色を設定するパレットです"> | |
174 | + <fieldset class="palgroup palgroup1" data-objid="palgroup1" style="width:400px; height:130px;" title="テキストの色を設定するパレットです"> | |
172 | 175 | <legend class="pallegend"> Style Palette </legend> |
173 | 176 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
174 | 177 | <span class="paldesc1">外観</span><span class="paldesc2">見た</span> |
175 | 178 | </div> |
176 | - <div class="paltxtcol paltxtcol0" data-objid="paltxtcol0" data-palid="0"></div> | |
177 | - <div class="paltxtcol paltxtcol1" data-objid="paltxtcol1" data-palid="1"></div> | |
178 | - <div class="paltxtcol paltxtcol2" data-objid="paltxtcol2" data-palid="2"></div> | |
179 | - <div class="paltxtcol paltxtcol3" data-objid="paltxtcol3" data-palid="3"></div> | |
180 | - <div class="paltxtcol paltxtcol4" data-objid="paltxtcol4" data-palid="4"></div> | |
179 | + <ul class="palflex"> | |
180 | + <li class="paltxtcol paltxtcol0" data-objid="paltxtcol0" data-palid="0"></li> | |
181 | + <li class="paltxtcol paltxtcol1" data-objid="paltxtcol1" data-palid="1"></li> | |
182 | + <li class="paltxtcol paltxtcol2" data-objid="paltxtcol2" data-palid="2"></li> | |
183 | + <li class="paltxtcol paltxtcol3" data-objid="paltxtcol3" data-palid="3"></li> | |
184 | + <li class="paltxtcol paltxtcol4" data-objid="paltxtcol4" data-palid="4"></li> | |
185 | + </ul> | |
186 | + <div class="palsize"></div> | |
181 | 187 | </fieldset> |
182 | 188 | |
183 | 189 | <br /> |
184 | 190 | |
185 | - <fieldset class="palgroup palgroup2" data-objid="palgroup2" title="動きを設定するパレットです"> | |
191 | + <fieldset class="palgroup palgroup2" data-objid="palgroup2" style="width:400px; height:130px;" title="動きを設定するパレットです"> | |
186 | 192 | <legend class="pallegend"> Action Palette </legend> |
187 | 193 | <div style="overflow:hidden; position:absolute; left:0; top: 14px; width:100%; height:calc(100% - 14px); margin:0; padding:0;"> |
188 | 194 | <span class="paldesc1">動き</span><span class="paldesc2">流れ</span> |
189 | 195 | </div> |
190 | - <div class="palact palact0" data-objid="palact0" data-palid="0"></div> | |
191 | - <div class="palact palact1" data-objid="palact1" data-palid="1"></div> | |
192 | - <div class="palact palact2" data-objid="palact2" data-palid="2"></div> | |
193 | - <div class="palact palact3" data-objid="palact3" data-palid="3"></div> | |
194 | - <div class="palact palact4" data-objid="palact4" data-palid="4"></div> | |
196 | + <ul class="palflex"> | |
197 | + <li class="palact palact0" data-objid="palact0" data-palid="0"></li> | |
198 | + <li class="palact palact1" data-objid="palact1" data-palid="1"></li> | |
199 | + <li class="palact palact2" data-objid="palact2" data-palid="2"></li> | |
200 | + <li class="palact palact3" data-objid="palact3" data-palid="3"></li> | |
201 | + <li class="palact palact4" data-objid="palact4" data-palid="4"></li> | |
202 | + </ul> | |
203 | + <div class="palsize"></div> | |
195 | 204 | </fieldset> |
196 | 205 | |
197 | 206 | <fieldset class="palgroup palgroup3" data-objid="palgroup3" style="width:400px; height:130px;" title="設定を変更するパレットです"> |
@@ -4,10 +4,8 @@ | ||
4 | 4 | class appArea { |
5 | 5 | constructor(dom) { |
6 | 6 | this.DOMobject = dom; |
7 | - this.mouseMoveFunc = null; | |
8 | - this.mouseUpFunc = null; | |
9 | - this.touchMoveFunc = null; | |
10 | - this.touchEndFunc = null; | |
7 | + | |
8 | + this.clearCallEventObj(); | |
11 | 9 | } |
12 | 10 | // 保存ファイルから編集エリア内容 (DispFieldの divとそこに連なるelement) を |
13 | 11 | // 取得するための正規表現object取得 |
@@ -112,6 +110,26 @@ | ||
112 | 110 | this.mouseMoveFunc = mouseMove; |
113 | 111 | this.mouseUpFunc = mouseUp; |
114 | 112 | } |
113 | + setInputEventObj( | |
114 | + strclass, // End event callback 第2引数 targetとして返してほしいelementが持つ css class名 | |
115 | + funcMove, // Move eventで呼んでほしい関数 or null | |
116 | + funcEnd // End eventで呼んでほしい関数 or null | |
117 | + ) { | |
118 | + this.debuglog('setInputEventObj strclass=' + strclass + ', callbackMove=' + ((null != funcMove) ? funcMove.name : 'null') + ', callbackUp=' + ((null != funcEnd) ? funcEnd.name : 'null')); | |
119 | + | |
120 | + // Callbackを上書きしてしまう場合はエラー出力し、ひとまず処理を継続 | |
121 | + if (null != funcMove || null != funcEnd) { | |
122 | + if (null != this.mouseMoveFunc || null != this.mouseUpFunc) { | |
123 | + console.error('入力イベント callback設定上書き \n\ | |
124 | +Before strclass=' + this.strclass + 'callbackMove=' + (this.inputMoveFunc ? this.inputMoveFunc.name : 'null') + ', callbackUp=' + (this.inputEndFunc ? this.inputEndFunc.name : 'null') + '\n\ | |
125 | +After strclass=' + strclass + 'callbackMove=' + ((null != funcMove) ? funcMove.name : 'null') + ', callbackUp=' + ((null != funcEnd) ? funcEnd.name : 'null')); | |
126 | + } | |
127 | + } | |
128 | + | |
129 | + this.strclass = strclass; | |
130 | + this.inputMoveFunc = funcMove; | |
131 | + this.inputEndFunc = funcEnd; | |
132 | + } | |
115 | 133 | // Touch I/F 用 |
116 | 134 | // 最初のtouch objectのみを返す (そのため mouse I/Fと同じように扱える) |
117 | 135 | setSingleTouchEventObj( |
@@ -143,6 +161,8 @@ | ||
143 | 161 | this.mouseUpFunc = null; |
144 | 162 | this.touchMoveFunc = null; |
145 | 163 | this.touchEndFunc = null; |
164 | + this.inputMoveFunc = null; | |
165 | + this.inputEndFunc = null; | |
146 | 166 | } |
147 | 167 | // Event handler ------------------- |
148 | 168 |
@@ -159,11 +179,17 @@ | ||
159 | 179 | if (null != this.mouseMoveFunc) { |
160 | 180 | this.mouseMoveFunc(evt); |
161 | 181 | } |
182 | + if (null != this.inputMoveFunc) { | |
183 | + this.inputMoveFunc(evt); | |
184 | + } | |
162 | 185 | } |
163 | 186 | onTouchMove(evt){ |
164 | 187 | if (null != this.touchMoveFunc) { |
165 | 188 | this.touchMoveFunc(evt.targetTouches[0], evt); |
166 | 189 | } |
190 | + if (null != this.inputMoveFunc) { | |
191 | + this.inputMoveFunc(evt); | |
192 | + } | |
167 | 193 | } |
168 | 194 | |
169 | 195 | // ドロップ処理 |
@@ -178,6 +204,9 @@ | ||
178 | 204 | if (null != this.mouseUpFunc) { |
179 | 205 | this.mouseUpFunc(evt, e); |
180 | 206 | } |
207 | + if (null != this.inputEndFunc) { | |
208 | + this.inputEndFunc(evt, e); | |
209 | + } | |
181 | 210 | } |
182 | 211 | onTouchEnd(evt){ |
183 | 212 | this.debuglog('タッチエンド onTouchEnd() findClass=' + this.strclass + ', callback move=' + (this.touchMoveFunc ? this.touchMoveFunc.name : 'null') + ', End=' + (this.touchEndFunc ? this.touchEndFunc.name : 'null')); |
@@ -190,6 +219,9 @@ | ||
190 | 219 | if (null != this.touchEndFunc) { |
191 | 220 | this.touchEndFunc(evt.changedTouches[0], e, evt); |
192 | 221 | } |
222 | + if (null != this.inputEndFunc) { | |
223 | + this.inputEndFunc(evt, e); | |
224 | + } | |
193 | 225 | } |
194 | 226 | |
195 | 227 |
@@ -9,7 +9,7 @@ | ||
9 | 9 | // パレットのCSS機能ボタンを押したときに実行する機能を提供する |
10 | 10 | // (保持中CSS class nameを対象Elementに付加, 削除) |
11 | 11 | // (Button instanceが自分の機能を意識しないようにするためのclass) |
12 | -class PaletteCSS { | |
12 | +class PaletteApplyCSS { | |
13 | 13 | constructor() { |
14 | 14 | this.paletteRule = null; |
15 | 15 | this.dataScheme = null; |
@@ -91,12 +91,12 @@ | ||
91 | 91 | getDescription() { |
92 | 92 | return this.description; |
93 | 93 | } |
94 | -} PaletteCSS | |
94 | +} | |
95 | 95 | |
96 | 96 | // パレットのFunctionボタンを押したときに実行する機能を提供する |
97 | 97 | class PaletteFunction { |
98 | 98 | constructor() { |
99 | - this.paletteFunction = null; | |
99 | + this.palettePressFunction = null; | |
100 | 100 | this.dataScheme = null; |
101 | 101 | this.description = null; |
102 | 102 | this.replaceObject = null; |
@@ -117,25 +117,25 @@ | ||
117 | 117 | // 登録するとき、必要に応じてthisやargをbindすること |
118 | 118 | |
119 | 119 | registerFunction(func) { |
120 | - if (null != this.paletteFunction) { | |
121 | - console.error('パレット機能 上書き登録\n以前の機能 = ' + this.paletteFunction.name + ', 今回の機能 = ' + func.name); | |
120 | + if (null != this.palettePressFunction) { | |
121 | + console.error('パレット機能 上書き登録\n以前の機能 = ' + this.palettePressFunction.name + ', 今回の機能 = ' + func.name); | |
122 | 122 | // ひとまず処理継続 |
123 | 123 | } |
124 | - this.paletteFunction = func; | |
124 | + this.palettePressFunction = func; | |
125 | 125 | return true; |
126 | 126 | } |
127 | 127 | removeFunction() { |
128 | - this.paletteFunction = null; | |
128 | + this.palettePressFunction = null; | |
129 | 129 | } |
130 | 130 | getFunction() { |
131 | - return this.paletteFunction; | |
131 | + return this.palettePressFunction; | |
132 | 132 | } |
133 | 133 | executeFunction() { |
134 | - if (null == this.paletteFunction) { | |
134 | + if (null == this.palettePressFunction) { | |
135 | 135 | console.error('パレット機能登録前に呼び出そうとした'); |
136 | 136 | return false; |
137 | 137 | } |
138 | - return this.paletteFunction(); | |
138 | + return this.palettePressFunction(); | |
139 | 139 | } |
140 | 140 | |
141 | 141 | // executeFunction実行後に PaletteFunction の Instance を入れ替える設定 |
@@ -181,86 +181,86 @@ | ||
181 | 181 | // パレット機能定義 Class と 表示定義 Class を繋ぐ Class。即時実行。 |
182 | 182 | // 表示定義 Class 寄りの存在 (画面仕様に影響される処理内容なので) |
183 | 183 | var paletteFunctionObjects = (function () { |
184 | - let paletteFunction = []; | |
184 | + let palettePressFunction =[]; | |
185 | 185 | |
186 | 186 | var defineFunctions = function () { |
187 | 187 | let cnt = 0; |
188 | 188 | // 設定パレット非表示設定 |
189 | - paletteFunction[cnt] = new PaletteFunction(); | |
190 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setShowHideSettingPalette.bind(this, false)); | |
191 | - paletteFunction[cnt].registerDescription("設定パレット (このパレット) を非表示にします。表示させたい場合は設定画面から表示設定を変更できます。"); | |
192 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
189 | + palettePressFunction[cnt] = new PaletteFunction(); | |
190 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setShowHideSettingPalette.bind(this, false)); | |
191 | + palettePressFunction[cnt].registerDescription("設定パレット (このパレット) を非表示にします。表示させたい場合は設定画面から表示設定を変更できます。"); | |
192 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
193 | 193 | cnt++; |
194 | 194 | // 選択要素削除 |
195 | - paletteFunction[cnt] = new PaletteFunction(); | |
196 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.removeFocusedObject.bind(this)); | |
197 | - paletteFunction[cnt].registerDescription("選択中の要素を削除します。なにも選択していない場合は何も変化しません。"); | |
198 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
195 | + palettePressFunction[cnt] = new PaletteFunction(); | |
196 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.removeFocusedObject.bind(this)); | |
197 | + palettePressFunction[cnt].registerDescription("選択中の要素を削除します。なにも選択していない場合は何も変化しません。"); | |
198 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
199 | 199 | cnt++; |
200 | 200 | // 枠の表示/非表示 |
201 | - paletteFunction[cnt] = new PaletteFunction(); | |
202 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, true)); | |
203 | - paletteFunction[cnt].registerDescription("編集中の要素に識別用の枠を表示します。"); | |
204 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
201 | + palettePressFunction[cnt] = new PaletteFunction(); | |
202 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, true)); | |
203 | + palettePressFunction[cnt].registerDescription("編集中の要素に識別用の枠を表示します。"); | |
204 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
205 | 205 | cnt++; |
206 | - paletteFunction[cnt] = new PaletteFunction(); | |
207 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, false)); | |
208 | - paletteFunction[cnt].registerDescription("識別用の枠を消します。"); | |
209 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
210 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
211 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
206 | + palettePressFunction[cnt] = new PaletteFunction(); | |
207 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementBorderLine.bind(this, false)); | |
208 | + palettePressFunction[cnt].registerDescription("識別用の枠を消します。"); | |
209 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
210 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
211 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
212 | 212 | cnt++; |
213 | 213 | // アニメーションする/しない設定 |
214 | - paletteFunction[cnt] = new PaletteFunction(); | |
215 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, false)); | |
216 | - paletteFunction[cnt].registerDescription("アニメーションを停止します。"); | |
217 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
214 | + palettePressFunction[cnt] = new PaletteFunction(); | |
215 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, false)); | |
216 | + palettePressFunction[cnt].registerDescription("アニメーションを停止します。"); | |
217 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
218 | 218 | cnt++; |
219 | - paletteFunction[cnt] = new PaletteFunction(); | |
220 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, true)); | |
221 | - paletteFunction[cnt].registerDescription("アニメーションを再開します。"); | |
222 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
223 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
224 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
219 | + palettePressFunction[cnt] = new PaletteFunction(); | |
220 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAnimation.bind(this, true)); | |
221 | + palettePressFunction[cnt].registerDescription("アニメーションを再開します。"); | |
222 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
223 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
224 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
225 | 225 | cnt++; |
226 | 226 | // パレット上の要素は常にアニメーションをしない/する設定 |
227 | - paletteFunction[cnt] = new PaletteFunction(); | |
228 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, true)); | |
229 | - paletteFunction[cnt].registerDescription("パレットのボタンはアニメーションしないようにします。"); | |
230 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
227 | + palettePressFunction[cnt] = new PaletteFunction(); | |
228 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, true)); | |
229 | + palettePressFunction[cnt].registerDescription("パレットのボタンはアニメーションしないようにします。"); | |
230 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
231 | 231 | cnt++; |
232 | - paletteFunction[cnt] = new PaletteFunction(); | |
233 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, false)); | |
234 | - paletteFunction[cnt].registerDescription("パレットのボタンもアニメーションさせます。"); | |
235 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
236 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt -1]); | |
237 | - paletteFunction[cnt -1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
232 | + palettePressFunction[cnt] = new PaletteFunction(); | |
233 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setAlwaysOffPaletteAnimation.bind(this, false)); | |
234 | + palettePressFunction[cnt].registerDescription("パレットのボタンもアニメーションさせます。"); | |
235 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
236 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
237 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
238 | 238 | cnt++; |
239 | 239 | // image要素拡大縮小操作中、画像のアスペクト比を保つ/保たない設定 |
240 | - paletteFunction[cnt] = new PaletteFunction(); | |
241 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, true)); | |
242 | - paletteFunction[cnt].registerDescription("画像の大きさ変更するとき、元画像の縦横比率を保つようにします。"); | |
243 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
240 | + palettePressFunction[cnt] = new PaletteFunction(); | |
241 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, true)); | |
242 | + palettePressFunction[cnt].registerDescription("画像の大きさ変更するとき、元画像の縦横比率を保つようにします。"); | |
243 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
244 | 244 | cnt++; |
245 | - paletteFunction[cnt] = new PaletteFunction(); | |
246 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, false)); | |
247 | - paletteFunction[cnt].registerDescription("画像の大きさ変更するとき、縦横の長さを自由に設定できるようにします。"); | |
248 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
249 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt -1]); | |
250 | - paletteFunction[cnt -1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
245 | + palettePressFunction[cnt]= new PaletteFunction(); | |
246 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setElementAspect.bind(this, false)); | |
247 | + palettePressFunction[cnt].registerDescription("画像の大きさ変更するとき、縦横の長さを自由に設定できるようにします。"); | |
248 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
249 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
250 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
251 | 251 | cnt++; |
252 | 252 | // div要素拡大縮小操作中、フォントのサイズも変更する/しない設定 |
253 | - paletteFunction[cnt] = new PaletteFunction(); | |
254 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, true)); | |
255 | - paletteFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさも変更するようにします (枠の縦サイズと連動します)"); | |
256 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
253 | + palettePressFunction[cnt] = new PaletteFunction(); | |
254 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, true)); | |
255 | + palettePressFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさも変更するようにします (枠の縦サイズと連動します)"); | |
256 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
257 | 257 | cnt++; |
258 | - paletteFunction[cnt] = new PaletteFunction(); | |
259 | - paletteFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, false)); | |
260 | - paletteFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさは変わらないようにします"); | |
261 | - paletteFunction[cnt].registerImage("images/StoreLogo.png"); | |
262 | - paletteFunction[cnt].setObjectToReplaceAfterExecution(paletteFunction[cnt - 1]); | |
263 | - paletteFunction[cnt - 1].setObjectToReplaceAfterExecution(paletteFunction[cnt]); | |
258 | + palettePressFunction[cnt] = new PaletteFunction(); | |
259 | + palettePressFunction[cnt].registerFunction(window.MyAppSettings.setScaleFont.bind(this, false)); | |
260 | + palettePressFunction[cnt].registerDescription("枠の大きさを変更するとき、文字の大きさは変わらないようにします"); | |
261 | + palettePressFunction[cnt].registerImage("images/StoreLogo.png"); | |
262 | + palettePressFunction[cnt].setObjectToReplaceAfterExecution(palettePressFunction[cnt - 1]); | |
263 | + palettePressFunction[cnt - 1].setObjectToReplaceAfterExecution(palettePressFunction[cnt]); | |
264 | 264 | cnt++; |
265 | 265 | }; |
266 | 266 | defineFunctions(); |
@@ -267,11 +267,11 @@ | ||
267 | 267 | |
268 | 268 | return { |
269 | 269 | getItem: function (num) { |
270 | - if (paletteFunction.length <= num) { | |
271 | - console.error('パレット機能取得要求エラー 指定された値が範囲外 num = ' + num + ', len = ' + paletteFunction.length); | |
270 | + if (palettePressFunction.length <= num) { | |
271 | + console.error('パレット機能取得要求エラー 指定された値が範囲外 num = ' + num + ', len = ' + palettePressFunction.length); | |
272 | 272 | return null; |
273 | 273 | } |
274 | - return paletteFunction[num]; | |
274 | + return palettePressFunction[num]; | |
275 | 275 | } |
276 | 276 | }; |
277 | 277 | })(); |
@@ -281,7 +281,7 @@ | ||
281 | 281 | class PaletteShapeFunctionButton { |
282 | 282 | constructor() { |
283 | 283 | this.DOMobject = null; |
284 | - this.paletteFunction = null; | |
284 | + this.palettePressFunction = null; | |
285 | 285 | } |
286 | 286 | |
287 | 287 | // 表示に使用するDOM要素を作成 |
@@ -288,7 +288,8 @@ | ||
288 | 288 | // DOM 要素を作成してこの Instance の表示要素として登録 |
289 | 289 | createButtonElement(parent) { |
290 | 290 | if (null != this.DOMobject) { |
291 | - console.error('パレットボタン ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
291 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
292 | + // そのまま実行 | |
292 | 293 | } |
293 | 294 | |
294 | 295 | this.DOMobject = document.createElement('div'); |
@@ -304,11 +305,11 @@ | ||
304 | 305 | // 既に存在する Element をこの Instance の表示要素として登録する |
305 | 306 | setButtonElement(ele) { |
306 | 307 | if (null == ele) { |
307 | - console.error('パレットボタン ボタン要素設定エラー 引数の要素が未設定'); | |
308 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素設定エラー 引数の要素が未設定'); | |
308 | 309 | return false; |
309 | 310 | } |
310 | 311 | if (null != this.DOMobject) { |
311 | - console.error('パレットボタン ボタン要素設定エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = ' + ele); | |
312 | + console.error('パレットボタン(PaletteShapeFunctionButton) ボタン要素設定エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = ' + ele); | |
312 | 313 | } |
313 | 314 | this.DOMobject = ele; |
314 | 315 | this.setDomHandler(); |
@@ -324,15 +325,15 @@ | ||
324 | 325 | // Palent の left, top, width, height に合わせたサイズで表示する |
325 | 326 | setPalentElement(ele) { |
326 | 327 | if (null == ele) { |
327 | - console.error('パレットボタン 親要素設定エラー 引数の親要素が未設定'); | |
328 | + console.error('パレットボタン(PaletteShapeFunctionButton) 親要素設定エラー 引数の親要素が未設定'); | |
328 | 329 | return false; |
329 | 330 | } |
330 | 331 | if (null == this.DOMobject) { |
331 | - console.error('パレットボタン 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
332 | + console.error('パレットボタン(PaletteShapeFunctionButton) 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
332 | 333 | return false; |
333 | 334 | } |
334 | 335 | |
335 | - if (null == this.DOMobject.parentNode) console.log('パレットボタン 親要素設定未設定状態'); | |
336 | + if (null == this.DOMobject.parentNode) console.log('パレットボタン(PaletteShapeFunctionButton) 親要素設定未設定状態'); | |
336 | 337 | else this.DOMobject.parentNode.removeChild(this.DOMobject); |
337 | 338 | |
338 | 339 | // 最も手前に追加 |
@@ -343,20 +344,20 @@ | ||
343 | 344 | } |
344 | 345 | |
345 | 346 | // ボタン Click で実行する機能を登録 |
346 | - setPaletteFunction(palfunc) { | |
347 | - if (null != this.paletteFunction) { | |
348 | - console.error('パレットボタンへの機能設定エラー 上書き登録\n以前の機能 = ' + this.paletteFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
347 | + setPalettePressFunction(palfunc) { | |
348 | + if (null != this.palettePressFunction) { | |
349 | + console.error('パレットボタン(PaletteShapeFunctionButton)への機能設定エラー 上書き登録\n以前の機能 = ' + this.palettePressFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
349 | 350 | // ひとまず処理継続 |
350 | 351 | } |
351 | - this.paletteFunction = palfunc; | |
352 | + this.palettePressFunction = palfunc; | |
352 | 353 | |
353 | 354 | // 表示要素の更新 |
354 | - this.DOMobject.title = this.paletteFunction.getDescription(); | |
355 | - this.DOMobject.style.backgroundImage = 'url(' + this.paletteFunction.getImage() + ')'; | |
355 | + this.DOMobject.title = this.palettePressFunction.getDescription(); | |
356 | + this.DOMobject.style.backgroundImage = 'url(' + this.palettePressFunction.getImage() + ')'; | |
356 | 357 | this.DOMobject.style.backgroundSize = 'cover'; |
357 | 358 | } |
358 | - clearPaletteFunction() { | |
359 | - this.paletteFunction = null; | |
359 | + clearPalettePressFunction() { | |
360 | + this.palettePressFunction = null; | |
360 | 361 | this.DOMobject.title = null; |
361 | 362 | this.DOMobject.style.backgroundImage = 'none'; |
362 | 363 | } |
@@ -367,10 +368,10 @@ | ||
367 | 368 | setDomHandler() { |
368 | 369 | this.DOMobject.classList.add('palbutton'); |
369 | 370 | this.DOMobject.dataset.objid = 'palbutton'; |
370 | - this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShape.bind(this), false); | |
371 | - this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShape.bind(this), false); | |
372 | - this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShape.bind(this), false); | |
373 | - this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShape.bind(this), false); | |
371 | + this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShapeFunctionButton.bind(this), false); | |
372 | + this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShapeFunctionButton.bind(this), false); | |
373 | + this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShapeFunctionButton.bind(this), false); | |
374 | + this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShapeFunctionButton.bind(this), false); | |
374 | 375 | this.DOMobject.addEventListener('dragstart', prohibitDropHandler_dragStart.bind(this), false); |
375 | 376 | this.DOMobject.addEventListener('dragover', prohibitDropHandler_dragOver.bind(this), false); |
376 | 377 | this.DOMobject.addEventListener('drop', prohibitDropHandler_drop.bind(this), false); |
@@ -379,22 +380,22 @@ | ||
379 | 380 | |
380 | 381 | // Event handler ------------------------ |
381 | 382 | |
382 | - onMouseDownPaletteShape(evt) { | |
383 | + onMouseDownPaletteShapeFunctionButton(evt) { | |
383 | 384 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
384 | 385 | evt.preventDefault(); // 要素既定のdefault動作を止める |
385 | 386 | } |
386 | - onMouseUpPaletteShape(evt) { | |
387 | + onMouseUpPaletteShapeFunctionButton(evt) { | |
387 | 388 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
388 | 389 | evt.preventDefault(); // 要素既定のdefault動作を止める |
389 | 390 | |
390 | - // 登録処理実行 | |
391 | - this.paletteFunction.executeFunction(); | |
391 | + // Function実行 | |
392 | + this.palettePressFunction.executeFunction(); | |
392 | 393 | |
393 | 394 | // Toggle button 処理 |
394 | - let replaceObject = this.paletteFunction.getObjectToReplaceAfterExecution(); | |
395 | + let replaceObject = this.palettePressFunction.getObjectToReplaceAfterExecution(); | |
395 | 396 | if (null != replaceObject) { |
396 | - this.clearPaletteFunction(); | |
397 | - this.setPaletteFunction(replaceObject); | |
397 | + this.clearPalettePressFunction(); | |
398 | + this.setPalettePressFunction(replaceObject); | |
398 | 399 | } |
399 | 400 | } |
400 | 401 | } // class PaletteShapeFunctionButton |
@@ -405,24 +406,270 @@ | ||
405 | 406 | // DOM Elementの保持、ボタンdrag & dropでの実行機能との関連付け |
406 | 407 | // Input eventから必要機能の呼び出し |
407 | 408 | class PaletteShapeCSSButton { |
408 | -} | |
409 | + constructor() { | |
410 | + this.DOMobject = null; | |
411 | + this.paletteDropFunction = null; | |
412 | + } | |
409 | 413 | |
410 | -// Drop file(CSS定義test)の内容読み込み | |
411 | -// string objectを返す | |
412 | -// Stringの解析 | |
413 | -// class name取得 | |
414 | -// 定義内容取得 | |
415 | -// description取得 | |
416 | -// data scheme取得 | |
417 | -// StringをStyle elementへadd - Ruleへの参照を返す | |
418 | -// Element指定は必須 | |
419 | -// StringをStyle elementへreplace - Ruleへの参照を返す | |
420 | -// Element指定は必須 | |
421 | -// CSS class name指定でRuleへの参照を返す | |
422 | -// Element指定あり …… 指定Element内から検索 | |
423 | -// Element指定なし …… document全体から検索 | |
414 | + // 表示に使用するDOM要素を作成 | |
415 | + // DOM 要素を作成してこの Instance の表示要素として登録 | |
416 | + createButtonElement(parent) { | |
417 | + if (null != this.DOMobject) { | |
418 | + console.error('パレットボタン(PaletteShapeCSSButton) ボタン要素作成エラー 要素の上書き\n以前のElement = ' + this.DOMobject + ', 今回のElement = 新規'); | |
419 | + // そのまま実行 | |
420 | + } | |
424 | 421 | |
422 | + this.DOMobject = document.createElement('div'); | |
423 | + this.setDomHandler(); | |
425 | 424 | |
425 | + // 引数 Element の Child として登録 | |
426 | + this.setPalentElement(parent); | |
427 | + | |
428 | + return true; | |
429 | + } | |
430 | + | |
431 | + // 親要素設定。所属パレットを切り替えたい場合など | |
432 | + // ボタンを引数 Element の Child として登録する | |
433 | + // Palent は position:static 以外の指定が必須 | |
434 | + // Palent の left, top, width, height に合わせたサイズで表示する | |
435 | + setPalentElement(ele) { | |
436 | + if (null == ele) { | |
437 | + console.error('パレットボタン(PaletteShapeCSSButton) 親要素設定エラー 引数の親要素が未設定'); | |
438 | + return false; | |
439 | + } | |
440 | + if (null == this.DOMobject) { | |
441 | + console.error('パレットボタン(PaletteShapeCSSButton) 親要素設定エラー ボタン要素が登録されていません parent = ' + ele); | |
442 | + return false; | |
443 | + } | |
444 | + | |
445 | + if (null == this.DOMobject.parentNode) console.log('パレットボタン(PaletteShapeFunctionButton) 親要素設定未設定状態'); | |
446 | + else this.DOMobject.parentNode.removeChild(this.DOMobject); | |
447 | + | |
448 | + // 最も手前に追加 | |
449 | + // DOM tree に入ったタイミングで CSS 設定が適用される | |
450 | + // (親要素の位置とサイズにフィットする) | |
451 | + ele.appendChild(this.DOMobject); | |
452 | + return true; | |
453 | + } | |
454 | + | |
455 | + // Paletteボタン対象Dropで実行する機能を登録 | |
456 | + setPaletteDropFunction(dropcssfunc) { | |
457 | + if (null != this.paletteDropFunction) { | |
458 | + console.error('パレットボタン(PaletteShapeFunctionButton)への機能設定エラー 上書き登録\n以前の機能 = ' + this.paletteDropFunction.getFunction.name + ', 今回の機能 = ' + palfunc.getFunction.name); | |
459 | + // ひとまず処理継続 | |
460 | + } | |
461 | + this.paletteDropFunction = palfunc; | |
462 | + | |
463 | + // 表示要素の更新 | |
464 | + this.DOMobject.title = this.palettePressFunction.getDescription(); | |
465 | + this.DOMobject.style.backgroundImage = 'url(' + this.palettePressFunction.getImage() + ')'; | |
466 | + this.DOMobject.style.backgroundSize = 'cover'; | |
467 | + } | |
468 | + | |
469 | + clearPaletteDropFunction() { | |
470 | + this.paletteDropFunction = null; | |
471 | + this.DOMobject.title = null; | |
472 | + this.DOMobject.style.backgroundImage = 'none'; | |
473 | + } | |
474 | + | |
475 | + | |
476 | + // Private 関数 ------------------------ | |
477 | + | |
478 | + setDomHandler() { | |
479 | + this.DOMobject.classList.add('palbutton'); | |
480 | + this.DOMobject.dataset.objid = 'palbutton'; | |
481 | + this.DOMobject.addEventListener('mousedown', this.onMouseDownPaletteShapeCSSButton.bind(this), false); | |
482 | + // this.DOMobject.addEventListener('mousemove', this.onMouseMovePaletteShapeCSSButton.bind(this), false); | |
483 | + // this.DOMobject.addEventListener('mouseup', this.onMouseUpPaletteShapeCSSButton.bind(this), false); | |
484 | + this.DOMobject.addEventListener('touchstart', this.onMouseDownPaletteShapeCSSButton.bind(this), false); | |
485 | + // this.DOMobject.addEventListener('touchmove', this.onMouseMovePaletteShapeCSSButton.bind(this), false); | |
486 | + // this.DOMobject.addEventListener('touchend', this.onMouseUpPaletteShapeCSSButton.bind(this), false); | |
487 | + this.DOMobject.addEventListener('dragstart', prohibitDropHandler_dragStart.bind(this), false); | |
488 | + this.DOMobject.addEventListener('dragover', prohibitDropHandler_dragOver.bind(this), false); | |
489 | + this.DOMobject.addEventListener('drop', prohibitDropHandler_drop.bind(this), false); | |
490 | + } | |
491 | + | |
492 | + | |
493 | + // Event handler ------------------------ | |
494 | + | |
495 | + // Mouse/Touch event handler | |
496 | + // Mouse Up座標にあるElementにCSS classを追加する | |
497 | + | |
498 | + // 移動対象Palette要素選択 | |
499 | + onMouseDownPaletteShapeCSSButton(evt) { | |
500 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
501 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
502 | + // Mouse/Touch event 差分 | |
503 | + let eleTarget = (null != evt.targetTouches) ? evt.targetTouches[0] : evt.target; | |
504 | + | |
505 | + // Mouse eventをappAreaからCSSPalに渡してもらうように設定 (evt.targetは必ずpalette要素である前提。子要素なし。) | |
506 | + window.appArea.setInputEventObj(eleTarget.dataset.objid, this.onMouseMovePaletteShapeCSSButton.bind(this), this.onMouseUpPaletteShapeCSSButton.bind(this)); | |
507 | + this.startMovingElement(evt); | |
508 | + } | |
509 | + startMovingElement(evt){ | |
510 | + // Drag対象を保持 | |
511 | + this.draggingDOM = (null != evt.targetTouches) ? evt.targetTouches[0] : evt.target; | |
512 | + // ElementのDrag開始位置を保持 | |
513 | + this.startElementX = parseInt(this.draggingDOM.style.left); | |
514 | + this.startElementY = parseInt(this.draggingDOM.style.top); | |
515 | + // MouseのDrag開始位置を保持 | |
516 | + this.startDragX = evt.pageX; | |
517 | + this.startDragY = evt.pageY; | |
518 | + this.draggingDOM.style.opacity = 0.4; | |
519 | + } | |
520 | + | |
521 | + // Palette要素移動 | |
522 | + onMouseMovePaletteShapeCSSButton(evt) { | |
523 | + if (null == this.draggingDOM) return; | |
524 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
525 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
526 | + | |
527 | + // 画像の仮移動 | |
528 | + this.endDragX = evt.pageX; | |
529 | + this.endDragY = evt.pageY; | |
530 | + // 移動量取得 | |
531 | + let moveX = this.endDragX - this.startDragX; | |
532 | + let moveY = this.endDragY - this.startDragY; | |
533 | + // dispObjがあった位置からマウス移動分移動させた後の位置取得 | |
534 | + moveX = this.startElementX + moveX; | |
535 | + moveY = this.startElementY + moveY; | |
536 | + | |
537 | + window.renderLoop.requestRenderFunc(this.renderMoveDragging.bind(this, moveX, moveY)); | |
538 | + } | |
539 | + renderMoveDragging(x, y) { | |
540 | + if (null == this.draggingDOM) return; | |
541 | + this.draggingDOM.style.left = x + "px"; | |
542 | + this.draggingDOM.style.top = y + "px"; | |
543 | + } | |
544 | + | |
545 | + // Palette要素移動完了 | |
546 | + onMouseUpPaletteShapeCSSButton(evt) { | |
547 | + if (null == this.draggingDOM) return; | |
548 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
549 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
550 | + this.endMovingElement(evt); | |
551 | + } | |
552 | + endMovingElement(evt) { | |
553 | + // 初期表示状態に戻す | |
554 | + this.draggingDOM.style.left = this.startElementX + "px"; | |
555 | + this.draggingDOM.style.top = this.startElementY + "px"; | |
556 | + this.draggingDOM.style.opacity = 1.0; | |
557 | + | |
558 | + // Drag中 element情報をクリア | |
559 | + this.draggingDOM = null; | |
560 | + // Mouse event callback設定をクリア | |
561 | + window.appArea.clearCallEventObj(); | |
562 | + | |
563 | + // マウス座標直下にある要素を検索 | |
564 | + // (evt.targetは自分を指してしまうため) | |
565 | + let target = window.ObjIDMgr.hitCheck(evt.pageX, evt.pageY); | |
566 | + if (null == target) { | |
567 | + if (window.frameArea.hitCheck(evt.pageX, evt.pageY)) | |
568 | + target = window.frameArea; | |
569 | + } | |
570 | + | |
571 | + // Target element へ CSS classを追加する | |
572 | + } | |
573 | + | |
574 | + | |
575 | + // Drag&Drop event | |
576 | + // Applicationの外からFile Dropされたときに | |
577 | + // File内容情報を読み込み、CSSに反映させる | |
578 | + onDragStartPaletteShapeCSSButton(evt) { | |
579 | + evt.preventDefault(); | |
580 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
581 | + } | |
582 | + onDragOverPaletteShapeCSSButton(evt) { | |
583 | + evt.preventDefault(); | |
584 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
585 | + evt.dataTransfer.dropEffect = "copy"; | |
586 | + } | |
587 | + onDropPaletteShapeCSSButton(evt) { | |
588 | + this.debuglog('onDrop'); | |
589 | + evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) | |
590 | + evt.stopImmediatePropagation(); // 処理中要素の他のevent listenerを止める | |
591 | + evt.preventDefault(); // 要素既定のdefault動作を止める | |
592 | + | |
593 | + // Text, Imageそれぞれの解析処理呼び出し | |
594 | + getDropFile(evt, this.replaceCSSText.bind(this), this.parseImage.bind(this), this.parseError.bind(this)); | |
595 | + } | |
596 | + | |
597 | + replaceCSSText(file) { | |
598 | + let cssText = null; | |
599 | + cssText = this.paletteTextParser.readTextFile(file); | |
600 | + this.paletteTextParser.parseText(cssText); | |
601 | + let rule = this.paletteApplyCss.getCSS(); | |
602 | + this.paletteTextParser.replaceCSSRule(rule, cssText); | |
603 | + } | |
604 | + parseImage(file) { | |
605 | + console.error('画像ファイルには未対応'); | |
606 | + return false; | |
607 | + } | |
608 | + parseError() { | |
609 | + console.error('ドロップファイル解析エラー'); | |
610 | + return false; | |
611 | + } | |
612 | +} // class PaletteShapeCSSButton | |
613 | + | |
614 | +// Text解析、CSS登録 | |
615 | +// CSSの汎用操作を扱うわけではない | |
616 | +// 解析後のTextやImageは保持しない | |
617 | +// singletonにしたいがやり方がわからないので1つだけ作るようにする;´Д`)運用でカバー | |
618 | +class PaletteCSSTextParser { | |
619 | + constructor() { | |
620 | + this.filename = null; | |
621 | + this.cssText = null; | |
622 | + } | |
623 | + | |
624 | + // Drop file(CSS定義test)の内容読み込み(file, ele, num) | |
625 | + // 基本的には上書きで使う。パレット要素数とCSS定義数がイコールになる。 | |
626 | + // keyframeはkeyframe登録専用のstyle elementに登録する | |
627 | + // string objectを返す | |
628 | + // 引数style elementへのCSS登録 | |
629 | + // num番目のCSSへ上書きする | |
630 | + // (len <= num) or (num < 0) はaddする | |
631 | + readTextFile( | |
632 | + file, // 読みこむ対象ファイル | |
633 | + readComplete // 読み込み完了Callback(function(fileReadStr)) | |
634 | + ) { | |
635 | + // file名保持 | |
636 | + this.filename = file.name; | |
637 | + | |
638 | + let text = null; | |
639 | + // drop fileの読み込み | |
640 | + let reader = new FileReader(); | |
641 | + // Text fileを読み込み | |
642 | + reader.readAsText(file); | |
643 | + reader.onload = function (evt) { | |
644 | + this.cssText = evt.target.result; // 読み込んだ文字列 | |
645 | + if (null != readComplete) | |
646 | + readComplete(this.cssText); | |
647 | + }.bind(this); | |
648 | + } | |
649 | + | |
650 | + // Stringの解析・解析結果を一旦内部保持 (解析実行ごとに上書き) | |
651 | + // class name取得 | |
652 | + // 定義内容取得 | |
653 | + // description取得 | |
654 | + // data scheme取得 | |
655 | + // comment取得 | |
656 | + parseText(str) { | |
657 | + // Textを下記要素に分解する | |
658 | + // ・ | |
659 | + } | |
660 | + | |
661 | + // StringをStyle elementへadd - Ruleへの参照を返す | |
662 | + // Element指定は必須 | |
663 | + // StringをStyle elementへreplace - Ruleへの参照を返す | |
664 | + // Element指定は必須 | |
665 | + replaceCSSRule(rule, text) { | |
666 | + } | |
667 | + | |
668 | + // CSS class name指定でRuleへの参照を返す | |
669 | + // Element指定あり …… 指定Element内から検索 | |
670 | + // Element指定なし …… document全体から検索 | |
671 | +} | |
672 | + | |
426 | 673 | class CSSPalette { |
427 | 674 | constructor() { |
428 | 675 | this.draggingDOM = null; |
@@ -440,6 +687,14 @@ | ||
440 | 687 | |
441 | 688 | // palette要素を保持 |
442 | 689 | // 背景設定パレット |
690 | + let elePalbg = document.getElementsByClassName('palbg'); | |
691 | + this.palBackground = []; | |
692 | + for (let cnt = 0; cnt < elePalbg.length; cnt++) { | |
693 | + this.palBackground[cnt] = new PaletteShapeCSSButton(); | |
694 | + this.palBackground[cnt].createButtonElement(elePalbg[cnt]); | |
695 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
696 | + } | |
697 | +/* | |
443 | 698 | this.DOMpalbg = document.getElementsByClassName('palbg'); |
444 | 699 | for (let cnt = 0; cnt < this.DOMpalbg.length; cnt++) { |
445 | 700 | this.DOMpalbg[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -452,7 +707,16 @@ | ||
452 | 707 | this.DOMpalbg[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
453 | 708 | this.DOMpalbg[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
454 | 709 | } |
455 | - // テキストカラーパレット | |
710 | +*/ | |
711 | + // スタイルパレット | |
712 | + let elePalstyle = document.getElementsByClassName('paltxtcol'); | |
713 | + this.palStyle = []; | |
714 | + for (let cnt = 0; cnt < elePalstyle.length; cnt++) { | |
715 | + this.palStyle[cnt] = new PaletteShapeCSSButton(); | |
716 | + this.palStyle[cnt].createButtonElement(elePalstyle[cnt]); | |
717 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
718 | + } | |
719 | +/* | |
456 | 720 | this.DOMpaltxtcol = document.getElementsByClassName('paltxtcol'); |
457 | 721 | for (let cnt = 0; cnt < this.DOMpaltxtcol.length; cnt++) { |
458 | 722 | this.DOMpaltxtcol[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -465,7 +729,16 @@ | ||
465 | 729 | this.DOMpaltxtcol[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
466 | 730 | this.DOMpaltxtcol[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
467 | 731 | } |
732 | +*/ | |
468 | 733 | // アクションパレット |
734 | + let elePalaction = document.getElementsByClassName('palact'); | |
735 | + this.palAction = []; | |
736 | + for (let cnt = 0; cnt < elePalaction.length; cnt++) { | |
737 | + this.palAction[cnt] = new PaletteShapeCSSButton(); | |
738 | + this.palAction[cnt].createButtonElement(elePalaction[cnt]); | |
739 | + // ボタンへの機能登録は 定義file drop か Save file 読み込みのとき | |
740 | + } | |
741 | +/* | |
469 | 742 | this.DOMpalact = document.getElementsByClassName('palact'); |
470 | 743 | for (let cnt = 0; cnt < this.DOMpalact.length; cnt++) { |
471 | 744 | this.DOMpalact[cnt].style.left = 10 + 70 * cnt + 'px'; |
@@ -478,6 +751,7 @@ | ||
478 | 751 | this.DOMpalact[cnt].addEventListener('dragover', this.onDragOver.bind(this), false); |
479 | 752 | this.DOMpalact[cnt].addEventListener('drop', this.onDrop.bind(this), false); |
480 | 753 | } |
754 | +*/ | |
481 | 755 | // 設定パレット |
482 | 756 | // (リファクタにより、設定パレットのみ処理を別物にしている) |
483 | 757 | let palfuncs = [ |
@@ -490,11 +764,11 @@ | ||
490 | 764 | paletteFunctionObjects.getItem(10) // Toggle Scale font size |
491 | 765 | ]; |
492 | 766 | let elePalset = document.getElementsByClassName('palset'); // 土台 Element 取得 |
493 | - this.palSetting = []; | |
767 | + this.palSetting = []; // ボタン機能提供Elementを保持するClass Instance配列 | |
494 | 768 | for (let cnt = 0; cnt < elePalset.length; cnt++) { |
495 | - this.palSetting[cnt] = new PaletteShapeFunctionButton(); | |
496 | - this.palSetting[cnt].createButtonElement(elePalset[cnt]); | |
497 | - this.palSetting[cnt].setPaletteFunction(palfuncs[cnt]); | |
769 | + this.palSetting[cnt] = new PaletteShapeFunctionButton(); // ボタン機能Class Instance生成 | |
770 | + this.palSetting[cnt].createButtonElement(elePalset[cnt]); // ボタンElement生成とパレットに関連付け | |
771 | + this.palSetting[cnt].setPalettePressFunction(palfuncs[cnt]); // ボタン押下で実行する機能の登録 | |
498 | 772 | } |
499 | 773 | /* |
500 | 774 | // 設定パレットは 要素のdrop処理がなく、表示ボタン押下で登録機能を実行する |
@@ -692,7 +966,7 @@ | ||
692 | 966 | evt.stopPropagation(); // event伝播を自分のところで止める(上位に行かなくなる) |
693 | 967 | evt.preventDefault(); // 要素既定のdefault動作を止める |
694 | 968 | // Mouse eventをappAreaからCSSPalに渡してもらうように設定 (evt.targetは必ずpalette要素である前提。子要素なし。) |
695 | - window.appArea.setSingleTouchEventObj(evt.target.dataset.objid, this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
969 | + window.appArea.setSingleTouchEventObj(evt.targetTouches[0].target.dataset.objid, this.mouseMove.bind(this), this.mouseUp.bind(this)); | |
696 | 970 | this.startMovingElement(evt.targetTouches[0]); |
697 | 971 | } |
698 | 972 | startMovingElement(evt){ |
@@ -38,7 +38,9 @@ | ||
38 | 38 | |
39 | 39 | let palsize = document.getElementsByClassName('palsize'); |
40 | 40 | this.paletteSizeChanger = []; |
41 | - this.paletteSizeChanger[0] = new PalGroupSize(palsize[0]); | |
41 | + for (let cnt = 0; cnt < palsize.length; cnt++) { | |
42 | + this.paletteSizeChanger[cnt] = new PalGroupSize(palsize[cnt]); | |
43 | + } | |
42 | 44 | } |
43 | 45 | |
44 | 46 | // 操作関数 ---------------------------- |
@@ -148,6 +150,9 @@ | ||
148 | 150 | this.DOMobject.title = "ドラッグでサイズを変更します"; |
149 | 151 | this.DOMobject.addEventListener('mousedown', this.onMouseDownPalGroupSize.bind(this), false); |
150 | 152 | this.DOMobject.addEventListener('touchstart', this.onTouchStartPalGroupSize.bind(this), false); |
153 | + if (null == this.DOMobject.parentNode) { | |
154 | + console.error('パレットサイズ変更エラー 指定要素の親要素が見つかりません。\nサイズ変更対象が見つからないためパレットのサイズは変更できません'); | |
155 | + } | |
151 | 156 | } |
152 | 157 | |
153 | 158 | onMouseDownPalGroupSize(evt) { |
@@ -167,13 +172,13 @@ | ||
167 | 172 | this.startChangingSize(evt.targetTouches[0]); |
168 | 173 | } |
169 | 174 | startChangingSize(evt) { |
170 | - let target = evt.target.parentNode; | |
175 | + let target = this.DOMobject.parentNode; | |
171 | 176 | this.startLeft = parseInt(target.style.left); |
172 | 177 | this.startTop = parseInt(target.style.top); |
173 | - this.startWidth = parseInt(target.style.width); | |
178 | + this.startWidth = parseInt(target.style.width); | |
174 | 179 | this.startHeight = parseInt(target.style.height); |
175 | - this.startDragX = evt.pageX; | |
176 | - this.startDragY = evt.pageY; | |
180 | + this.startDragX = evt.pageX; | |
181 | + this.startDragY = evt.pageY; | |
177 | 182 | } |
178 | 183 | |
179 | 184 | InputMovePalGroupSize(evt, touchevt) { |
@@ -192,10 +197,10 @@ | ||
192 | 197 | window.renderLoop.requestRenderFunc(this.renderInputMovePalGroupSize.bind(this, eleTarget, this.startLeft, this.startTop, this.startWidth + moveX, this.startHeight + moveY)); |
193 | 198 | } |
194 | 199 | renderInputMovePalGroupSize(eleTarget, left, top, width, height) { |
195 | - eleTarget.style.left = left + "px"; | |
196 | - eleTarget.style.top = top + "px"; | |
197 | - eleTarget.style.width = width + "px"; | |
198 | - eleTarget.style.height = height + "px"; | |
200 | + eleTarget.style.left = left + "px"; | |
201 | + eleTarget.style.top = top + "px"; | |
202 | + eleTarget.style.width = width + "px"; | |
203 | + eleTarget.style.height = height + "px"; | |
199 | 204 | } |
200 | 205 | |
201 | 206 | InputUpPalGroupSize(evt, touchevt) { |
@@ -0,0 +1,60 @@ | ||
1 | +パレット要素にドロップする Text file format | |
2 | + | |
3 | +File Types | |
4 | + Style Style指定のみ | |
5 | + Action Style + Animation | |
6 | + | |
7 | +Items | |
8 | + [Section] [Data] [Regex Key] [Times] | |
9 | + Comment Text "Comment" many times | |
10 | + Types "Style"/"Action" "Types" only once | |
11 | + Description Text "Description" only once | |
12 | + Rule Text "Rule" only once | |
13 | + Keyframe Text "Keyframe" only once | |
14 | + Picture data scheme "Picture" only once | |
15 | + | |
16 | + | |
17 | +Block | |
18 | + 定義領域の前後を定型文字列で囲む | |
19 | + | |
20 | + [<Regex Key> Start] | |
21 | + 各種定義テキスト | |
22 | + [<Regex Key> End] | |
23 | + | |
24 | + 例: | |
25 | + [Types Start] | |
26 | + Style | |
27 | + [Types End] | |
28 | + [Description Start] | |
29 | + 定義ファイルの内容説明文章 | |
30 | + [Description End] | |
31 | + | |
32 | + | |
33 | +Rule定義について | |
34 | + 疑似要素は使えない | |
35 | + 最初の "{" から "}" の内容を読みこむ | |
36 | + | |
37 | + 例 | |
38 | + [Rule Start] | |
39 | + dummy { | |
40 | + border-radius: 50%; | |
41 | + } | |
42 | + [Rule End] | |
43 | + | |
44 | + | |
45 | +Keyframe定義について | |
46 | + Types が Action の場合のみ有効 | |
47 | + | |
48 | + 例 | |
49 | + [Keyframe Start] | |
50 | + dummy { | |
51 | + animation: balloon 0.4s linear 0.5s 1; | |
52 | + transform-origin: 0 100%; | |
53 | + } | |
54 | + @keyframes balloon { | |
55 | + 0% {transform: scaleX(0.0) scaleY(0.0) rotateZ(20deg);} | |
56 | + 50% {transform: scaleX(0.5) scaleY(0.5) rotateZ(30deg);} | |
57 | + 100% {transform: scaleX(1.0) scaleY(1.0) rotateZ(0deg);} | |
58 | + } | |
59 | + [Keyframe End] | |
60 | + |
@@ -33,7 +33,9 @@ | ||
33 | 33 | DispObj user setting default visible absolute 300 |
34 | 34 | focusbar フォーカス要素 default default visible absolute 500 |
35 | 35 | PalGroup パレット要素 grouping default default visible absolute 1000 |
36 | - palbg 背景画像設定 drop file default visible absolute 1100 | |
36 | + palflex ボタン表示領域 gray 50% 90% x 75% 動的 relative | |
37 | + palbg ボタン配置 transparent 60px x 60px visible relative | |
38 | + palbutton ドラッグ可能ボタン picture inherit visible absolute | |
37 | 39 | paltxtcol テキスト色設定 drop file default visible absolute 1100 |
38 | 40 | palaction 動き設定 drop file default visible absolute 1100 |
39 | 41 |