如何使对象跳转到 mousedown 的 cursor/touch 位置?
How to make object jump to cursor/touch position on mousedown?
基于 createjs drag and drop demo,我正在努力使圆跳转到鼠标按下时 cursor/touch 的位置。
我设法使拖动工作,但不知道如何使圆跳转到位置。
createjs.Touch.enable(stage);
this.circle_mc.on("pressmove", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
evt.currentTarget.x = point.x;
evt.currentTarget.y = point.y;
stage.update();
});
谁能帮它做这样的事情?
更新:设法在动画中使用此代码使其工作:
var _this = this;
stage.on("stagemousedown", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
_this.circle_mc.x = point.x;
_this.circle_mc.y = point.y;
var moveAround = stage.on("stagemousemove", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
_this.circle_mc.x = point.x;
_this.circle_mc.y = point.y;
});
stage.on("stagemouseup", function (evt) {
stage.off("stagemousemove", moveAround)
}, null, true)
});
您可以轻松做到这一点,但您必须 re-make 拖动移动,因为默认情况下它需要在对象上按下鼠标才能将其启动。您还必须直接引用目标而不是依赖事件目标。
stage.on("stagemousedown", function(e){
s.x = e.stageX; s.y = e.stageY;
// Handle move
var evt = stage.on("stagemousemove", function(e) {
// Set to mouse position each move
s.x = e.stageX; s.y = e.stageY;
});
// Handle release
stage.on("stagemouseup", function(e) {
stage.off("stagemousemove", evt)
}, null, true)
});
这里有一个快速 fiddle 有更好的评论。
https://jsfiddle.net/lannymcnie/fn3gve74/1/
基于 createjs drag and drop demo,我正在努力使圆跳转到鼠标按下时 cursor/touch 的位置。
我设法使拖动工作,但不知道如何使圆跳转到位置。
createjs.Touch.enable(stage);
this.circle_mc.on("pressmove", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
evt.currentTarget.x = point.x;
evt.currentTarget.y = point.y;
stage.update();
});
谁能帮它做这样的事情?
更新:设法在动画中使用此代码使其工作:
var _this = this;
stage.on("stagemousedown", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
_this.circle_mc.x = point.x;
_this.circle_mc.y = point.y;
var moveAround = stage.on("stagemousemove", function (evt) {
var point = stage.globalToLocal(evt.stageX, evt.stageY)
_this.circle_mc.x = point.x;
_this.circle_mc.y = point.y;
});
stage.on("stagemouseup", function (evt) {
stage.off("stagemousemove", moveAround)
}, null, true)
});
您可以轻松做到这一点,但您必须 re-make 拖动移动,因为默认情况下它需要在对象上按下鼠标才能将其启动。您还必须直接引用目标而不是依赖事件目标。
stage.on("stagemousedown", function(e){
s.x = e.stageX; s.y = e.stageY;
// Handle move
var evt = stage.on("stagemousemove", function(e) {
// Set to mouse position each move
s.x = e.stageX; s.y = e.stageY;
});
// Handle release
stage.on("stagemouseup", function(e) {
stage.off("stagemousemove", evt)
}, null, true)
});
这里有一个快速 fiddle 有更好的评论。 https://jsfiddle.net/lannymcnie/fn3gve74/1/