回答編集履歴

4

Tween中なら一旦止める処理を 追加

2018/11/29 08:23

投稿

colling
colling

スコア798

test CHANGED
@@ -162,6 +162,8 @@
162
162
 
163
163
  function handleDown(event) {
164
164
 
165
+ createjs.Tween.removeTweens(myObj);//Tween中なら一旦止める処理を 追加
166
+
165
167
  // ドラッグを開始した座標を覚えておく
166
168
 
167
169
  dragPointX = stage.mouseX - myObj.x;

3

ログ追記

2018/11/29 08:23

投稿

colling
colling

スコア798

test CHANGED
@@ -162,8 +162,6 @@
162
162
 
163
163
  function handleDown(event) {
164
164
 
165
- console.log('down');
166
-
167
165
  // ドラッグを開始した座標を覚えておく
168
166
 
169
167
  dragPointX = stage.mouseX - myObj.x;
@@ -176,6 +174,8 @@
176
174
 
177
175
  startTime = new Date();//追加
178
176
 
177
+ console.log('down >' + ' down時X:'+dragStartX+' down時Y:'+dragStartY);
178
+
179
179
  }
180
180
 
181
181
  function handleMove(event) {
@@ -208,6 +208,8 @@
208
208
 
209
209
  var moveTime = toTime*4;//どのぐらいの時間をかけて移動するか
210
210
 
211
+ console.log(' 目標位置X:'+(dragStartX +((myObj.x-dragStartX)*3))+' 目標位置Y:'+(dragStartY + ((myObj.y-dragStartY)*3))+' 移動時間:'+(toTime*4));
212
+
211
213
  createjs.Tween.get(myObj).to({x: slideX,y:slideY }, moveTime,createjs.Ease.cubicOut);
212
214
 
213
215
  }

2

追記

2018/11/29 08:13

投稿

colling
colling

スコア798

test CHANGED
@@ -73,3 +73,169 @@
73
73
  ```
74
74
 
75
75
  ※ 移動距離の3倍と時間の4倍はなんとなくの数字です。
76
+
77
+
78
+
79
+
80
+
81
+ ---
82
+
83
+ 動かしてみた↓ 全文
84
+
85
+ ```html
86
+
87
+ <html>
88
+
89
+ <head>
90
+
91
+ <meta charset="utf-8" />
92
+
93
+ <script src="https://code.createjs.com/1.0.0/createjs.min.js"></script>
94
+
95
+ <style>
96
+
97
+ #myCanvas{
98
+
99
+ width:100vw;
100
+
101
+ height:100vh;
102
+
103
+ }
104
+
105
+ </style>
106
+
107
+ <script>
108
+
109
+ window.addEventListener("load", init);
110
+
111
+ function init() {
112
+
113
+ var stage = new createjs.Stage("myCanvas");
114
+
115
+ stage.canvas.width = window.innerWidth;
116
+
117
+ stage.canvas.height = window.innerHeight;
118
+
119
+
120
+
121
+ // ドラッグした場所を保存する変数
122
+
123
+ var dragPointX;
124
+
125
+ var dragPointY;
126
+
127
+ // シェイプを作成
128
+
129
+ var myObj = new createjs.Shape();
130
+
131
+ myObj.graphics.beginFill("coral").drawRect(0, 0, 100, 100);
132
+
133
+ stage.addChild(myObj);
134
+
135
+ myObj.x = 0;
136
+
137
+ myObj.y = 0;
138
+
139
+
140
+
141
+ myObj.addEventListener("mousedown", handleDown);
142
+
143
+ myObj.addEventListener("pressmove", handleMove);
144
+
145
+
146
+
147
+ //三行追加
148
+
149
+ myObj.addEventListener("pressup", handleUp);
150
+
151
+ var dragStartX;//ドラッグ開始時(mousedown)のObject位置を保持
152
+
153
+ var dragStartY;//ドラッグ終了時(pressup)のObject位置を保持
154
+
155
+ var startTime;//ドラッグ開始時(mousedown)の時間
156
+
157
+ var endTime;//ドラッグ終了時(pressup)の時間
158
+
159
+
160
+
161
+
162
+
163
+ function handleDown(event) {
164
+
165
+ console.log('down');
166
+
167
+ // ドラッグを開始した座標を覚えておく
168
+
169
+ dragPointX = stage.mouseX - myObj.x;
170
+
171
+ dragPointY = stage.mouseY - myObj.y;
172
+
173
+ dragStartX = myObj.x;//追加
174
+
175
+ dragStartY = myObj.y;//追加
176
+
177
+ startTime = new Date();//追加
178
+
179
+ }
180
+
181
+ function handleMove(event) {
182
+
183
+ // 表示オブジェクトはマウス座標に追随する
184
+
185
+ // ただしドラッグ開始地点との補正をいれておく
186
+
187
+ myObj.x = stage.mouseX - dragPointX;
188
+
189
+ myObj.y = stage.mouseY - dragPointY;
190
+
191
+ }
192
+
193
+ //function handleUp 追加
194
+
195
+ function handleUp(event) {
196
+
197
+ endTime = new Date();
198
+
199
+ var toTime = endTime.getTime() - startTime.getTime();
200
+
201
+ console.log('up >' + ' かかった時間'+toTime+' 終了時X:'+myObj.x+' 終了時Y:'+myObj.y+' 移動した距離X:'+(myObj.x-dragStartX)+' 移動した距離Y:'+(myObj.y-dragStartY));
202
+
203
+ //目的地の座標はmousedown時のmyObj座標からpressup時のmyObj座標の(3倍とする)
204
+
205
+ var slideX = (dragStartX +((myObj.x-dragStartX)*3));//目的地ドラッグ移動した距離の3倍
206
+
207
+ var slideY = (dragStartY + ((myObj.y-dragStartY)*3));
208
+
209
+ var moveTime = toTime*4;//どのぐらいの時間をかけて移動するか
210
+
211
+ createjs.Tween.get(myObj).to({x: slideX,y:slideY }, moveTime,createjs.Ease.cubicOut);
212
+
213
+ }
214
+
215
+ // 時間経過
216
+
217
+ createjs.Ticker.addEventListener("tick", handleTick);
218
+
219
+ function handleTick() {
220
+
221
+ stage.update(); // 画面更新
222
+
223
+ }
224
+
225
+ }
226
+
227
+ </script>
228
+
229
+ </head>
230
+
231
+
232
+
233
+ <body>
234
+
235
+ <canvas id="myCanvas"></canvas>
236
+
237
+ </body>
238
+
239
+ </html>
240
+
241
+ ```

1

修正 ちょい修正

2018/11/29 05:29

投稿

colling
colling

スコア798

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```javascript
18
18
 
19
- //行追加
19
+ //4行追加
20
20
 
21
21
  myObj.addEventListener("pressup", handleUp);
22
22