其實要在iOS中加入動畫是很簡單的一件事,首先我們得先宣告開始一個動畫區段,值得注意的是beginAnimations是個instance method,別把它誤送給你的物件啦。而它的引數是animationID和一個(void)型別的物件,我建議最好為你的每一個動畫事件取一個animationID,因為當你畫面中同時有很多動畫在發生的時候,也許你想在某一個動畫事件停止的時候作些特殊的處理,這時候它就可以派上用場了,當然你也可以用contex來作到相同的效果。
+ (void)beginAnimations:(NSString *)animationID context:(void *)context
example:
int apple_index = 10;
int apple_index = 10;
[UIView beginAnimations: [NSString stringWithFormat:@"Drop_Apple_%d", apple_index] context:nil];
接下來,我們只要指定物件最後的狀態,iphone就會把中間的動畫效果加上來
(物體原始狀態) -----------> (動畫效果) ---------> (物體最後狀態)
舉例,我想要在1.5秒內把一個view(比方說一顆蘋果),從它原來的位置移到別一個地方,就只要寫這二行,很簡單吧。
[UIView setAnimationDuration:(NSTimeInterval) 1.5];
_current_view.frame = end_pos;
然後送commitAnimations這個message到UIView就可以看到你的動畫效果了。
[UIView commitAnimations];
不過如果就只有這樣,那就太簡單啦,通常我們作一個動畫,一定會希望動畫完成後會發生某件事,比方說衣服脫下來後手就...(再次提醒,有18X內容要上apple store不容易),這時候我們就需要設定當動畫完成後,要送一個message到指定的實體,讓它幫你完成接下來的事情,也就是使用到design pattern中的delegation啦,請在你的動畫區間中加入這二行(這裡只是舉例,請隨著你的程式稍作修改。
[UIView beginAnimations: [NSString stringWithFormat:@"Drop_Apple_%d", apple_index] context:nil];
.........
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
.........
[UIView commitAnimations];
這樣一來,當動畫結束的時候,就會丟一個message到你指定的delegate對象,而訊息是animationDidStop,引數是(NSString*) animationID,(NSNumber *) finished和(void*) context。
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber *)finished context:(void *)context {
if ([animationID isEqualToString: @"衣服掉下來"])
{
[player be_a_man];
}
}
這裡是個範例影片,用我鳥鳥的數位相機拍的,有人知道MAC上不錯的擷取影像軟體嗎@@"
接下來,我們只要指定物件最後的狀態,iphone就會把中間的動畫效果加上來
(物體原始狀態) -----------> (動畫效果) ---------> (物體最後狀態)
舉例,我想要在1.5秒內把一個view(比方說一顆蘋果),從它原來的位置移到別一個地方,就只要寫這二行,很簡單吧。
[UIView setAnimationDuration:(NSTimeInterval) 1.5];
_current_view.frame = end_pos;
然後送commitAnimations這個message到UIView就可以看到你的動畫效果了。
[UIView commitAnimations];
不過如果就只有這樣,那就太簡單啦,通常我們作一個動畫,一定會希望動畫完成後會發生某件事,比方說衣服脫下來後手就...(再次提醒,有18X內容要上apple store不容易),這時候我們就需要設定當動畫完成後,要送一個message到指定的實體,讓它幫你完成接下來的事情,也就是使用到design pattern中的delegation啦,請在你的動畫區間中加入這二行(這裡只是舉例,請隨著你的程式稍作修改。
[UIView beginAnimations: [NSString stringWithFormat:@"Drop_Apple_%d", apple_index] context:nil];
.........
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
.........
[UIView commitAnimations];
這樣一來,當動畫結束的時候,就會丟一個message到你指定的delegate對象,而訊息是animationDidStop,引數是(NSString*) animationID,(NSNumber *) finished和(void*) context。
- (void)animationDidStop:(NSString*)animationID finished:(NSNumber *)finished context:(void *)context {
if ([animationID isEqualToString: @"衣服掉下來"])
{
[player be_a_man];
}
}
這裡是個範例影片,用我鳥鳥的數位相機拍的,有人知道MAC上不錯的擷取影像軟體嗎@@"