移動(dòng)動(dòng)畫

動(dòng)畫。定時(shí)器


1.視圖移動(dòng)

{

//在這里定義全局變量也可以,屬性不能聲明在主文件

UIView *_view1;

//標(biāo)記view1是否正在移動(dòng)

BOOL isMoving;

}

//屬性如果不在.h文件中聲明, @property 在這里聲明的屬性,本類可以調(diào)用,在其他類中,不能調(diào)用

//@property (nonatomic,assign)int age;

//方法不在.h文件中聲明,在這里聲明的方法,本類可以調(diào)用,在其他類中,不能調(diào)用

//-(void)eat;

- (void)viewDidLoad {

[super viewDidLoad];

//寫方塊

_view1= [[UIView alloc] initWithFrame:CGRectMake(20, 20, 40, 40)];

_view1.backgroundColor= [UIColor orangeColor];

[self.view addSubview:_view1];

//用tag標(biāo)記視圖view1的運(yùn)動(dòng)狀態(tài),0表示停止或者將要停止?fàn)顟B(tài),1表示運(yùn)動(dòng)狀態(tài)

_view1.tag= 0;

//用isMoving標(biāo)記view1的運(yùn)動(dòng)狀態(tài),NO表示已經(jīng)停止,YES表示還沒停止(動(dòng)畫還在執(zhí)行)

isMoving=NO;

}

//XIB疤坝。點(diǎn)擊開始按鈕調(diào)用的方法

-? (IBAction)start:(id)sender{

//bug1:如果連續(xù)點(diǎn)擊兩次開始按鈕,會(huì)同時(shí)執(zhí)行兩個(gè)動(dòng)畫,而且兩個(gè)動(dòng)畫執(zhí)行的對象都是view1,所以發(fā)生干涉,造成混亂的現(xiàn)象

//解決方法:在點(diǎn)開始按鈕時(shí),判斷一下view1的運(yùn)動(dòng)狀態(tài),tag值為0并不能保證動(dòng)畫已經(jīng)結(jié)束,而isMoving = NO,可以確認(rèn)動(dòng)畫已經(jīng)停止

//bug2:連續(xù)點(diǎn)擊開始和暫停按鈕會(huì)出現(xiàn)干涉

//解決方法:isMoving

if(isMoving==NO) {

//改變view1的運(yùn)動(dòng)狀態(tài)

_view1.tag= 1;

isMoving=YES;

[self move1];

}

}

- (void)move1 {

//如果tag值為1,表示正在運(yùn)動(dòng),則執(zhí)行動(dòng)畫

if(_view1.tag== 1) {

[UIViewbegin Animations:nil context:nil];

[UIView setAnimationDuration:1];

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(move2)];

_view1.center=CGPointMake(280, 40);

// ???4,提交

[UIView commitAnimations];

}

//tag值為0,表示現(xiàn)在是停止?fàn)顟B(tài),跳出循環(huán),不在執(zhí)行動(dòng)畫,動(dòng)畫結(jié)束

else{

isMoving=NO;

}

}

- (void)move2 {

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:1];

_view1.center=CGPointMake(280, 440);

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(move3)];

[UIView commitAnimations];

}

- (void)move3 {

[UIView beginAnimations:nilcontext:nil];

[UIView setAnimationDuration:1];

_view1.center=CGPointMake(40, 440);

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(move4)];

[UIView commitAnimations];

}

- (void)move4 {

[UIView beginAnimations:nil context:nil];

[UIViewset AnimationDuration:1];

_view1.center=CGPointMake(40, 40);

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(move1)];

[UIView commitAnimations];

}

//點(diǎn)擊停止按鈕調(diào)用的方法

- (IBAction)stop:(id)sender {

//把tag值改為0,表示不需要再移動(dòng)了

_view1.tag= 0;

}

@end


//小球彈跳

{

UIView *_view1;

}


- (void)viewDidLoad {

[super viewDidLoad];

_view1 =? [[UIView alloc] initWithFrame:CGRectMake(160, 0, 30, 30)];

_view1.backgroundColor= [UIColorgreenColor];

_view1.layer.cornerRadius= 15;

_view1.alpha= 0.5;

[self.view addSubview:_view1];

[NSTimer scheduledTimerWithTimeInterval:0.01 target:selfselector:@selector(viewMove) userInfo:nil repeats:YES];

}

//視圖移動(dòng)的方法

- (void)viewMove {

//_view1.center = CGPointMake(100, 100);

//讓view1向下移動(dòng)

/* //寫法1

//獲取view1的橫縱坐標(biāo)

float y = _view1.frame.origin.y;

float x = _view1.frame.origin.x;

//讓改變橫縱坐標(biāo)

//x = arc4random()%320;

//y = arc4random()%480;

y ++;

x ++;

//邊界判斷

//重用原理:當(dāng)視圖移動(dòng)到屏幕底端時(shí),我們把它拿到屏幕頂端,繼續(xù)下落

if (x == 320) {

x = -50;

}

if (y == 480) {

//從邊界外滑進(jìn)來比較自然

y = -50;

}

//重新定義view1的位置

//_view1.frame.size.width可以換成固定數(shù)字,但不方便改變,邏輯也比較不嚴(yán)謹(jǐn)

_view1.frame = CGRectMake(x, y, _view1.frame.size.width, _view1.frame.size.height);

*/

/* ?//寫法2

//獲取view1的frame

//CGRect結(jié)構(gòu)體不用*

//rect中間變量可識別

CGRect rect = _view1.frame;

//改變矩形的坐標(biāo)

rect.origin.y ++;

rect.origin.x ++;

//邊界判斷

if (rect.origin.x >=320) {

rect.origin.x = -50;

}

if (rect.origin.y >= 480) {

rect.origin.y = -50;

}

//重新定義view1的位置

_view1.frame = rect;

*/

//定義橫縱坐標(biāo)的變化值

static int a = 3;

static int b = 4;

//獲取小球中心的橫縱坐標(biāo)

intx =_view1.center.x;

inty =_view1.center.y;

//改變橫縱坐標(biāo)

x += a;

y += b;

//邊界判斷

if(x >= 305) {

a = -3;

}

if(x <= 15) {

a = 3;

}

if(y >=465) {

b = -4;

}

if(y <=15) {

b = 4;

}

//刷新位置

_view1.center=CGPointMake(x, y);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涩馆,隨后出現(xiàn)的幾起案子铡买,更是在濱河造成了極大的恐慌叶骨,老刑警劉巖确丢,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绷耍,死亡現(xiàn)場離奇詭異,居然都是意外死亡鲜侥,警方通過查閱死者的電腦和手機(jī)褂始,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來描函,“玉大人崎苗,你說我怎么就攤上這事∽阜В” “怎么了益缠?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵脑奠,是天一觀的道長基公。 經(jīng)常有香客問我,道長宋欺,這世上最難降的妖魔是什么轰豆? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮齿诞,結(jié)果婚禮上酸休,老公的妹妹穿的比我還像新娘。我一直安慰自己祷杈,他們只是感情好斑司,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著但汞,像睡著了一般宿刮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上私蕾,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天僵缺,我揣著相機(jī)與錄音,去河邊找鬼踩叭。 笑死磕潮,一個(gè)胖子當(dāng)著我的面吹牛翠胰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播自脯,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼之景,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冤今?” 一聲冷哼從身側(cè)響起闺兢,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戏罢,沒想到半個(gè)月后屋谭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡龟糕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年桐磁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讲岁。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡我擂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缓艳,到底是詐尸還是另有隱情校摩,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布阶淘,位于F島的核電站衙吩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏溪窒。R本人自食惡果不足惜坤塞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澈蚌。 院中可真熱鬧摹芙,春花似錦、人聲如沸宛瞄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽份汗。三九已至盈电,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裸影,已是汗流浹背挣轨。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轩猩,地道東北人卷扮。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓荡澎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晤锹。 傳聞我的和親對象是個(gè)殘疾皇子摩幔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容