2012-12-04 91 views
0

我正在做縮放工具,並遇到Sprite.setAttributes({scale:{...})的問題; 以畫布中心爲中心...Ext.draw.Sprite scale glitch

http://teempla.com/sites/all/themes/teamplan/d2d/ - 這就是它。

嘗試用鉛筆畫兩條或多條線,然後按Zoom +,您會看到有浮動。這是不對的。奇怪的是,他們把相對中心定位了。

PICE的點擊事件代碼:

click: function(e, t, eOpts){ 
    d2dModel.set('zoom',d2dModel.get('zoom')+0.1); 
    var draw = Ext.ComponentManager.get(Ext.select('.d2d-draw-panel',true).elements[0].id); 
    for (var i in draw.surface.items.map){ 
    draw.surface.items.map[i].setAttributes({ 
     scale: { 
      cx: d2dModel.get('width')/2, 
      cy: d2dModel.get('height')/2, 
      x: d2dModel.get('zoom'), 
      y: d2dModel.get('zoom') 
     } 
    }, true); 
} 
} 

在Raphael.JS我

el.transform('s'+zoom+','+zoom+','+w/2+','+h/2); 

做它,它工作正常。

感謝您的任何意見!

+1

當我按下縮放按鈕時,你並沒有真的縮小,你只是讓精靈變大(正如你所說的)。您應該縮放畫布。我過去曾經這樣做過。讓我看看你的代碼。 –

回答

1

嘗試使用setViewBox

http://docs.sencha.com/ext-js/4-1/source/Surface.html#Ext-draw-Surface-method-setViewBox

我在我的項目做了什麼你表面上縮放是這樣的:

var bbox = draw.surface.items.getBBox(); 
    draw.surface.setViewBox(bbox.x, bbox.y, draw.getSize().width/zoomValue, draw.getSize().height/zoomValue); 

請注意,這是EXT 4測試版中,但它應該是現在幾乎一樣。

+0

你穿得對! 非常感謝!我添加了你的代碼 - 它的工作效果更好,但是爲什麼所有的路徑都是左移的?我嘗試在'setViewBox'函數中更改x和y值 - 但它沒有幫助...可能是錯誤嗎? 新版本[這裏](http://teempla.com/sites/all/themes/teamplan/d2d/) – Timopheym

+0

它可能是x和y值的東西。試着玩這些。 –