Вот простое приложение, чтобы сделать это:
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" firstView="views.GestureViewChangeView1" applicationDPI="160"
initialize="view1_initializeHandler(event)" >
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function view1_initializeHandler(event:FlexEvent):void
{
Multitouch.inputMode = MultitouchInputMode.GESTURE;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:ViewNavigatorApplication>
Это основной файл приложения, он просто устанавливает режим ввода на Gesture. Указывает firstView, GestureViewChangeView1:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="GestureViewChange1" gestureSwipe="swipeHandler(event)"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function swipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
case 1:
{
// swiped right
break;
}
case -1:
{
// swiped left
this.navigator.pushView(GestureViewChangeView2);
break;
}
}
switch(event.offsetY)
{
case 1:
{
// swiped down
break;
}
case -1:
{
// swiped up
break;
}
}
}
]]>
</fx:Script>
<s:Label text="View 1" />
</s:View>
В этом представлении просто отображается простая метка и прослушивается событие gestSwipe в теге представления. В ответ на это он выдвигает новый взгляд на навигатор, GestureViewChangeView2:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="GestureViewChangeView2" gestureSwipe="swipeHandler(event)">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function swipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
case 1:
{
// swiped right
this.navigator.popView();
break;
}
case -1:
{
// swiped left
this.navigator.pushView(GestureViewChangeView3);
break;
}
}
switch(event.offsetY)
{
case 1:
{
// swiped down
break;
}
case -1:
{
// swiped up
break;
}
}
}
]]>
</fx:Script>
<s:Label text="View 2" />
</s:View>
Это представление почти идентично предыдущему. Это меняет метку. При пролистывании вправо он возвращается, а при пролистывании влево он добавляет GestureViewChangeView3:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="GestureViewChangeView3" gestureSwipe="swipeHandler(event)">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function swipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
case 1:
{
// swiped right
this.navigator.popView();
break;
}
case -1:
{
// swiped left
break;
}
}
switch(event.offsetY)
{
case 1:
{
// swiped down
break;
}
case -1:
{
// swiped up
break;
}
}
}
]]>
</fx:Script>
<s:Label text="View 3" />
</s:View>
Этот вид прослушивает пролистывание вправо, чтобы вернуться назад.