2012-06-07 78 views
1

我希望輪播在頁面的開始和結束處停止滑動。
我的意思是,防止頁面刷卡開始頁面刷卡Sencha Touch 2輪播:鎖定開始/結束的滑動頁面

Carousel

是否有任何配置或一些其他的方式來實現它?

先謝謝您。

+1

檢查了這一點LockableCarousel類:HTTP ://stackoverflow.com/a/9365898/862474 – tarikakyol

回答

1

默認情況下,ST2的carousel組件具有此配置。所以,你不需要額外的努力來實現這一點。

看看來自Sencha網站的this例子。當你到達最後一個項目時,它會阻止向右滑動,當你在第一個項目時,它會阻止向左滑動。

Ext.create('Ext.Carousel', { 
    fullscreen: true, 

    defaults: { 
     styleHtmlContent: true 
    }, 

    items: [ 
     { 
      html : 'Item 1', 
      style: 'background-color: #5E99CC' 
     }, 
     { 
      html : 'Item 2', 
      style: 'background-color: #759E60' 
     }, 
     { 
      html : 'Item 3' 
     } 
    ] 
}); 
+0

謝謝你的迴應。也許我沒有完全解釋我想要的。對於最後一張卡片,向右滑動,但自動向後滑動並防止滑動。好。但我不想要這個。我甚至不想刷到右邊然後回去。我想'鎖定'刷最後一張牌。在上面的例子中,當我在'Item 1'卡上向左滑動時,我不想看到白色背景。我能解釋我想要的嗎?提前致謝。 – Natasha

1

您可以創建自己的旋轉木馬,然後重寫事件ondrag當以下是代碼的形式Ext.carousel.Carousel

Ext.define('Ext.carousel.Custom', { 
    extend: 'Ext.carousel.Carousel', 

    onDrag: function(e) { 
     if (!this.isDragging) { 
      return; 
     } 

     var startOffset = this.dragStartOffset, 
      direction = this.getDirection(), 
      delta = direction === 'horizontal' ? e.deltaX : e.deltaY, 
      lastOffset = this.offset, 
      flickStartTime = this.flickStartTime, 
      dragDirection = this.dragDirection, 
      now = Ext.Date.now(), 
      currentActiveIndex = this.getActiveIndex(), 
      maxIndex = this.getMaxItemIndex(), 
      lastDragDirection = dragDirection, 
      offset; 

     if ((currentActiveIndex === 0 && delta > 0) || (currentActiveIndex === maxIndex && delta < 0)) { 
      delta *= 0.5; 
     } 

     offset = startOffset + delta; 

     if (offset > lastOffset) { 
      dragDirection = 1; 
     } 
     else if (offset < lastOffset) { 
      dragDirection = -1; 
     } 

     if (dragDirection !== lastDragDirection || (now - flickStartTime) > 300) { 
      this.flickStartOffset = lastOffset; 
      this.flickStartTime = now; 
     } 

     this.dragDirection = dragDirection; 

     // now that we have the dragDirection, we should use that to check if there 
     // is an item to drag to 
     if ((dragDirection == 1 && currentActiveIndex == 0) || (dragDirection == -1 && currentActiveIndex == maxIndex)) { 
      return; 
     } 

     this.setOffset(offset); 
    } 
}); 

參考:= Link