Sencha Touch 2 Carousel:开始/结束页面的锁定滑动

Posted

技术标签:

【中文标题】Sencha Touch 2 Carousel:开始/结束页面的锁定滑动【英文标题】:Sencha Touch 2 Carousel: Lock Swiping of Start/End Page 【发布时间】:2012-06-07 13:28:27 【问题描述】:

我希望 Carousel 在页面的开头和结尾停止滑动。 我的意思是防止结束页面滑动开始页面滑动 到左侧

是否有任何配置或其他方式来实现它?

在此先感谢您。

【问题讨论】:

查看 LockableCarousel 类:***.com/a/9365898/862474 【参考方案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'
        
    ]
);

【讨论】:

感谢您的回复。也许我没有准确地解释我想要什么。对于最后一张卡片,它会向右滑动,但会自动向后滑动并防止刷卡。行。但我不想要这个。我什至不想向右滑动然后返回。我想“锁定”刷最后一张卡。在上面的示例中,当我在“项目 1”卡上向左滑动时,我不想看到白色背景。我能解释一下我想要什么吗?提前致谢。【参考方案2】:

您可以创建自己的轮播然后覆盖 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

【讨论】:

以上是关于Sencha Touch 2 Carousel:开始/结束页面的锁定滑动的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch 2.2.1 Carousel 未初始化

sencha touch carousel 不删除所有项目

来自 JSON 商店的 Sencha Touch Carousel

Sencha Touch 2 - 选项卡式面板中的轮播

Sencha Touch轮播图像问题

Sencha Touch 2 - TabPanel 在 MVC 设计的 App 中不起作用