⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slider.js

📁 YahooUI,搞WEB开发的朋友值得看一看
💻 JS
📖 第 1 页 / 共 2 页
字号:
		var oAnim = new YAHOO.util.Motion(                 t.id, { points: { to: p } }, 0.4, YAHOO.util.Easing.easeOut );		oAnim.onComplete.subscribe( function() { self.endAnim(); } );		oAnim.animate();	} else {		t.setDragElPos(x, y);		this.fireEvents();	}};/** * Move the slider one tick mark towards its final coordinate.  Used * for the animation when tick marks are defined * * @param {int[]} the destination coordinate * @private */YAHOO.widget.Slider.prototype.moveOneTick = function(finalCoord) {	var t = this.thumb;	var curCoord = YAHOO.util.Dom.getXY(t.getEl());	var tmp;    // var thresh = Math.min(t.tickSize + (Math.floor(t.tickSize/2)), 10);    // var thresh = 10;    // var thresh = t.tickSize + (Math.floor(t.tickSize/2));	var nextCoord = null;	if (t._isRegion) {        nextCoord = this._getNextX(curCoord, finalCoord);		var tmpX = (nextCoord) ? nextCoord[0] : curCoord[0];        nextCoord = this._getNextY([tmpX, curCoord[1]], finalCoord);	} else if (t._isHoriz) {        nextCoord = this._getNextX(curCoord, finalCoord);	} else {        nextCoord = this._getNextY(curCoord, finalCoord);	}	// this.logger.debug("moveOneTick: " + 			// " finalCoord: " + finalCoord +			// " curCoord: " + curCoord +			// " nextCoord: " + nextCoord);	if (nextCoord) {		// move to the next coord		YAHOO.util.Dom.setXY(t.getEl(), nextCoord);				// check if we are in the final position, if not make a recursive call		if (!(nextCoord[0] == finalCoord[0] && nextCoord[1] == finalCoord[1])) {			var self = this;			setTimeout(function() { self.moveOneTick(finalCoord); }, 					this.tickPause);		} else {			// all done			//this.thumb._animating = false;			this.unlock();			this.fireEvents();		}	} else {		// all done		// this.thumb._animating = false;		this.unlock();		this.fireEvents();	}	//this.tickPause = Math.round(this.tickPause/2);};YAHOO.widget.Slider.prototype._getNextX = function(curCoord, finalCoord) {    var t = this.thumb;    //var thresh = t.tickSize;    // var thresh = t.tickSize + (Math.floor(t.tickSize/2));    // var thresh = t.tickSize + this.thumbCenterPoint.x;    var thresh;    var tmp = [];    var nextCoord = null;    if (curCoord[0] > finalCoord[0]) {        thresh = t.tickSize - this.thumbCenterPoint.x;        tmp = t.getTargetCoord( curCoord[0] - thresh, curCoord[1] );        nextCoord = [tmp.x, tmp.y];    } else if (curCoord[0] < finalCoord[0]) {        thresh = t.tickSize + this.thumbCenterPoint.x;        tmp = t.getTargetCoord( curCoord[0] + thresh, curCoord[1] );        nextCoord = [tmp.x, tmp.y];    } else {        // equal, do nothing    }    return nextCoord;};YAHOO.widget.Slider.prototype._getNextY = function(curCoord, finalCoord) {    var t = this.thumb;    // var thresh = t.tickSize;    // var thresh = t.tickSize + this.thumbCenterPoint.y;    var thresh;    var tmp = [];    var nextCoord = null;    if (curCoord[1] > finalCoord[1]) {        thresh = t.tickSize - this.thumbCenterPoint.y;        tmp = t.getTargetCoord( curCoord[0], curCoord[1] - thresh );        nextCoord = [tmp.x, tmp.y];    } else if (curCoord[1] < finalCoord[1]) {        thresh = t.tickSize + this.thumbCenterPoint.y;        tmp = t.getTargetCoord( curCoord[0], curCoord[1] + thresh );        nextCoord = [tmp.x, tmp.y];    } else {        // equal, do nothing    }    return nextCoord;};/** * Resets the constraints before moving the thumb. * @private */YAHOO.widget.Slider.prototype.b4MouseDown = function(e) {    this.thumb.resetConstraints();};/** * Handles the mousedown event for the slider background * * @private */YAHOO.widget.Slider.prototype.onMouseDown = function(e) {    // this.resetConstraints(true);    // this.thumb.resetConstraints(true);	if (! this.isLocked()) {		var x = YAHOO.util.Event.getPageX(e);		var y = YAHOO.util.Event.getPageY(e);		this.logger.debug("bg mousedown: " + x + "," + y);		this.moveThumb(x, y);		this.focus();	}	};/** * Handles the onDrag event for the slider background * * @private */YAHOO.widget.Slider.prototype.onDrag = function(e) {	if (! this.isLocked()) {		var x = YAHOO.util.Event.getPageX(e);		var y = YAHOO.util.Event.getPageY(e);		this.moveThumb(x, y, true);	}};/** * Fired when the animation ends * * @private */YAHOO.widget.Slider.prototype.endAnim = function () {	// this._animating = false;	this.unlock();	this.fireEvents();	};/** * Fires the change event if the value has been changed.  Ignored if we are in * the middle of an animation as the event will fire when the animation is * complete * * @private */YAHOO.widget.Slider.prototype.fireEvents = function () {	var t = this.thumb;	// this.logger.debug("FireEvents: " + t._isRegion);	t.cachePosition();	if (! this.isLocked()) {		if (t._isRegion) {			this.logger.debug("region");			var newX = t.getXValue();			var newY = t.getYValue();			if (newX != this.previousX || newY != this.previousY) {				// this.logger.debug("Firing onchange");				this.onChange( newX, newY );			}			this.previousX = newX;			this.previousY = newY;		} else {			var newVal = t.getValue();			if (newVal != this.previousVal) {				// this.logger.debug("Firing onchange");				this.onChange( newVal );			}			this.previousVal = newVal;		}		if (this._deferSlideEnd) {			this.onSlideEnd();			this._deferSlideEnd = false;		}	}};/** * @class The handle or thumb of the slider * * @extends YAHOO.util.DD * @constructor * @param {String} id the id of the slider html element * @param {String} sGroup the group of related DragDrop items * @param {int} iLeft the number of pixels the element can move left * @param {int} iRight the number of pixels the element can move right * @param {int} iUp the number of pixels the element can move up * @param {int} iDown the number of pixels the element can move down * @param {int} iTickSize optional parameter for specifying that the element  * should move a certain number pixels at a time. */YAHOO.widget.SliderThumb = function(id, sGroup, iLeft, iRight, iUp, iDown, iTickSize) {	if (id) {		this.init(id, sGroup);        this.parentElId = sGroup;		/**		 * @private		 */		this.logger = new ygLogger("SliderThumb " + id);		this.initSlider(iLeft, iRight, iUp, iDown, iTickSize);	}	/**	 * Overrides the isTarget property in YAHOO.util.DragDrop	 * @private	 */	this.isTarget = false;	this.tickSize = iTickSize;    this.maintainOffset = true;};YAHOO.widget.SliderThumb.prototype = new YAHOO.util.DD();YAHOO.widget.SliderThumb.prototype.getOffsetFromParent = function() {    var myPos     = YAHOO.util.Dom.getXY(this.getEl());    var parentPos = YAHOO.util.Dom.getXY(this.parentElId);    return [ (myPos[0] - parentPos[0]), (myPos[1] - parentPos[1]) ];};YAHOO.widget.SliderThumb.prototype.startOffset = null;/** * Flag used to figure out if this is a horizontal or vertical slider * * @type boolean * @private */YAHOO.widget.SliderThumb.prototype._isHoriz = false;/** * Cache the last value so we can check for change * * @type int * @private */YAHOO.widget.SliderThumb.prototype._prevVal = 0;/** * initial element X * * @type int * @private */// YAHOO.widget.SliderThumb.prototype._initX = 0;/** * initial element Y * * @type int * @private */// YAHOO.widget.SliderThumb.prototype._initY = 0;/** * The slider is _graduated if there is a tick interval defined * * @type boolean * @private */YAHOO.widget.SliderThumb.prototype._graduated = false;/** * Set up the slider, must be called in the constructor of all subclasses * * @param {int} iLeft the number of pixels the element can move left * @param {int} iRight the number of pixels the element can move right * @param {String} sValElId the id of the element used for the value display */YAHOO.widget.SliderThumb.prototype.initSlider = function (iLeft, iRight, iUp, iDown, 		iTickSize) {	this.logger.debug("Slider init");	this.setXConstraint(iLeft, iRight, iTickSize);	this.setYConstraint(iUp, iDown, iTickSize);	if (iTickSize && iTickSize > 1) {		this._graduated = true;	}	this._isHoriz = (iLeft > 0 || iRight > 0); 	this._isVert   = (iUp > 0 ||  iDown > 0);	this._isRegion = (this._isHoriz && this._isVert); 	// var el = this.getEl();    // this.parentPos = YAHOO.util.getXY(this.parentElId);    this.startOffset = this.getOffsetFromParent();};/** * Gets the current offset from the element's start position in * pixels. * * @return {int} the number of pixels (positive or negative) the * slider has moved from the start position. */YAHOO.widget.SliderThumb.prototype.getValue = function () {    var val = (this._isHoriz) ? this.getXValue() : this.getYValue();    this.logger.debug("getVal: " + val);    return val;};YAHOO.widget.SliderThumb.prototype.getXValue = function () {	// return (YAHOO.util.Dom.getX(this.getEl()) - this.initPageX);    var newOffset = this.getOffsetFromParent();	return (newOffset[0] - this.startOffset[0]);};YAHOO.widget.SliderThumb.prototype.getYValue = function () {	// return (YAHOO.util.Dom.getY(this.getEl()) - this.initPageY);    var newOffset = this.getOffsetFromParent();	return (newOffset[1] - this.startOffset[1]);};/** * The onchange event for the handle/thumb is delegated to the YAHOO.widget.Slider * instance it belongs to. * * @private */YAHOO.widget.SliderThumb.prototype.onChange = function (x, y) { };if ("undefined" == typeof YAHOO.util.Anim) {	YAHOO.widget.Slider.ANIM_AVAIL = false;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -