【iOS-Cocos2d遊戲開發之七】在cocos2d中添加/刪除系統組件,並解決View設定透明會影響View中的其他組件的問題!【11月28日更新解決添加組件Cocos2d動畫停止播放的BUG】

來源:互聯網
上載者:User

 李華明Himi 原創,轉載務必在明顯處註明:
轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/iphone-cocos2d/455.html

11月28日:---------------------------------

     有的童鞋說添加嘞組件(UIScrollView)後操作組件時Cocos2d的動畫停止不懂嘞,我測試下,果然是,下面是解決方案:

首先大家搜尋:CCDirectorIOS,找到CCDirectorIOS.m類,然後找到如下代碼:

////If you want to attach the opengl view into UIScrollView//  uncomment this line to prevent 'freezing'.//It doesn't work on with the Fast Director////[[NSRunLoop currentRunLoop] addTimer:animationTimer// forMode:NSRunLoopCommonModes];

然後在AppDelegate.m類中將以下這行代碼注釋即可!

//if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )

 

--------------------------

               好像有段時間沒有更新了,主要項目比較著急,不過現在cocos2d基本算是全拿下了,進展很順利,那麼在這裡主要給大家介紹下一些Himi遇到的問題;

本章介紹兩個知識點:

               1. 在Cocos2d中添加系統組件;(本例中添加UIView 並嵌套一些View)

               2. 解決View設定透明後,View中的其他組件也跟著透明的問題;詳細問題如下:(網上找的網友的問題貼)

                           

“   如何把背景圖片設定為半透明   ”現在的介面大概是這樣的:最底下一個UIVIEW,這個UIVIEW有一個自己的背景圖,然後在這個UIVIEw之上有第二個VIEW,這個VIEW也有一個背景圖。現在要達到的效果是使第二個VIEW的映像不會覆蓋最底層VIEW的背景圖。把上面一層VIEW的ALpha值改小我覺得不行,因為上面一層VIEW裡面也有自己各種組件,如果這麼改的話,上面一層VIEW裡面的所有的元素也會被透明化,但這不是我要的效果。。。透明的僅僅是第二層的背景圖。

以上是網友的問題,其實總結起來問題就是咱們今天要講述的的第二點問題;

OK,首先介紹如何在Cocos2d中添加系統組件;

首先建立一個cocos2d項目,我這裡使用的cocos2d版本為1.0.0

然後建立一個UIViewController類,名字為: MyUIView (這個建立檔案步驟就不說啦~)

整個項目目錄如所示:

我們先在我們的MyUIView.xib中添加點東西,不然顯示出來也不能明顯看出;OK,雙擊 xib檔案進入編寫(我的xcode是4.1針對lion的版本)

我這裡添加了一個View,然後放置了一個button(方便講解本章的第二個問題)如:

OK,save下,然後開始編寫在cocos2d中顯示系統組件的代碼:HelloWorldLayout.m  如下:

MyUIView *view = [[MyUIView alloc] initWithNibName:@"MyUIView" bundle:nil];[[[CCDirector sharedDirector] openGLView] addSubview:view.view];

這兩句代碼位置寫在了cocos2d預設給出的情境類中的建構函式裡:

-(id) init{if( (self=[super init])) {                MyUIView *view = [[MyUIView alloc] initWithNibName:@"MyUIView" bundle:nil];[[[CCDirector sharedDirector] openGLView] addSubview:view.view];        }return self;}

下面運行看效果:

很簡單的,刪除添加的組件也很easy!如下代碼:

[self.updateUIView.view removeFromSuperview];

這樣後還要加上[self.updateUIView.view release];這樣才真正的從記憶體中釋放掉~

然後下面我們開始講解本博文的第二點知識點;

為了讓大家更好的看出問題,我將button設定一個背景圖,然後給裝有button的view設定灰色的背景,如:

OK。現在設定我們要設定view半透明,OK,設定alpha為0.5.然後運行看到的如下:

這個效果明顯不對,因為我們想要的是view半透明,其中的button並不需要透明!!!!!

當時遇到此問題就開始各種嘗試,因為當時我的項目有好多view,我嘗試過在view添加一張ImageView然後將ImageVIew的圖與背景圖一樣,並設定半透明,但是因為很多個view所以最後失敗,然後嘗試各種度娘,Google等,也去對應的群裡問了 都是沒有找到解決方案,但是最後終於讓我嘗試出來解決的方法;

其實view的alpha是針對整個view(包括其中的所有組件)的一個透明度,那麼如果只是單純的修改view的透明,其實只要更改它的opacity屬性!

點擊你的view然後點擊其background屬性,然後點擊other,如:

將其下方的opacity屬性調整為50%,OK,儲存當前xib檔案 ,運行項目!如下:

這才是應該要的效果,view是50%透明的~組件不受影響;

其實這篇博文講述的比較簡單,屬於細節,不過細節決定成敗,希望大家遇到類似的細節問題,儘可能的解決不要給自己積累疑問,不然會對後期提高帶來極大障礙;

OK,就到這裡,童鞋們,撒樂個油~

源碼: http://www.himigame.com/iphone-cocos2d/455.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.