1

例を示しましょう (360 度 3D オブジェクト回転子):
デモ: http://activeden.net/item/interactive-renders-360-deg-3d-object-rotator/39718?ref=mixDesign

ここに画像の説明を入力
ご覧のとおり、マウスイベントで回転するカメラ 3D。実際には、マウスイベントに応じてフレームごとにアニメーション化される画像 (フレーム) のコレクションです。

このアニメーションを客観的に実装したい-スワイプジェスチャを使用するc (または、別のジェスチャを使用する必要がありますか?)。指で右に回転できるようにします(スワイプの速度に応じて、スムーズなイージー効果のあるアニメーションが必要です)。注:各フレームの画像が用意されています。



これを行うサンプルコード、オンラインチュートリアルは本当に役に立ちます。

! パフォーマンスを維持するために、外部グラフィック ライブラリを使用する必要がありますか? 私は何百もの画像 (PNG) を持っており、それぞれのサイズは 300 KB です

よろしくお願いします。本当に助けが必要です!

4

2 に答える 2

4

touchesBegan:touchesMoved:、およびtouchesEnded:ここに移動する方が簡単でしょうか? これにより、速度と方向の変化に非常に速く反応することができます。

更新: 例はこちらにあります

于 2011-11-21T10:17:28.243 に答える
2

ここでスワイプジェスチャーを使うべきではないと思います。短い minimumPressDuration で LongPressGesture をお勧めします。

コード例を示します。

longPress = [ [UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)] 
longPress.delegate = self;
longPress.minimumPressDuration = 0.05;
[viewWithImage addGestureRecognizer:longPress];


float startX; 
float displacement = 0;
-(IBAction)handleLongPressGesture:(UILongPressGestureRecognizer *)sender
{   

float nowX;
    if ( sender.state == UIGestureRecognizerStateBegan ) 
    {
        startX = [sender locationInView:viewWithImage].x;
    }
    if ( sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled)
    {
       ... do something at end ... 
    }
nowX = [sender locationInView:mainWidgetView].x;
displacement = nowX - startX; 

  // set right rotation with displacement value
  [self rotateImageWith:displacement];
}
于 2011-11-18T11:44:42.200 に答える