日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2dx-demo演示项目:Part1

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cocos2dx-demo演示项目:Part1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  這個項目,我主要是用來積累、記錄自己在利用cocos2dx引擎進行項目開發、學習實踐中的開發經驗。每天的開發任務、查看別人分享的內容,總是能夠收獲到可取的東西,將這些可取的東西自己再著手開發一次,能夠進一步深刻理解這些,同時今后如果碰到類似的開發需求,我也可以很快的遷移到開發項目中去。所以我將自己日常生活中積累的知識點通過一個演示項目,展示出來。因為沒有蘋果設備,不具備條件所以我只做安卓這塊的開發(相關組件的添加是需要安卓、ios分開添加的)。


?

Part1:友盟社交分享

添加這個組件的原因:

  游戲開發中,如果添加了社交分享元素,那么游戲的互動性將會大大的提升,對于提升游戲留存的能提供很大的幫助。各個社交網站都提供了分享的api接口,如果單獨為每個社交分享去寫支持接口,那么任務量會挺大的。有需求就會有市場,友盟就提供了社交分享的組件,將大多數社交網站的分享功能都組合都一起了。既然友盟都封裝好了,所以我就使用這個組件咯。

  我的筆記是在開發過程中記錄下來的,發表到博客是對自己在evernote上記下的東西進行整理。博客也不一定是按照demo項目的各個部分的開發日期順序來寫的。

  官方對如何添加組件有詳細的文檔,我所記錄的是在我添加組件的過程中遇到的一些問題。

1、添加官方提供的代碼文件:

  因為要跨平臺,所以C++ 2 Java、C++ 2 Object-C是必須的,但是直接將java調用的方法、object-c調用的方法放到工程中去,不做調整的話肯定是有問題的。因此官方就有這樣的解決方案:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#elif(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)#endif

采用預編譯宏來解決跨平臺編譯的問題,這也就是引擎做跨平臺支持采用的方案。那么問題來了,友盟這里就有點問題,不過也不怪他,代碼中都說了:

  人家是機器生成的代碼,難免有問題。問題是什么?

  主要是安卓這塊,即-Android文件夾內部的問題。他沒有采用 #if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 這個來判斷!!!所以無論是用VS、還是用XCODE,都會報錯,因為找不到<jni.h>文件,導致編譯不了!(其實我很早之前就有做過添加友盟組件的工作,當時也遇到了這個問題,但是限于當時的能力沒有發現原來是這個原因引發的問題)。

  所以解決方案就是使用:#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 這個,將這個文件夾內的類代碼處理,vs上不編譯。這個類里面其實都是些Java調用C++、C++調用Java的方法,所以直接在win32上是不能通過編譯的。

2、分享處理及相關:

  在做自定義按鈕分享的時候,在按鈕的回調函數中:

  這樣就可以打開友盟的分享面板了。需要注意的是,分享的回調函數需要是一個全局函數的!即代碼中的shareTest是一個全局函數,我覺得這一點在看了實際代碼后會更能理解.

3、關于友盟的截圖分享功能:

  一個很大的坑:使用/data/data/com.../files/目錄下的圖片,um的java方法響應不了,因為其代碼中沒有針對這個做判斷!!一直認為圖片是空的。。。。坑了我一個下午。

具體來看:(友盟組件2.0,cocos2dx v3.2)

  定位到友盟sdk包里面的文件:Platforms\Android\controller\com\umeng\social\CCUMSocialController.java這個文件。里面提供的一個方法:parseShareImage(String imgName),這函數功能是根據圖片存放路徑,創建UMImage對象。實現方式是根據imgName這個參數(參數以什么開頭,如”assets/”),判斷圖片的存儲路徑(如assets文件夾、網絡圖片、res資源圖片,都不是的話就是sd卡目錄),只有這幾個判斷。但是問題來了,游戲中截圖后默認圖片存放路徑是在data/data/com.xxx.xxx/files目錄下,所以友盟提供的那個函數找不到這個路徑!!!我對安卓不熟啊,所以我折騰了一個下午就是沒有得出個所以然,然后又不會使用eclipse進行debug斷點調試,只能是通過打印log來查找,花費了很長的時間才找出問題所在。不過我還是學到了東西:要善于通過log進行問題查找!

  解決方案便是修改這個函數,追加一個判斷:

1 else if(imgName.startsWith("/data")){ 2 3 if(!TextUtils.isEmpty(imgName)){ 4 5 File imgFile = new File(imgName); 6 7 shareImage = new UMImage(mActivity, imgFile); 8 9 } 10 }

4、微信分享:

  需要使用微信分享的話,那么游戲的安卓包必須是簽名包(怎么簽名網上有很多文檔),否則啟動不了微信的分享activity。這個問題好像(或者是我沒有注意到)友盟官方沒有提到,所以當時我在添加微信分享的時候,一直打不開微信分享的UI界面,也是折騰了挺久的。

轉載于:https://www.cnblogs.com/zhong-dev/p/4216869.html

總結

以上是生活随笔為你收集整理的Cocos2dx-demo演示项目:Part1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。