ExtJs 通过滑块对图层应用不透明度
ExtJs Apply an opacity to layer by slider
我想对之前保存的图层应用透明度,为此我有一个树面板,其中包含列出的所有图层,并且通过 itemcontextmenu 事件我放置了一个滑块来管理不透明度,当我 select改变图层不透明度的第一个元素效果很好,但是当我 select 另一个 item/element 时,不透明度仍然设置为第一个元素.....
例如:
第一个元素 selected(工作正常):
下一个元素 selected(它仍然使用前一个元素):
我有这个代码:
initComponent: function() {
var anchoPanatallaRes = window.screen.width;
var altoPantallaRes = window.screen.height;
var anchoTOC = 330;
var altoTOC = 473;
if (anchoPanatallaRes <= 1024) {
anchoTOC = 282;
altoTOC = 373;
}
function addUrl(value, p, record) {
return value ? Ext.String.format(
'<a href="'+value+'"target="_blank"'+'>Ver metadato'+'</a>'
):'';
}
var treeStore = Ext.getStore('capa');
var tree = Ext.create('Ext.tree.Panel', {
title: '',
id: "arbolTabla",
width: anchoTOC,
height: altoTOC,
reserveScrollbar: true,
loadMask: true,
useArrows: true,
rootVisible: false,
store: 'capa',
allowDeselect : true,
border : true,
animate: true,
columns: [{
xtype: 'treecolumn',
text: 'Capa',
flex: 5,
sortable: true,
dataIndex: 'titulo'
},{
text: 'Metadato',
flex: 2,
dataIndex: 'metadato',
renderer: addUrl
}],
tbar: [{
labelWidth: 100,
xtype: 'triggerfield',
id: 'campoBusquedaCapa',
fieldLabel: 'Nombre capa:',
triggerCls: 'x-form-clear-trigger',
onTriggerClick: function() {
this.reset();
treeStore.clearFilter();
this.focus();
},
enableKeyEvents: true
}, {
xtype : 'button',
icon: 'css/app/imagenes/lupa.png',
cls : 'apagarCapas',
width: 20,
height: 25,
id : 'btnApagarCapas',
action: 'apagarCapas',
tooltip : 'Apagar todas las capas',
padding:0
}]
});
Ext.apply(this, {
title: 'TABLA CONTENIDO',
constrain: true,
header : {
titlePosition : 2,
titleAlign : 'center'
},
closable : false,
width : anchoTOC,
height : altoTOC,
x : 20,
y : 270,
layout : 'fit',
animCollapse : true,
collapsible : true,
collapseDirection : Ext.Component.DIRECTION_LEFT,
items: [tree],
});
tree.on('itemcontextmenu', function(view, record, item, index, event, eOpts) {
event.stopEvent();
if (record.data.leaf != false) {
slider = Ext.create('Ext.slider.Single', {
id: 'sliderOpacidad',
hideLabel: true,
floating: true,
width: 200,
minValue: 0,
maxValue: 100,
value : 70,
listeners: {
change: function (newValue, thumb, eOpts ){
var capaBuscar = record.data.id;
var controladorUbicar = aplicacion.getController("ControlUbicar");
var capa = controladorUbicar.buscarcapa(capaBuscar);
console.log(capa);
capa.setOpacity(thumb/100);
},
blur: function() {
slider.setVisible(false);
capaBuscar=null;
}
}
});
slider.showBy(item, 'tl-tl', [event.getX() - view.getX(), 12]);
}
}, this);
this.callParent(arguments);
}
我解决了将滑块的 属性 id 'sliderOpacidad' 更改为 'record.data.id'
的问题
我想对之前保存的图层应用透明度,为此我有一个树面板,其中包含列出的所有图层,并且通过 itemcontextmenu 事件我放置了一个滑块来管理不透明度,当我 select改变图层不透明度的第一个元素效果很好,但是当我 select 另一个 item/element 时,不透明度仍然设置为第一个元素.....
例如:
第一个元素 selected(工作正常):
下一个元素 selected(它仍然使用前一个元素):
我有这个代码:
initComponent: function() {
var anchoPanatallaRes = window.screen.width;
var altoPantallaRes = window.screen.height;
var anchoTOC = 330;
var altoTOC = 473;
if (anchoPanatallaRes <= 1024) {
anchoTOC = 282;
altoTOC = 373;
}
function addUrl(value, p, record) {
return value ? Ext.String.format(
'<a href="'+value+'"target="_blank"'+'>Ver metadato'+'</a>'
):'';
}
var treeStore = Ext.getStore('capa');
var tree = Ext.create('Ext.tree.Panel', {
title: '',
id: "arbolTabla",
width: anchoTOC,
height: altoTOC,
reserveScrollbar: true,
loadMask: true,
useArrows: true,
rootVisible: false,
store: 'capa',
allowDeselect : true,
border : true,
animate: true,
columns: [{
xtype: 'treecolumn',
text: 'Capa',
flex: 5,
sortable: true,
dataIndex: 'titulo'
},{
text: 'Metadato',
flex: 2,
dataIndex: 'metadato',
renderer: addUrl
}],
tbar: [{
labelWidth: 100,
xtype: 'triggerfield',
id: 'campoBusquedaCapa',
fieldLabel: 'Nombre capa:',
triggerCls: 'x-form-clear-trigger',
onTriggerClick: function() {
this.reset();
treeStore.clearFilter();
this.focus();
},
enableKeyEvents: true
}, {
xtype : 'button',
icon: 'css/app/imagenes/lupa.png',
cls : 'apagarCapas',
width: 20,
height: 25,
id : 'btnApagarCapas',
action: 'apagarCapas',
tooltip : 'Apagar todas las capas',
padding:0
}]
});
Ext.apply(this, {
title: 'TABLA CONTENIDO',
constrain: true,
header : {
titlePosition : 2,
titleAlign : 'center'
},
closable : false,
width : anchoTOC,
height : altoTOC,
x : 20,
y : 270,
layout : 'fit',
animCollapse : true,
collapsible : true,
collapseDirection : Ext.Component.DIRECTION_LEFT,
items: [tree],
});
tree.on('itemcontextmenu', function(view, record, item, index, event, eOpts) {
event.stopEvent();
if (record.data.leaf != false) {
slider = Ext.create('Ext.slider.Single', {
id: 'sliderOpacidad',
hideLabel: true,
floating: true,
width: 200,
minValue: 0,
maxValue: 100,
value : 70,
listeners: {
change: function (newValue, thumb, eOpts ){
var capaBuscar = record.data.id;
var controladorUbicar = aplicacion.getController("ControlUbicar");
var capa = controladorUbicar.buscarcapa(capaBuscar);
console.log(capa);
capa.setOpacity(thumb/100);
},
blur: function() {
slider.setVisible(false);
capaBuscar=null;
}
}
});
slider.showBy(item, 'tl-tl', [event.getX() - view.getX(), 12]);
}
}, this);
this.callParent(arguments);
}
我解决了将滑块的 属性 id 'sliderOpacidad' 更改为 'record.data.id'
的问题