<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                本站文章均為[?李華明Himi?](http://www.himigame.com/about-himi)原創,轉載務必在明顯處注明: 轉載自[【黑米GameDev街區】](http://www.himigame.com/)?原文鏈接:?[http://www.himigame.com/iphone-cocos2dx/743.html](http://www.himigame.com/iphone-cocos2dx/743.html "【iOS-cocos2d-X") [? 點擊訂閱 ?](http://list.qq.com/cgi-bin/qf_invite?id=acfc24e272cc4a26debf3b3866edb626a9ea3fc80fd8893c)**?本博客最新動態!及時將最新博文通知您! Cocos2dx系列博文的上一篇詳細介紹了如何在Xcode中利用jni調用Android的Java層代碼,還沒有看過的童鞋,請移步到如下博文: [【iOS-cocos2d-X 游戲開發之十三】詳細講解在Xcode中利用預編譯并通過Jni調用Android的Java層代碼(cocos2dx里訪問調用Android函數)!?](http://www.himigame.com/iphone-cocos2dx/www.himigame.com/android-game/725.html) 本篇繼續介紹另外一個在Cocos2dx中必經之路:在Cocos2dx中調用蘋果Api以實現后期iOS的GameCenter和iap的相關操作,?那么Himi這里就跟大家簡單分享探討下;如何在Xcode中進行c++與oc混編吧~ 參考王哥說的?SimpleAudioEngine 類; ![](https://box.kancloud.cn/2016-03-31_56fcd02437ab2.png) 首先Himi建立了兩個類,一個object-c ,一個c++,詳細如下: **HSpriteOC.h** ~~~ // // HSpriteOC.h // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #import <Foundation/Foundation.h> NSString * str; @interface HSpriteOC +(void) testLog; +(void) testLogWithStr:(NSString*)_str; +(void) hMessageBox:(NSString*)pszMsg title:(NSString*)pszTitle; @end ~~~ **HSpriteOC.m** ~~~ // // HSprite.m // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #import "HSpriteOC.h" @implementation HSpriteOC +(void) testLog{ str = @"Himi->string is: "; NSLog(@"HSprite: testLog"); } +(void) testLogWithStr:(NSString*)_str{ str = [NSString stringWithFormat:@"%@%@",str,_str]; NSLog(@"%@",str); } +(void) hMessageBox:(NSString*)pszMsg title:(NSString*)pszTitle{ UIAlertView * messageBox = [[UIAlertView alloc] initWithTitle: pszTitle message: pszMsg delegate: nil cancelButtonTitle: @"OK" otherButtonTitles: nil]; [messageBox autorelease]; [messageBox show]; } @end ~~~ 這個類比較簡單,簡單定義了幾個靜態函數,打印和顯示一個提示框,不贅述,大家大概看下就可以了; 下面來看c++的類: **HSpriteCPP.h** ~~~ // // HSpriteCPP.h // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #ifndef Oc_Cpp_HSprite_h #define Oc_Cpp_HSprite_h #include "cocos2d.h" using namespace cocos2d; class HSpriteCPP:public cocos2d::CCSprite { public: static HSpriteCPP* hspriteWithFile(const char *spName); void myInit(); virtual ~HSpriteCPP(); }; #endif ~~~ **HSpriteCPP.cpp** ~~~ // // HSpriteCPP.mm // Oc_Cpp // // Created by Himi on 12-4-10. // Copyright (c) 2012年 Himi. All rights reserved. // #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "HSpriteOC.h" #endif #include "HSpriteCPP.h" HSpriteCPP* HSpriteCPP::hspriteWithFile(const char *spName) { HSpriteCPP *pobSprite = new HSpriteCPP(); if (pobSprite && pobSprite->initWithFile(spName)) { pobSprite->myInit(); pobSprite->autorelease(); return pobSprite; } CC_SAFE_DELETE(pobSprite); return NULL; } void HSpriteCPP::myInit(){ #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) //iOS代碼 [HSpriteOC testLog]; [HSpriteOC testLogWithStr:@"wahaha"]; [HSpriteOC hMessageBox:@"cocos2dx調用oc函數" title:@"Himi"]; #else //Android代碼 #endif } HSpriteCPP::~HSpriteCPP(){ } ~~~ 此類是個自定義精靈類,都是簡單的創建等函數,其HSprite.cpp類的導入和在 myInit() 自定義初始化函數中都加入了預編譯(#if #else #endif 對預編譯不太了解的自定百度下吧),主要為了區別當前手機設備的平臺區分做處理;而且在myInit()中我使用了object-c語法進行調用之前OC寫的HSprite類函數; 其實通過觀察以上兩個類童鞋們估計很容易看出在xcode中cpp和oc如何混編;其實就是兩點: 1.混編的類需要將其實現類(.cpp)改成(.mm)類,那么Xcode就會智能知道這個類混編類了,不用復雜的操作; 2.混編中cpp調用oc,其實就是各自使用各自語法即可,沒差異!(最好對OC和c++都比較熟悉更效率) 然后Himi在HelloWorldScene.cpp中加入以下測試代碼: ~~~ HSpriteCPP * sp =HSpriteCPP::hspriteWithFile("Icon.png"); sp->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width*0.5,CCDirector::sharedDirector()->getWinSize().height*0.5-100)); this->addChild(sp); ~~~ 別忘記導入對應使用的類哦~OK,看運行效果: ![](https://box.kancloud.cn/2016-03-31_56fcd0246162f.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看