0

私はこれについて多くのことを研究してきましたが、答えは見つかりませんでした。

基本的に、Objective-C で iPhone 用のサイコロを振るアプリケーションを作成しています。「チルト」機能を使ってサイコロを振れるようにしたいです。たとえば、ユーザーが自分のデバイスを地面と同じ高さに保つと、サイコロが落ち着きます。ただし、ユーザーがデバイスを右に傾けると、すべてのサイコロは制限に達するまで右に「転がり」ます。

この機能をそのようにどのように利用できますか?そして、可能であれば、integer、float、double、または NSString に角度を格納して、効率的に使用し、アプリを簡単にテストできるようにしたいと考えています。

4

2 に答える 2

3

加速度計でこれを行うことができます。加速度計は、デバイスを傾けると xyz 軸の値を示します。これに、UIAccelerometer クラスのタイプであるプロパティを追加します。

    UIAccelerometer*  theAccelerometer;

ここで、頻度とデリゲートを定義します。受信を開始したい場所からこのコードを記述する必要があります。

    theAccelerometer = [UIAccelerometer sharedAccelerometer];
    theAccelerometer.updateInterval = 1 / 50;
    theAccelerometer.delegate = self;

次に、委任方法を追加する必要があります

    -(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
        myX = acceleration.x;
        myY = acceleration.y;
        myZ = acceleration.z;
    }

わかりました。これで、値が頻繁に 50 [20 ミリ秒を意味します] で更新されました。ここで、これらの値の受信を停止したい場合、このビューを離れると受信を停止する必要があることは明らかであり、次のようになります。

    theAccelerometer.delegate = nil

デリゲートを self に割り当てると、再び加速度計データの受信を開始できます

    theAccelerometer.delegate = self;

さらに質問がある場合は、スカイプでベヘスティに連絡してください。

于 2011-10-24T12:14:14.810 に答える
3

残念ながら、関連する API 情報が含まれていない 2007 年 (公式の SDK が発表される前) からの投稿にリンクしている回答にコメントしたり、反対票を投じたりすることはできません。

公式の最新ガイドをお勧めします: http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html

上記は、生データを取得する方法を示しています。「ローリング」シミュレーションを達成するために必要なすべての計算を行うわけではありません。

于 2011-03-01T02:55:19.970 に答える