IOS開發入門基本知識——UIButton生成的關燈游戲(tag值的靈活運用)


關燈游戲,燈分為 兩種狀態,綠和紅,當被點擊的時候,自己和周圍的等變為相反的顏色,游戲以全部呈現為另外一種顏色為贏


實現思路,先貼button,button很多,在帖的時候肯定不能一個一個設置,同時,考慮到,button之間存在的關系,自己,和自己周圍的顏色會發生變化,那么用什么來作為索引,可以實現?在界面中,每一個button有一個tag值,為0的tag值是主界面,所以,在設置的時候,要注意不能讓其中任一個button的tag值為零,同時還要保持button之間的相關性不被打亂。那么,設定的過程呢,就要避免引用1 2 這樣的接近數字。

先來新建一個rootviewcontroller

在delegate設置root屬性

ButtonViewController*rootView=[[ButtonViewController alloc]init];
self.window.rootViewController=rootView;

[rootView release];


接下來,采用數組的方式,實現uibutton的擺放。

count=0;
UIImage*one=[UIImage imageNamed:@"1.png"];
for (int i=0; i<7; i++) {
for (int j=0; j<5; j++) {
count++;
UIButton*button=[UIButton buttonWithType:UIButtonTypeCustom];
button.frame=CGRectMake(20+(60*j), 30+i*60, 40, 40);
button.tag=count;
[button setImage:one forState:UIControlStateNormal];
[button addTarget:self action:@selector(touch:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
}
count+=5;
}
以上代碼中,先設定一個計數器,但同時,避免計數器為零,在這里0僅為初始值。避免為0的最好方法,還沒有進入運算技術的時候,先加一下。count++; 然后計算button的像素,和iPhone的標准像素320*480但是除去通知欄 320X460  其中燈的數目自己來確定,計算一下就好。

button被點擊,觸碰到touch方法,把自己作為傳遞者在方法中實現

-(void)touch:(id)sender
{
UIButton*but=(UIButton*)sender;

for (int i=1; i<=65; i++) {
UIButton *current=(UIButton *)[self.view viewWithTag:i];
if ((i==but.tag)||(i==(but.tag-1))||(i==but.tag+1)||(i==but.tag+10)||(i==but.tag-10)) {
if (current.currentImage==[UIImage imageNamed:@"1.png"] )
{
[current setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
}
else{
[current setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
}
}
}
}
其中的but 是作為一個傳遞者進行的。在這里另外設置一個current表示此刻被單擊的button,傳遞一個方法。通過每個button的tag值來實現定位。我們為了避免在這個點按過程中取到tag值為0,同時更為了方便計數,通過這樣的值傳遞tag 來實現簡單的操作。算起來,其實呈現在這個current button被點擊的情況有四個一個是自己,還有一個是自己上面的,一個左邊的,一個右邊的,一個下面的,他們之間為了簡單建一個連接,左右均相差1,上下相差10 ,如此一來,他們之間就可以明晰關系。同時防止其中任何一個tag為0.

在以上的代碼中 but是任何一個按鈕,  current是當前被選中的按鈕,他們之間的關系,是引起和被引起的關系。其中i作為他們中間的橋梁顯示着被選中的current 的tag值。意思就是,當前被單擊的按鈕和自己周圍的按鈕改變顏色,其余則不改變。



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: