extjs继承panel实现图片缩放、翻页功能
Ext.onReady(function() {
ImgView = Ext.extend(Ext.Panel, {
height: 740,
img_index: 0,
img_view_id: this.id + '_img',
set_img: function(offset) {
Ext.get(this.img_view_id).dom.src = this.src[this.img_index + offset];
Ext.getCmp(this.id + '_next_btn').disabled = ((this.img_index + offset) == this.src.length - 1) ? true : false;
Ext.getCmp(this.id + '_pre_btn').disabled = ((this.img_index + offset) == 0) ? true : false;
this.img_index = this.img_index + offset;
},
initComponent: function(){
var cmp = this;
this.html='<img id=\'' + this.img_view_id + '\' src=\'' + this.src[0] + '\' ></img>';
this.tbar = [
{text:"上一张", id: this.id + '_pre_btn', handler: function(){
cmp.set_img(-1);
}},
{text:"下一张", id: this.id + '_next_btn', handler: function(){
cmp.set_img(1);
}}];
ImgView.superclass.initComponent.call(this);
},
afterRender: function() {
ImgView.superclass.afterRender.call(this);
Ext.get(this.img_view_id).parent = this;
Ext.get(this.img_view_id).center();
new Ext.dd.DD(Ext.get(this.img_view_id), 'pic');
//Ext.get(this.img_view_id).dom.title='双击放大 右击缩小';
Ext.get(this.img_view_id).on({
'dblclick': {fn: function(){
Ext.get(this).parent.zoom(Ext.get(this), 1.5,true);
}},
'contextmenu': {fn: function(){
Ext.get(this).parent.zoom(Ext.get(this), 1.5,false);
}}
});
},
//放大、缩小
zoom: function(el, offset,type) {
var width = el.getWidth();
var height = el.getHeight();
var nwidth = type ? (width * offset) : (width / offset);
var nheight = type ? (height * offset) : (height / offset);
var left = type ? -((nwidth - width) / 2):((width - nwidth) / 2);
var top = type ? -((nheight - height) / 2):((height - nheight) / 2);
el.animate(
{
height: {to: nheight, from: height},
width: {to: nwidth, from: width},
left: {by:left},
top: {by:top}
},
null,
null,
'backBoth',
'motion'