例を示しましょう (360 度 3D オブジェクト回転子):
デモ: http://activeden.net/item/interactive-renders-360-deg-3d-object-rotator/39718?ref=mixDesign
ご覧のとおり、マウスイベントで回転するカメラ 3D。実際には、マウスイベントに応じてフレームごとにアニメーション化される画像 (フレーム) のコレクションです。
このアニメーションを客観的に実装したい-スワイプジェスチャを使用するc (または、別のジェスチャを使用する必要がありますか?)。指で左、右に回転できるようにします(スワイプの速度に応じて、スムーズなイージー効果のあるアニメーションが必要です)。注:各フレームの画像が用意されています。
これを行うサンプルコード、オンラインチュートリアルは本当に役に立ちます。
! パフォーマンスを維持するために、外部グラフィック ライブラリを使用する必要がありますか? 私は何百もの画像 (PNG) を持っており、それぞれのサイズは 300 KB です
よろしくお願いします。本当に助けが必要です!
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 に答える