|
暱稱:娃娃魚
  
- UID
- 1
- 帖子
- 3310
- 精華
- 17
- K 幣
- 18883 金
- 開發機1
- iPhone3GS
- 開發機2
- iPhone4
- 開發機3
- iPad
- 開發機4
- The New iPad
- 性別
- 男
- 來自
- 台灣.桃園
- 在線時間
- 1373 小時
- 註冊時間
- 2009-2-19
- 最後登錄
- 2012-5-17
|
1#
發表於 2009-3-24 23:07
| 只看該作者
說明:示範抓取加速計的資料來判斷iPhone的Shake搖動動作
示範:
搖晃前的預設文字:沒事
用力搖晃後畫面將顯示為:搖動
程式碼:
AccelerometerDemoViewController.h- #import <UIKit/UIKit.h>
- @interface AccelerometerDemoViewController : UIViewController <UIAccelerometerDelegate>{
- IBOutlet UILabel *mylabel;
- }
- @property (nonatomic,retain) UILabel *mylabel;
- @end
複製代碼 AccelerometerDemoViewController.m- #import "AccelerometerDemoViewController.h"
- @implementation AccelerometerDemoViewController
- @synthesize mylabel;
- - (void)viewDidLoad {
- UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
- accelerometer.delegate = self;
- accelerometer.updateInterval = 1.0f/60.0f;
- [super viewDidLoad];
- }
- - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
-
- static NSInteger shakeCount=0;
- static NSDate *shakeStart;
-
- NSDate *now=[[NSDate alloc] init];
- //搖晃時間在2秒內
- NSDate *checkDate=[[NSDate alloc] initWithTimeInterval:2.0f sinceDate:shakeStart];
-
- //超過2秒則重新計算搖晃次數
- if ([now compare:checkDate]==NSOrderedDescending||shakeStart==nil){
- shakeCount=0;
- [shakeStart release];
- shakeStart=[[NSDate alloc] init];
- }
-
- [now release];
- [checkDate release];
-
- //三軸搖晃的G力超過2則列入計次
- if (fabsf(acceleration.x)>2.0 || fabsf(acceleration.y)>2.0|| fabsf(acceleration.z)>2.0){
- shakeCount++;
-
- //2秒內偵測到4次則判定為Shake搖晃手機
- if (shakeCount>4){
- shakeCount=0;
- [shakeStart release];
- shakeStart=[[NSDate alloc] init];
-
- //畫面顯示搖動文字
- mylabel.text=@"搖動";
-
- //設定2秒後自動還原
- [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(cleartext) userInfo:nil repeats:NO];
- }
- }
- }
-
- -(void)cleartext{
- //預設文字
- mylabel.text=@"沒事";
- }
複製代碼 此範例的應用相當的廣泛而有趣,早期App Store上的創意軟體如花女棒、打火機及蠟燭等軟體都是利用相同的原理實作的喔,看看您是否也能想出更好的創意。 |
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊
-
1
評分次數
-
|