国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

AIR Android:Swipe手勢

移動開發 Android
處理用戶交互,本模塊主要介紹了多點觸摸相關功能的用法,包括觸摸和手勢。處理用戶交互是AIR Android開發的基礎部分,只有設計合理、用戶操作符合邏輯的交互,才能增強程序的用戶體驗。因此,熟練掌握常見的交互手法至關重要。本文為大家介紹Swipe手勢。

Swipe手勢(1)

Swipe手勢即單個手指觸摸屏幕并快速地朝任意一個方向滑動,一般用來控制頁面之間的切換。例如,使用Android自帶的相冊程序瀏覽圖片時,朝左滑動手指會切換到下一張,朝右滑動則切換到上一張。

本節將創建一個圖片瀏覽器GestureSwipe,使用Swipe手勢來切換圖片。程序的運行流程如下:

步驟1 創建10個Sprite,用隨機顏色進行填充,視為10張圖片。

步驟2 開始運行,顯示第一張圖片。

步驟3 監聽Swipe事件,如果是朝右滑動,顯示上一張,反之顯示下一張。

按照以上流程,首先看第1步,創建圖片的代碼如下:

 

  1. private function createPages():void  
  2. {  
  3.  for ( var i:uint = 0; i < 10; i++)  
  4.  {  
  5.   pages.push(newPage());  
  6.  }  
  7. }  
  8.  
  9. private function newPage():Sprite  
  10. {  
  11.  var page_width:int = stage.stageWidth-20*2;  
  12.  var page_height:int = stage.stageHeight-20*2;  
  13.    
  14.  var page:Sprite = new Sprite();     
  15.  var g:Graphics = page.graphics;  
  16. //用隨機顏色填充矩形  
  17.  var color:uint = 0xFFFFFF*Math.random();  
  18.  g.beginFill(color);  
  19.  g.drawRect(20, 20, page_width, page_height);  
  20.  g.endFill();  
  21.  //默認將圖片放在屏幕外  
  22.  page.x = stage.stageWidth;  
  23.  addChild(page);  
  24.    
  25.  return page;  

創建圖片用了兩個函數:createPages和newPage,其中newPage負責創建單張圖片。圖片默認被放置于屏幕外,并存放在數組pages中。之所以使用數組,主要為了便于切換圖片。程序中使用參數currentIndex保存當前圖片的索引,每次切換圖片時,只需改變currentIndex的值即可。

第2步,開始運行后默認要顯示第一張圖片,也就是要將currentIndex的值修改為1。這相當于執行了“下一張”的操作,和向左滑動手勢的效果是一樣的。為此,將處理圖片切換的相關功能獨立成一個函數movePage,代碼如下:

  1. //參數direction表示方向,1表示下一張,-1表示上一張  
  2. private function movePage( direction:int = 1 ):void  
  3. {  
  4.         var newIndex:int;  
  5.         if ( direction == -1 )  
  6.         {  
  7.   //上一張,當前索引減1,如果已經到達第一張,就不能再向前了  
  8.                 newIndex = currentIndex - 1;  
  9.                 if ( newIndex < 0 )  
  10.                 {  
  11.                         newIndex = 0;  
  12.                 }  
  13.         }  
  14.         else  
  15.         {  
  16.                 //下一張,索引加1,如果到了最后一張,就不能再向后了  
  17.                 newIndex = currentIndex + 1;   
  18.                 if ( newIndex >= (pages.length-1) )  
  19.                 {  
  20.                         newIndex = pages.length-1;  
  21.                 }  
  22.  
  23.         }  
  24.         //如果和當前頁是相同的,表示已經是最前或最后了,保持圖片顯示不變  
  25.         if ( currentIndex == newIndex ) return;  
  26.         //如果當前顯示的圖片存在,要將其移開  
  27.         if ( currentIndex >= 0 && currentIndex <= pages.length )  
  28.         {  
  29.                 var oldPage:Sprite = pages[currentIndex];   
  30.  
  31.                 if ( direction == -1 )  
  32.                 {  
  33.                         //顯示上一張,當前圖片從左向右移,移到屏幕右側  
  34.                         TweenLite.to(oldPage, 0.5, { x: stage.stageWidth} );  
  35.                 }  
  36.                 else  
  37.                 {  
  38.                         //顯示下一張,當前圖片從右向左移,移到屏幕左側  
  39.                         TweenLite.to(oldPage, 0.5, { x: -stage.stageWidth} );  
  40.                 }  
  41.         }  
  42.         //更新currentIndex,獲取新的圖片,將其移到屏幕顯示區域  
  43.         currentIndex = newIndex;  
  44.         var newPage:Sprite = pages[currentIndex];   
  45.         if ( direction == -1 )  
  46.         {  
  47.                 //如果是顯示上一張,要從左向右移,所以先將圖片位置改到最左邊  
  48.                 newPage.x = -stage.stageWidth;  
  49.         }  
  50.         else  
  51.         {  
  52.                 //從右向左移,先將圖片位置改到最右邊  
  53.                 newPage.x = stage.stageWidth;  
  54.         }  
  55.         //不管是哪個方向,最后都將新的圖片移到屏幕顯示區域  
  56.         TweenLite.to(newPage, 0.5, { x:0} );      
  57. }

3.3.3 Swipe手勢(2)

為了讓圖片的切換過程更加生動,程序中添加了緩動效果,使用了第三方開源庫TweenLite(http://www.greensock.com/tweenlite/)來實現動畫。TweenLite的用法很簡單,本例中只用了其中的一個方法:

  1. TweenLite.to(newPage, 0.5, { x:0} ); 

to函數的第一個參數為作用對象,第2個參數表示持續時間,第3個參數是要修改的屬性。上面這句代碼的意思是對newPage對象運用緩動效果,動畫持續時間為0.5秒,將newPage的x值從當前值修改為0,實現的效果就是newPage水平移動到舞臺原點處。讀者可以嘗試修改時間參數,體驗不同的動畫效果。有關TweenLite的用法可以在其站點上找到詳細文檔。

有了movePage函數,要顯示第一張圖片,只要加上以下一行代碼就可以實現:

  1. movePage(1); 

currentIndex的初始值為–1,執行下一張圖片的命令,即切換到第一張圖片。

最后是第3步,監聽Swipe手勢事件。和前兩節中處理手勢事件的方法完全一樣,這里就省略了檢測設備信息的過程,先添加如下相關的事件:

  1. stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, onSwipe); 

以下是響應函數:

  1. private function onSwipe(e:TransformGestureEvent):void  
  2. {  
  3.         if ( e.offsetX == 1 )  
  4.         {  
  5.                 //朝右,對應動作為上一張  
  6.                 movePage(-1);  
  7.         }  
  8.         else  
  9.         {  
  10.                 //否則為下一張  
  11.                 movePage(1);  
  12.         }  

在GESTURE_SWIPE 事件中,TransformGestureEvent對象的offsetX和offsetY分別代表水平和垂直方向的手勢朝向。在本例中,只判斷水平方向,如果offsetX是1,表示是朝右滑動,反之表示朝左滑動。有了前面的代碼鋪墊,這里直接調用movePage即可。

移動開發中,Swipe手勢配合緩動效果的運用很常見,這種方式充分發揮了觸摸屏的技術特點,為程序增色不少。

本例完整的代碼位于ch3/ GestureSwipe。

小知識 使用鼠標事件也能夠模擬Swipe手勢,通過檢測鼠標的移動速度就可以實現,在一些Flash游戲中都能看到這類用法。

責任編輯:閆佳明 來源: book.51cto.com
相關推薦

2013-05-14 11:16:26

AIR Android旋轉手勢

2013-05-14 11:13:02

AIR Android放大縮小手勢

2013-05-03 15:17:59

Android開發Android SDK

2011-06-16 10:25:29

AndroidAIR

2013-05-14 09:57:37

2013-05-14 10:56:45

AIR Android多點觸摸

2013-05-14 10:37:10

AIR Android設置訪問權限

2013-05-14 10:27:46

Android開發設置程序屬性

2013-05-14 10:39:27

AIR Android打包APK文件

2013-05-14 10:10:28

Android開發棋子類Grid

2013-05-14 10:05:10

Android開發游戲設計

2013-05-14 09:50:44

Android開發Flash Build

2013-05-14 11:04:58

AIR AndroidTouchEvent類

2013-05-14 11:01:34

AIR AndroidTouchEvent類

2012-03-09 13:26:53

2013-12-02 10:01:04

云平臺

2013-05-14 09:54:27

Android開發開源開發環境

2013-05-14 10:16:35

Android開發主類Main

2013-05-14 10:23:31

Android開發主類Main

2013-05-14 10:13:52

Android開發主類Main
點贊
收藏

51CTO技術棧公眾號

欧美日韩国产三区| 午夜精品久久| 污网站在线看| 免费超爽大片黄| 美女视频久久| 91九色蝌蚪成人| 成人信息集中地欧美| 美女黄色丝袜一区| 国产亚洲精品美女| 国产传媒一区二区| 色综合天天综合网国产成人综合天| 久久国产福利国产秒拍| 午夜精品毛片| 国产一区二区亚洲| 欧美亚洲在线观看| 亚洲高清免费在线| 香蕉成人app免费看片| 伊人青青综合网站| 欧美视频一区二区三区…| 亚洲素人一区二区| 国产日产欧美一区二区视频| 北岛玲一区二区三区四区| 久草热8精品视频在线观看| 国产一区二区三区黄视频| 欧美经典一区| av资源一区| 国产夫妻在线| 巨胸喷奶水www久久久免费动漫| 范冰冰一级做a爰片久久毛片| 国产精品蜜芽在线观看| 电影网一区二区| 日韩一区视频在线| www在线免费观看视频| 婷婷国产在线| 97精品视频在线观看| 永久免费毛片在线播放不卡| 深夜福利亚洲导航| 国产91|九色| 不卡一区二区三区视频| 日韩三级在线播放| 精品久久一区二区| 欧美日韩午夜精品| 日韩精品999| 亚洲2020天天堂在线观看| 国产精品久久久久久久午夜| 国产另类第一区| 日本熟妇人妻xxxx| 中文字幕无线精品亚洲乱码一区| 亚洲精品理论电影| 欧美最猛性xxxxx免费| 视频直播国产精品| 热久久免费视频精品| 色综合久久久久久久久五月| 日本精品一区二区三区四区| 青娱在线视频| 性xxxxfreexxxxx欧美丶| 影音先锋欧美激情| 99综合精品| 久久精品欧美日韩精品| 91久久国产综合久久| 欧美xxxx综合视频| 蜜桃91精品入口| 神马影院午夜我不卡| 人妻互换免费中文字幕| 一区 二区 三区| 日韩欧美字幕| 狠狠色丁香婷综合久久| 国产精品亚洲欧美日韩一区在线| 蜜臀久久久久久久| 91精品国产综合久久精品麻豆| 性做久久久久久| 在线观看视频一区二区| 久久伊人资源站| 中文字幕欧美视频在线| 91精品国产91久久久久久不卡| 精品无码久久久久国产| 播九公社成人综合网站| 国精产品一区一区三区mba下载| 日韩精品视频一区二区三区| 日韩精品一区二区三区在线播放| 中文字幕一区久| 久久不见久久见免费视频7| 蜜桃一区二区三区四区| 日韩欧美一二三区| 亚洲综合色激情五月| 一路向西2在线观看| 国产污污在线观看| 成人福利一区| 成人美女在线视频| 欧洲亚洲精品在线| 国产91网红主播在线观看| www污在线观看| 成人性爱视频在线观看| 国产精品中文字幕亚洲欧美| 99精品1区2区| 91视频91自| 色小说视频一区| 日本a在线免费观看| 伊人久久在线| 久久99久久99精品免视看婷婷| 日本韩国一区二区三区视频| 久久精品国产免费观看| 最近中文字幕免费mv| 国产乱码午夜在线视频| 精品一区二区在线免费观看| 欧美一级在线观看| 国产精品久久久久久久久久ktv| 国产裸体舞一区二区三区| 51精品国产| 91精品国产综合久久小美女| 欧美大片国产精品| 国产高清一区视频| 久久久久蜜桃| 欧美亚洲视频| 久久精品噜噜噜成人av农村| gay网站在线| 成人黄色影视| 国产乱色在线观看| 激情五月***国产精品| 国产成人自拍在线| 欧美色xxxx| 久久av一区二区三区漫画| 九九热r在线视频精品| 91视频免费进入| 999香蕉视频| 在线观看三级视频| 黄色一区二区三区四区| 久久这里只有精品6| 欧美日韩专区在线| 欧美成人剧情片在线观看| 欧美人xxxxx| 国产视频第一区| 99久久www免费| 成人激情小说网站| 欧美伦理视频网站| 4388成人网| 国产中文字幕第一页| 成人一级福利| 日本亚洲天堂网| 欧美三级韩国三级日本三斤| 18久久久久久| 国产成人久久777777| 午夜av成人| 国产精品一二二区| 亚洲国产精品成人精品 | 亚洲欧美专区| 国产精品自在欧美一区| 99不卡视频| 秋霞成人影院| 亚洲精品a区| 久久夜色精品国产欧美乱极品| 久久精品丝袜高跟鞋| 成人做爰www免费看视频网站| 国产精品91在线观看| 91亚洲一区精品| 欧美日韩高清在线一区| 一区二区三区精品99久久 | 亚洲婷婷在线视频| 91精品国产777在线观看| 涩涩涩999| 欧美成人激情| 欧美影视一区在线| 国产精品扒开腿做爽爽爽的视频| 神马日本精品| 91网站免费观看| 日韩va欧美va亚洲va久久| 欧美久久久久久久| 懂色av噜噜一区二区三区av| 1024手机看片国产| 欧美性感美女h网站在线观看免费| 视频在线91| 中文字幕+乱码+中文字幕一区| 一区二区三区四区视频在线| 美国三级日本三级久久99| 日本一区免费| 国产一区不卡在线| 亚洲一区二区三区乱码| 久久婷婷麻豆| 天天好比中文综合网| 久久午夜电影| 亚洲欧美一二三| 欧美经典一区二区三区| 三级黄色网址| 欧美影院一区二区三区| 51av在线| 午夜精品视频在线| 精品一二三区| 国产精品视频500部| 你懂的成人av| 国产精品狠色婷| 精品亚洲免费视频| 91福利视频久久久久| 偷拍自拍在线看| 成人欧美magnet| 日韩一二三区| 国产精品videosex性欧美| 久久精品盗摄| 91色porny在线视频| 日韩理论在线观看| 91po在线观看91精品国产性色|