/**
* @module annieUI
*/
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var annieUI;
(function (annieUI) {
var Sprite = annie.Sprite;
var Shape = annie.Shape;
/**
* 滚动视图,有些时候你的内容超过了一屏,需要上下或者左右滑动来查看内容,这个时候,你就应该用它了
* @class annieUI.ScrollPage
* @public
* @extends annie.Sprite
* @since 1.0.0
*/
var ScrollPage = (function (_super) {
__extends(ScrollPage, _super);
/**
* 构造函数
* @method ScrollPage
* @param {annie.DisplayObject} view 需要滚动的显示对象,可为空,为空的话则会自动生成一个显示容器。
* @param {number} viewWidth 可视区域宽
* @param {number} viewHeight 可视区域高
* @param {number} scrollWidth 可滚动的宽度
* @param {number} scrollHeight 可滚动的高度
* @example
* s.sPage=new annieUI.ScrollPage(null,640,1040,640,1040*4);
* s.addChild(s.sPage);
* s.sPage.view.addChild(new home.Content());
* s.sPage.y=s.stage.viewRect.y;
* s.sPage.mouseEnable=false;
*/
function ScrollPage(container, viewWidth, viewHeight, scrollWidth, scrollHeight) {
_super.call(this);
//Event
/**
* annieUI.ScrollPage 组件滑动到开始位置事件
* @event annie.Event.ON_SCROLL_TO_HEAD
* @since 1.1.0
*/
/**
* annieUI.ScrollPage 组件滑动到开始位置事件
* @event annie.Event.ON_SCROLL_ING
* @since 3.1.0
*/
/**
* annieUI.ScrollPage组件停止滑动事件
* @event annie.Event.ON_SCROLL_STOP
* @since 1.1.0
*/
/**
* annieUI.ScrollPage组件开始滑动事件
* @event annie.Event.ON_SCROLL_START
* @since 1.1.0
*/
/**
* annieUI.ScrollPage组件滑动到结束位置事件
* @event annie.Event.ON_SCROLL_TO_END
* @since 1.1.0
*/
// 遮罩对象
this.maskObj = new Shape();
this._view = null;
var s = this;
s._instanceType = "annieUI.ScrollPage";
if (container) {
s._view = container;
}
else {
s._view = new annie.Sprite();
}
s.addChild(s.maskObj);
s.addChild(s._view);
s.view.mask = s.maskObj;
s.maskObj.x = -1;
s.maskObj.y = -1;
s.maskObj["_isUseToMask"] = 0;
s.maskObj.alpha = 0;
s._scroller = new annieUI.Scroller(s, viewWidth, viewHeight, scrollWidth, scrollHeight);
s._scroller.addEventListener(annie.Event.ON_SCROLL_ING, function (e) {
s._view.y = e.data.posY;
s._view.x = e.data.posX;
s.dispatchEvent(e);
});
s._scroller.addEventListener(annie.Event.ON_SCROLL_START, function (e) {
s.dispatchEvent(e);
});
s._scroller.addEventListener(annie.Event.ON_SCROLL_STOP, function (e) {
s.dispatchEvent(e);
});
s._scroller.addEventListener(annie.Event.ON_SCROLL_TO_HEAD, function (e) {
s.dispatchEvent(e);
});
s._scroller.addEventListener(annie.Event.ON_SCROLL_TO_END, function (e) {
s.dispatchEvent(e);
});
s.setViewWH(viewWidth, viewHeight);
}
Object.defineProperty(ScrollPage.prototype, "view", {
/**
* 真正的被滚动的显示对象
* @property view
* @public
* @since 1.0.0
* @type {annie.Sprite}
*/
get: function () {
return this._view;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ScrollPage.prototype, "scroller", {
/**
* scroller滑动控制器
* @property scroller
* @readonly
* @public
* @since 3.1.5
*/
get: function () {
return this._scroller;
},
enumerable: true,
configurable: true
});
/**
* 设置可见区域,可见区域的坐标始终在本地坐标中0,0点位置,如果只需要一个方向上可滑动,可以将view的宽或者高等于滑动的宽或者高
* @method setViewWH
* @param {number}viewWidth 设置可见区域的宽
* @param {number}viewHeight 设置可见区域的高
* @public
* @since 3.1.5
*/
ScrollPage.prototype.setViewWH = function (viewWidth, viewHeight) {
var s = this;
s.maskObj.clear();
s.maskObj.beginFill("#000000");
s.maskObj.drawRect(0, 0, viewWidth + 2, viewHeight + 2);
s.maskObj.endFill();
if (s.scroll) {
s.scroll.setViewWH(viewWidth, viewHeight);
}
};
ScrollPage.prototype.destroy = function () {
var s = this;
s._scroller.destroy();
s._scroller = null;
_super.prototype.destroy.call(this);
};
return ScrollPage;
}(Sprite));
annieUI.ScrollPage = ScrollPage;
})(annieUI || (annieUI = {}));