2010-01-13 36 views

回答

1

YUI3並未正式支持該功能,但您可以通過訂閱補間事件並自行修改值來做類似的事情。

+0

謝謝,它也可以很好地同時發射一組動畫,但它們並不完美匹配(你可以看到一些抖動)。我必須在某個時候嘗試使用補間方法,但這也需要手動計算補間中處理的動畫的插值... – 2010-01-13 16:14:27

3

因爲我討厭看到非的答案上做題,我想我會在球場。

我在一個bug報告想通了這一點,這要歸功於信息(http://yuilibrary.com/projects/yui3/ticket/2528886

這裏是我有:兩個盒子,並排放置。我希望左邊的方框縮小(寬度方向),同時右邊的方框增長。

(我用的div,使用float:左/浮動權和溢出:隱藏,因爲我前一段時間做了一些不幸的決定,但是這應該對大多數其他配置工作)

這是我做:


var anim = new Y.Anim({ 
     duration: 1.0 
}); 

var elmLeftBox = Y.one('#leftBox'); 
var elmRightBox = Y.one('#rightBox'); 

var intWidth = parseInt(elmLeftBox.getComputedStyle('width'), 10); 

anim.on('tween', function(e) { 
    var elapsedTime = this.get('elapsedTime'); 
    var duration = this.get('duration'); 
    var easing = this.get('easing'); 

    var leftPos = easing(elapsedTime, intWidth, (-1 * intWidth), duration*1000); 
    var rightPos = easing(elapsedTime, 0, intWidth, duration*1000); 
    elmLeftBox.setStyle('width', leftPos); 
    elmRightBox.setStyle('width', rightPos); 
}); 

anim.on('end', function(evt) { 
    //clean up after myself - don't want hardcoded widths 
    elmLeftBox.setStyle('width', 0); 
    elmRightBox.setStyle('width', '100%'); 
}); 

anim.run(); 

完美地工作。祝你好運!