0

CCLayer上の [[CCDirector sharedDirector ]view]にサブビューとして tableView を追加しました。次に、次のコードを使用してCCLayertableViewを個別にアニメーション化しました。

このコードはCCLayer を左右に移動します。

-(void)moveHomeScreenLayerWithIsAnimated:(BOOL)_isAnimationRight{

    if (!_isAnimationRight) {
        [mHomeLayer runAction:[CCSequence actionOne:[CCDelayTime actionWithDuration:0.0f]   two:[CCMoveTo actionWithDuration:0.4f position:ccp((size.width/4)*3, 0)]]];
    }
    else{
        [mHomeLayer runAction:[CCSequence actionOne:[CCDelayTime actionWithDuration:0.0f] two:[CCMoveTo actionWithDuration:0.4f position:ccp(0, 0)]]];
    }
}

そしてtableViewのアニメーションの場合:

-(void)ViewAnimationRight{

    [UIView cancelPreviousPerformRequestsWithTarget:self];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.4f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    tableViewHome.frame = CGRectMake(size.width - size.width/4,topBar.contentSize.height, size.width, size.height);
    [tableViewHome setScrollEnabled:NO];

    [UIView commitAnimations ];
}

-(void)ViewAnimationLeft{
    [UIView cancelPreviousPerformRequestsWithTarget:self];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.4f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    tableViewHome.frame = CGRectMake(0, topBar.contentSize.height, size.width, size.height);
    [tableViewHome setScrollEnabled:YES];

    [UIView commitAnimations ];
}

CCLayer と tableView の両方がアニメーション化されますが、それらのアニメーションは同期されません。アニメーションの継続時間は一致しません。他の方法はありますか?みんなの助けに感謝します。

4

3 に答える 3

0

確実に同期モーションを実現する唯一の方法は、アクションと UI アニメーションを使用しないことです。彼らはあまりにも異なった働きをします。

代わりに、スケジュールされた更新方法でレイヤーとビューの位置を手動で更新します。特定の時間内に特定の位置に確実に到達する方法については、移動アクション コードを確認してください。

于 2013-05-14T10:39:02.363 に答える