1

私はcocos2dのCCLayerに標準のピンチ/ズームを実装しようとしていますが(Kobold2Dジェスチャ認識機能を使用)、部分的にしか成功していません。

以下は、ピンチポイントが動かない限り、ピンチ/ズームを機能させる私のコードです。ただし、レイヤーの1つのポイントを拡大してから、指を離して別のポイントをさらに拡大すると、レイヤーが瞬時にジャンプします。単純に元の場所からスムーズにズームインするのではなく、最初から2番目のポイントにズームインした場合のレイヤーの場所にジャンプします。

私が間違っていることを確認できますか、それともCCLayersでこの仕事をする既存の単純なピンチ/ズームアルゴリズムを見逃したことがありますか?

注意:ignoreAnchorInPositionのデフォルト(YES)値を残しました。また、開始時にself.scalePrePinch = 1.0f

-(void) update:(ccTime)delta
{
    KKInput* input = [KKInput sharedInput];
    if (input.gesturePinchBegan) {
        CGSize scr = [[CCDirector sharedDirector] screenSize];
        CGPoint pinchLocation = [self convertToNodeSpace:input.gesturePinchLocation];
        CGPoint anchor = ccp(pinchLocation.x/scr.width, pinchLocation.y/scr.height);
        CGFloat newScale = input.gesturePinchScale * self.scalePrePinch;
        self.anchorPoint = ccp(self.anchorPoint.x + self.scale / newScale * (anchor.x - self.anchorPoint.x), 
                               self.anchorPoint.y + self.scale / newScale * (anchor.y - self.anchorPoint.y));
        self.scale = newScale;
    }
    else
        self.scalePrePinch = self.scale;
}
4

0 に答える 0