6

CAEmitterLayerベジェ パス (4 つの制御点のうち、「8」のような閉じた形) に沿ってアニメーション化されたCAKeyframeAnimation. ここで、パスに沿って (必ずしもパス上ではなく) タッチ指をスライドさせてアニメーションを制御したいと考えています。これはどのように可能であり、これは可能ですか?

4

1 に答える 1

1

CGpoint click;最初の「ドラッグ」ポイントを記憶する変数を作成してから、ローカルNSEventハンドラーを作成します...

[NSEvent addLocalMonitorForEventsMatchingMask: NSMouseMovedMask
                                             | NSLeftMouseDownMask 
                                      handler:^(NSEvent *e) {
    if ( e.type == NSLeftMouseDown ) click = e.locationInWindow;
    else "yourDelta" = click - e.locationInWindow;  // pseudoCode 
    return e;
}];

NSEventScrollWheelMask「yourDelta」は、現在の場所からの最初のポイントのオフセットです...監視しe.deltaX、値を確認することで、スクロールイベントでも同様の結果を得ることができe.deltaYます。

編集:私はiOSでのイベント処理に精通していませんが、同じ手法を通常のイベントハンドラーに適用できます...つまり。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)e {
    click = [e locationInView:_yourView];       
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)e {
    "yourDelta" = click - [e locationInView:_yourView];  // pseudoCode 
}

アニメーションを「探す」ことに関して..1つの可能な方法は[layer addAnimation:theNewAnimation]、以前の'を使用することですが、0またはモデルの'toValueを基にする代わりに、代わりに値を使用しますか?あなたの完全な内容を見ずに言うのは難しいです。fromValuelayerlayer.presentationLayerCAKeyframeAnimation

于 2012-11-20T15:45:37.867 に答える