質問編集履歴

2

詰まっているコードの詳細説明

2016/08/07 11:25

投稿

KyoheiTsuno
KyoheiTsuno

スコア17

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,58 @@
28
28
 
29
29
  ```
30
30
 
31
+
32
+
33
+ HTMLで作ったloadボタンを押した時、localStorageに保存した
34
+
35
+ データを呼び出して表示させたいのですが、反応がありませんでした。localStorage.setItem自体は機能しており、描いた線は
36
+
37
+ toDataURLでpngに変換してimg要素にしています。
38
+
39
+
40
+
41
+ <!-- 描画した線を呼び出すボタン -->
42
+
43
+ <button id="load_btn">ロード</button>
44
+
45
+
46
+
47
+ // 描いた線を保存する
48
+
49
+
50
+
51
+ $("#save_btn").on("click",function(){
52
+
53
+ var canvas = document.createElement("canvas");
54
+
55
+ var url = canvas.toDataURL();
56
+
57
+ localStorage.setItem("save",url);
58
+
59
+ });
60
+
61
+
62
+
63
+ // 描いた線を呼び出す
64
+
65
+ $("#load_btn").on("click",function(){
66
+
67
+ var url = window.localStorage.getItem("save");
68
+
69
+ var image = new Image();
70
+
71
+ image.onload = function(){
72
+
73
+ context.drawImage(image, 0, 0);
74
+
75
+ };
76
+
77
+ image.src = url;
78
+
79
+ });
80
+
81
+
82
+
31
83
  エラーメッセージ
32
84
 
33
85
  ```
@@ -332,7 +384,7 @@
332
384
 
333
385
  課題に対してアプローチしたことを記載してください
334
386
 
335
-
387
+ canvas localStorageで検索して、ひたすら良いやり方はないか調べましたが、実装しても上手くいきませんでした。
336
388
 
337
389
  ###補足情報(言語/FW/ツール等のバージョンなど)
338
390
 

1

テンプレートに記述

2016/08/07 11:25

投稿

KyoheiTsuno
KyoheiTsuno

スコア17

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,329 @@
11
11
 
12
12
 
13
13
  が、どう対応したら良いか分からず、数日過ぎてしまった所です...
14
+
15
+ ###前提・実現したいこと
16
+
17
+ ここに質問したいことを詳細に書いてください
18
+
19
+ (例)PHP(CakePHP)で●●なシステムを作っています。
20
+
21
+ ■■な機能を実装中に以下のエラーメッセージが発生しました。
22
+
23
+
24
+
25
+ ###発生している問題・エラーメッセージ
26
+
27
+ 「load」ボタンで保存した画像を呼び出したいが、機能しない
28
+
29
+ ```
30
+
31
+ エラーメッセージ
32
+
33
+ ```
34
+
35
+
36
+
37
+ ###該当のソースコード
38
+
39
+ ```ここに言語を入力
40
+
41
+ HTML5.Javascript,jQuery,canvas
42
+
43
+ ```
44
+
45
+ ここにご自身が実行したソースコードを書いてください
46
+
47
+ ```
48
+
49
+
50
+
51
+ <!DOCTYPE html>
52
+
53
+ <html>
54
+
55
+ <head>
56
+
57
+ <meta charset="utf-8">
58
+
59
+ <title>canvas.html</title>
60
+
61
+ </head>
62
+
63
+ <body>
64
+
65
+ <section>
66
+
67
+ <h1>Canvas</h1>
68
+
69
+ <nav>
70
+
71
+ <!-- 線の色を変更するHTML要素 -->
72
+
73
+ <select name="color" id="selectbox">
74
+
75
+ <option value="#f52c09">赤</option>
76
+
77
+ <option value="#000000">黒</option>
78
+
79
+ <option value="#4325f7">青</option>
80
+
81
+ </select>
82
+
83
+
84
+
85
+ <!-- 線の太さを変更するHTML要素 -->
86
+
87
+ <input type="range" id="line_bold" min="1" max="10">
88
+
89
+
90
+
91
+ <!-- 描画した線を消すクリアボタン-->
92
+
93
+ <button id="clear_btn">クリア</button>
94
+
95
+
96
+
97
+ <!-- 描画した線を保存するボタン -->
98
+
99
+ <button id="save_btn">セーブ</button>
100
+
101
+
102
+
103
+ <!-- 描画した線を呼び出すボタン -->
104
+
105
+ <button id="load_btn">ロード</button>
106
+
107
+
108
+
109
+ </nav>
110
+
111
+ <canvas id="drawarea" width="500" height="500" style="border:1px solid blue;"></canvas>
112
+
113
+ </section>
114
+
115
+
116
+
117
+ <script src="js/jquery-2.1.3.min.js"></script>
118
+
119
+ <script>
120
+
121
+ //初期化
122
+
123
+ var canvas_mouse_event = false; //スイッチ [ true=線を引く, false=線は引かない ] ***
124
+
125
+ var txy = 10; //iPadなどは15+すると良いかも
126
+
127
+ var oldX = 0; //1つ前の座標を代入するための変数
128
+
129
+ var oldY = 0; //1つ前の座標を代入するための変数
130
+
131
+ var bold_line = 3; //ラインの太さをここで指定
132
+
133
+ var color = "#f00"; //ラインの色をここで指定
134
+
135
+
136
+
137
+ var can = $("#drawarea")[0];
138
+
139
+ console.log(can);
140
+
141
+ var context = can.getContext("2d");
142
+
143
+
144
+
145
+ //MouseDown:フラグをTrue
146
+
147
+ $(can).on("mousedown", function(e){
148
+
149
+ oldX = e.offsetX;
150
+
151
+ oldY = e.offsetY - txy;
152
+
153
+ canvas_mouse_event=true;
154
+
155
+ window.localStorage.setItem("save", can.toDataURL());
156
+
157
+ });
158
+
159
+
160
+
161
+ // 線の色を変更する
162
+
163
+
164
+
165
+ $("#selectbox").on("change",function(){
166
+
167
+ color = $(this).val();
168
+
169
+ });
170
+
171
+
172
+
173
+ //MouseMove:マウスをクリックされているか、されていないかチェックする
174
+
175
+ $(can).on("mousemove", function (e){
176
+
177
+ if(canvas_mouse_event==true){
178
+
179
+ var px = e.offsetX;
180
+
181
+ var py = e.offsetY - txy;
182
+
183
+ context.strokeStyle = color;
184
+
185
+ context.lineWidth = bold_line;
186
+
187
+ context.beginPath();
188
+
189
+ context.lineJoin= "round";
190
+
191
+ context.lineCap = "round";
192
+
193
+ context.moveTo(oldX, oldY);
194
+
195
+ context.lineTo(px, py);
196
+
197
+ context.stroke();
198
+
199
+ context.closePath();
200
+
201
+ //context.drawImage(image,50,50);
202
+
203
+ oldX = px;
204
+
205
+ oldY = py;
206
+
207
+ }
208
+
209
+ });
210
+
211
+
212
+
213
+ //MouseUp:フラグをfalse
214
+
215
+ $(can).on("mouseup", function(e){
216
+
217
+ canvas_mouse_event=false;
218
+
219
+ });
220
+
221
+
222
+
223
+ //Mouseleave:マウスが描画エリアから外れたらフラグをfalseにする
224
+
225
+ $(can).on("mouseleave", function(e){
226
+
227
+ canvas_mouse_event=false;
228
+
229
+ });
230
+
231
+
232
+
233
+ //描いた線を消す
234
+
235
+
236
+
237
+ $("#clear_btn").on("click",function (){
238
+
239
+ context.beginPath();
240
+
241
+ context.clearRect(0, 0, can.width, can.height);
242
+
243
+ });
244
+
245
+
246
+
247
+ //文字の太さを変更する
248
+
249
+
250
+
251
+ $("#line_bold").on("change",function(){
252
+
253
+ bold_line = $(this).val();
254
+
255
+ });
256
+
257
+
258
+
259
+ // 描いた線を保存する
260
+
261
+
262
+
263
+ $("#save_btn").on("click",function(){
264
+
265
+ var canvas = document.createElement("canvas");
266
+
267
+ var url = canvas.toDataURL();
268
+
269
+ localStorage.setItem("save",url);
270
+
271
+ });
272
+
273
+
274
+
275
+ // 描いた線を呼び出す
276
+
277
+
278
+
279
+ $("#load_btn").on("click",function(){
280
+
281
+ var url = window.localStorage.getItem("save");
282
+
283
+ var image = new Image();
284
+
285
+ image.onload = function(){
286
+
287
+ context.drawImage(image, 0, 0);
288
+
289
+ };
290
+
291
+
292
+
293
+ image.src = url;
294
+
295
+
296
+
297
+ });
298
+
299
+
300
+
301
+ // var img = new Image();
302
+
303
+ // img.src = localStorage.getItem("save");
304
+
305
+ // img.onload = function(){
306
+
307
+ // console.log(img.src);
308
+
309
+
310
+
311
+ // var drawarea = document.getElementById("drawarea");
312
+
313
+ // var context = drawarea.getContext("2d");
314
+
315
+ // context.drawImage(img, 0, 0);
316
+
317
+
318
+
319
+ </script>
320
+
321
+ </body>
322
+
323
+ </html>
324
+
325
+
326
+
327
+ ```
328
+
329
+
330
+
331
+ ###試したこと
332
+
333
+ 課題に対してアプローチしたことを記載してください
334
+
335
+
336
+
337
+ ###補足情報(言語/FW/ツール等のバージョンなど)
338
+
339
+ より詳細な情報