ExtJS4 DragDrop代理定位

时间:2012-01-02 12:32:18

标签: javascript extjs4

在ExtJS 4中,默认情况下,拖动代理在拖动操作期间显示在鼠标位置的右下角位置。假设我点击目标的中心并将鼠标移动1 px。我希望代理自己在原始元素上移动1 px。

基本上,我需要代理行为与http://jqueryui.com/demos/draggable/#sortable的示例相同。在此示例中,代理位于原始元素上,然后在拖动鼠标时移动。

我怎样才能做到这一点?

以下示例代码说明了拖动自定义窗口小部件时的问题。

Ext.onReady(函数(){

    var hewgt = Ext.define('Demo.widget.Complex', {
                    extend: 'Ext.panel.Panel',
                    alias: 'widget.complex',
                    frameHeader: false,
                    draggable: false, 
                    layout: 'table',
                    initComponent: function() {
                            this.callParent(arguments);
                            var txtFld;
                            this.superclass.add.call(this, txtFld = new Ext.form.field.Text({fieldLabel:'test'}));
                            this.superclass.add.call(this, new Ext.button.Button({text:'Save'}));                              
                    }
    });

    Ext.define('Demo.dd.DragSource', {
                    extend: 'Ext.dd.DragSource',
                    b4MouseDown: function(e) {
            this.diffX = e.getX() - this.el.getX();
            this.diffY = e.getY() - this.el.getY();
                            this.superclass.setDelta.call(this, 0, 0);
                    },
                    getTargetCoord: function(iPageX, iPageY) {
                            return {x: iPageX - this.diffX, y: iPageY - this.diffY};
                    }
    });

    var panel = Ext.create('Ext.panel.Panel', {
                    layout: 'absolute',
                    title: 'Navigation'
    });

    var vp = Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: [panel]
    });

    var img = Ext.create('Demo.widget.Complex', { width: 400, height:100, x:20, y:20 });
    panel.add(img);
    new Demo.dd.DragSource(img.getEl());

    img = Ext.create('Demo.widget.Complex', { width: 400, height:100, x:20, y:150 });
    panel.add(img);
    new Demo.dd.DragSource(img.getEl());

});

我是Ext JS的新手。 请告诉我如何正确定位拖动的代理?

由于

0 个答案:

没有答案