Javascript 根据您在Sencha Touch应用程序中的位置更改方向

Javascript 根据您在Sencha Touch应用程序中的位置更改方向,javascript,extjs,sencha-touch,Javascript,Extjs,Sencha Touch,我有一个使用Sencha Touch创建的应用程序,在应用程序的标题中,我有一个带有三个不同选项的分段按钮,当我在视图之间更改时,我正在使用此代码: this.getEditorGeneral().animateActiveItem(0, {type:'slide', direction: 'right'}); (我更改分段按钮中每个按钮的编号,此示例仅用于第一个选择) 问题是如何定义动画取决于我是从第三个选项更改为第二个选项,还是从第二个选项更改为第三个选项。例如,我的想法是更改方向 提前谢

我有一个使用Sencha Touch创建的应用程序,在应用程序的标题中,我有一个带有三个不同选项的分段按钮,当我在视图之间更改时,我正在使用此代码:

this.getEditorGeneral().animateActiveItem(0, {type:'slide', direction: 'right'});
(我更改分段按钮中每个按钮的编号,此示例仅用于第一个选择)

问题是如何定义动画取决于我是从第三个选项更改为第二个选项,还是从第二个选项更改为第三个选项。例如,我的想法是更改方向

提前谢谢。

我想你们可以听听这个事件,它的处理函数将newValue和Oldvalue都作为参数-
函数(this,newValue,Oldvalue,eOpts){}

嗯,我不确定你的应用程序结构,但想法是你必须列出
segmentedbutton
事件
activeitemchange
(在控制器中,使用
.on()
或你喜欢的任何其他方式)并执行以下操作:

myButton.on(
    'activeitemchange',
    function( segmentedbutton, newValue, oldValue ) {
        // from second button to third, idk you actual button values so its just 2 and 3
        if( newValue === 3 && oldValue === 2) {
            this.getEditorGeneral().animateActiveItem(0, {type:'slide', direction: 'right'});
        // and vice versa
        } else if( newValue === 2 && oldValue === 3) {
            this.getEditorGeneral().animateActiveItem(0, {type:'slide', direction: 'left'});
        }
    },
    // make sure that you pass proper scope so you can use getEditorGeneral()
    this
);

尝试设置不同的对象动画,也许可以尝试在设置动画之前使用开关大小写设置方向字符串

var direction='yourDirection',
anim={type:'slide', direction: direction};
this.getEditorGeneral().animateActiveItem(0, anim);

也许我无法理解您的请求

添加了一个示例来说明我的意思,如果我误解了触摸特定部分中的问题,很抱歉,我实际上是ExtJS开发者,而不是触摸。我想myButton是对我的分段按钮的引用,对吗?目前我已经为每个segmentedButton实现了一个方法,并使用了之前在文章中指定的代码,我可以用不同的方式实现您的示例,但使用我当前的代码吗?据我所知,目前您对每个segmentedButton都有单独的处理程序?如果您不想为segmentedButton添加单个
activeitemchange
事件侦听器,则可以将当前选定的按钮值保存在代码中的任何位置,并在按钮单击处理程序上将此值与单击的按钮值进行比较。