2013-05-14 113 views
0

我通過CCLayer添加了一個tableView作爲子視圖到[[CCDirector sharedDirector]視圖]。然後,我有動畫的CCLayer & 的tableView分別用以下代碼:同步CCLayer&UIView動畫

本規範移動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被動畫,但是他們的動畫不同步。動畫持續時間不匹配。有沒有其他的方法。大家的幫助表示讚賞。

回答

0

嘗試將呼叫同步到呼叫地點的兩個功能。確保在通話之間沒有繁重的代碼來添加延遲。這可能會幫助你。

0

試試這個:

先在你的UIView

//right to left animation 
CGRect basketTopFrame = basketTop.frame; 
basketTopFrame.origin.x = 0; 
[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ basketTop.frame = basketTopFrame; } completion:^(BOOL finished){ 
}]; 

//left to right animation 
CGRect napkinBottomFrame = basketTop.frame; 
napkinBottomFrame.origin.x = 320; 
[UIView animateWithDuration:0.3 delay:0.0 options: UIViewAnimationOptionCurveEaseOut animations:^{ basketTop.frame = napkinBottomFrame; } completion:^(BOOL finished) 
{ 
    /*done*/ 
}]; 

basketTop的x位置設置320是你的UIView

+0

我試着實現你的代碼,但它沒有爲我工作。 – Pranoy 2013-05-14 07:33:31

0

的唯一方法的目的是可靠地實現synchroneous運動是不使用動作和用戶動畫。他們只是工作太不同了。

取而代之的是更新圖層並以預定的更新方法手動查看位置。檢查移動操作代碼,瞭解如何確保在給定時間內達到某個位置。