0445: keyPress: function(event) {
0446: if(event.keyCode!=Event.KEY_ESC) return;
0447: this.finishDrag(event, false);
0448: Event.stop(event);
0449: },
0450:
445~450行目のkeyPressは,
447行目で,
0451: endDrag: function(event) {
0452: if(!this.dragging) return;
0453: this.stopScrolling();
0454: this.finishDrag(event, true);
0455: Event.stop(event);
0456: },
0457:
451~457行目のendDragは,
453行目で,
454行目で,
0458: draw: function(point) {
0459: var pos = Position.cumulativeOffset(this.element);
0460: if(this.options.ghosting) {
0461: var r = Position.realOffset(this.element);
0462: pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
0463: }
0464:
0465: var d = this.currentDelta();
0466: pos[0] -= d[0]; pos[1] -= d[1];
0467:
0468: if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
0469: pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
0470: pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
0471: }
0472:
0473: var p = [0,1].map(function(i){
0474: return (point[i]-pos[i]-this.offset[i])
0475: }.bind(this));
0476:
0477: if(this.options.snap) {
0478: if(Object.isFunction(this.options.snap)) {
0479: p = this.options.snap(p[0],p[1],this);
0480: } else {
0481: if(Object.isArray(this.options.snap)) {
0482: p = p.map( function(v, i) {
0483: return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this))
0484: } else {
0485: p = p.map( function(v) {
0486: return (v/this.options.snap).round()*this.options.snap }.bind(this))
0487: }
0488: }}
0489:
0490: var style = this.element.style;
0491: if((!this.options.constraint) || (this.options.constraint=='horizontal'))
0492: style.left = p[0] + "px";
0493: if((!this.options.constraint) || (this.options.constraint=='vertical'))
0494: style.top = p[1] + "px";
0495:
0496: if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
0497: },
0498:
458~498行目のdraw関数は,
459行目のPosition.
460~463行目では,
466行目で,
468~471行目で,
473行目で,
477~488行目で,
478行目で,
481行目で,
484行目で,
490~494行目で,
0499: stopScrolling: function() {
0500: if(this.scrollInterval) {
0501: clearInterval(this.scrollInterval);
0502: this.scrollInterval = null;
0503: Draggables._lastScrollPointer = null;
0504: }
0505: },
0506:
499~506行目のstopScrollingは,
501行目で,