У меня проблема, связанная с анимацией greensock, но также может быть более общей проблемой js, поскольку мне нужно передать событие mousedown второму перетаскиваемому экземпляру после уничтожения первого перетаскиваемого экземпляра.greensock draggable/triggering click and drag
codepen надеюсь, будет иллюстрировать то, что я пытаюсь сделать .. код внизу.
URL Codepen: http://codepen.io/anon/pen/ypdGn
var detachdraggable;
var rotatedraggable;
function makeRotateDraggable() {
// create rotate draggable for the cards..
rotatedraggable = Draggable.create(".dragclone", {
type:"rotation",
throwProps:true,
dragResistance : 0,
edgeResistance : 1,
bounds:{minRotation:-60, maxRotation:60},
onDragStart : function() {
var $el = $(this.target);
var cardStartAngle = $el.data('startangle');
},
onDrag: function() {
currentCardAngle = this.rotation;
var $el = $(this.target);
var cardStartAngle = $el.data('startangle');
cardDirection = (currentCardAngle > cardStartAngle) ? "up":"down";
cardTravelDegrees = Math.abs(currentCardAngle - cardStartAngle);
this.vars.type = "x";
},
onDragEnd: function() {
},
onClick: function() {
return false;
}
});
$('.dragclone').mousedown(function() {
$('.dragclone').css('z-index','10');
rotatedraggable[0].enable();
});
$('.dragclone').mouseout(function() {
detachdraggable[0].disable();
$('.dragclone').trigger('mousedown');
});
$('.dragclone').trigger('mouseout');
}
// first setup the x,y draggable..
detachdraggable = Draggable.create('.dragclone', {
type: "x,y",
edgeResistance:1,
throwProps:true,
onPress:function() {
startX = this.x;
startY = this.y;
},
onDrag:function() {
var xChange = this.x - startX,
yChange = this.y - startY,
ratio = Math.abs(xChange/yChange),
direction = [];
// NB:: you can adjust these ratio thresholds to make things
// more or less sensitive to diagonal movement.
if (ratio > 0.25) {
direction.push((xChange < 0) ? "left" : "right");
}
if (ratio < 4) {
direction.push((yChange < 0) ? "up" : "down");
}
if(direction[0] == "left") {
// TweenMax.to($('.cloned'), .0001, {right:-xChange + 135});
}
// moving up so lets switch cards !!
if(direction[0] == "up") {
if(Math.abs(yChange) > 20) {
makeRotateDraggable();
}
}
},
onDragEnd:function() {
// driftDragCardBack();
// if(!cardPopping) { driftClonedCardBack(); }
},
onThrowComplete: function() {
}
});
Я боролся, чтобы переключаться между установкой 2 draggables на одном элементе, мне интересно, если это вообще возможно. в основном codepen имеет пример того, что я хочу сделать, но он не является бесшовным. draggable - это установка для элемента типа x, y, что я хочу сделать, это когда направление перетаскивания вверх убивает тип x, y draggable и переключается на тип: вращение перетаскивается, так что карта перемещается по оси. вы можете видеть, что моя делает это, но только если вы отпустите, а затем щелкните еще раз - есть ли способ сделать это без проблем, так что он просто переключает середину перетаскивания?
спасибо, Джастин
awesome, спасибо! не могу поверить, что я пропустил это в документах – user1125489