顯示具有 ios 標籤的文章。 顯示所有文章
顯示具有 ios 標籤的文章。 顯示所有文章

2016年5月27日 星期五

0527 ios9.x app 的檔案 存放位置

//MAC simulator 的目錄位置
// 可以進入 Users/adifly/Library/Developer/CoreSimulator/Devices/
 //利用搜尋方式找出
完整路徑範例:
///Users/adifly/Library/Developer/CoreSimulator/Devices/193008FE-BC6E-48AB-8E4F-CC5B9BB136D9/data/Containers/Data/Application/15941F34-EBC5-43E7-B333-47B39B4562A4/Documents
==============================================================
觀看隱藏檔的方式
打開終端,輸入命令
顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

2016年4月29日 星期五

0429 cocos2d-x 顯示IOS 上方 狀態列

cocos2d-x 顯示IOS 上方 狀態列

https://www.v2ex.com/t/239103

需求

我現在需要讓我的 cocos2d-x 遊戲一直顯示白底黑字的狀態條。

實現

根據這篇文章,我的做法如下:

Info.plist

  • View controller-based status bar appearance NO
  • Status bar is initially hidden NO
  • Status bar style Gray style (default)

AppController.mm

frameworks/runtime-src/proj.ios_mac/ios/AppController.mm 中的application:didFinishLaunchingWithOptions: 添加如下代碼(完整代碼見後面)。
[[UIApplication sharedApplication].statusBarStyle:UIStatusBarStyleDefault];
[[UIApplication sharedApplication] setStatusBarHidden:NO];

// The OpenGLWindow
_window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];

RootViewController.mm

- (BOOL)prefersStatusBarHidden
{
    return NO;
}

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleDefault;
}

問題

由於上提到的參考 文章 是顯示的黑底白字的狀態條,然而我的需求是白底黑字
最終產生的結果如下:
StatusBar
上面的黑色部分其實就是狀態條,只是背景(由於窗口被下移,沒有繪製那塊區域)也是黑色的,所以就黑成一團了。
cocos2d-x 提供的模板,是這樣創建 _window 的:
_window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
我根據上面的文章,將窗口下移,我修改後的代碼:
_window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];
UI 是這樣的結構(完整代碼見『附』):
如上圖,黃色為標識區域為 StatusBar
紅色標識區域為_window
_window 內部為 [_window]---rootViewController--> [viewController] ---view--> [eaglView]
eaglView 是最終 cocos2d-x 繪圖的區域,他填滿整個 _window
現在我想要的結果是讓上圖的黑色區域底色變成白色,由於我不懂 iOS ,我猜想的方案可能是:
  • 用 applicationFrame 創建窗口;新加一個和 _window 平級的白色 UIView ,放到黑色區域。
  • 或者用 bounds 創建窗口,弄一個固定高度為 StatusBar 高度的 UIView 將 eaglView 『擠』下去。
  • 或者能不能設置整個應用的底色為白色?
大致就是這些,請大家指點下我,最好有代碼。我不熟悉 iOS 開發。
感謝了!

application:didFinishLaunchingWithOptions 完整代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    cocos2d::Application *app = cocos2d::Application::getInstance();
    app->initGLContextAttrs();
    cocos2d::GLViewImpl::convertAttrs();

    // Override point for customization after application launch.

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];

    // Add the view controller's view to the window and display.
    _window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];
    CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [self.window bounds]
                                     pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat
                                     depthFormat: cocos2d::GLViewImpl::_depthFormat
                              preserveBackbuffer: NO
                                      sharegroup: nil
                                   multiSampling: NO
                                 numberOfSamples: 0 ];

    [eaglView setMultipleTouchEnabled:YES];

    // Use RootViewController manage CCEAGLView
    viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
    viewController.wantsFullScreenLayout = YES;
    viewController.view = eaglView;

    // Set RootViewController to window
    if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
    {
        // warning: addSubView doesn't work on iOS6
        [self.window addSubview: viewController.view];
    }
    else
    {
        // use this method on ios6
        [_window setRootViewController:viewController];
    }

    [_window makeKeyAndVisible];


    // IMPORTANT: Setting the GLView should be done after creating the RootViewController
    cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView);
    cocos2d::Director::getInstance()->setOpenGLView(glview);


    app->run();
    return YES;
}

2016年4月22日 星期五

0422 獲取 ios 系統網絡狀況、電量

獲取 ios 系統網絡狀況、電量

版權聲明:本文為 松陽 (blog.csdn.net/fansongy) 原創文章,轉載務必註明出處。
本篇博客出自阿修羅道,轉載請註明出處:http://blog.csdn.net/fansongy/article/details/8927734
cocos2d-x中並沒有關於獲取一些系統底層信息的方法。由於跨平台編譯的原因,需要根據平台來自己寫。
通常需要顯示是網絡連接狀態和電池的電量這兩個。
  1. #import "Foundation/Foundation.h"  
  2. #import "UIKit/UIKit.h"  
  3.   
  4. typedef enum  
  5. {  
  6.     // Apple NetworkStatus Compatible Names.  
  7.     NoNetWork    = 0,  
  8.     ConnWiFi     = 2,  
  9.     Conn3G       = 1  
  10. } NetState;  
  11.   
  12.   
  13. // 獲取電池電量,範圍0到1.0。-1表示電量未知。  
  14. float getBatteryLeve();  
  15.   
  16. // 檢測WIFI是否可用  
  17. bool isWIFIEnabled();  
  18.   
  19.   
  20. // 檢測3G網絡是否可用  
  21. bool is3GEnabled();  
  22.   
  23. //取得網絡連接狀況  
  24. NetState getNetState();  

實現是用.mm來實現,就是調用一些ios現成的接口。
  1. #include "SystemInfo.h"  
  2. #import "Reachability.h"  
  3.   
  4. NSString* testPage = @"www.baidu.com";  
  5.   
  6. float getBatteryLeve()  
  7. {  
  8.     [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];  
  9.     return [[UIDevice currentDevice] batteryLevel];  
  10. }  
  11.   
  12. // 檢測WIFI是否可用  
  13. bool isWIFIEnabled()  
  14. {  
  15.     return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);  
  16. }  
  17.   
  18. // 檢測3G網絡是否可用  
  19. bool is3GEnabled()  
  20. {  
  21.     return [[Reachability reachabilityForInternetConnection] isReachableViaWWAN];  
  22. }  
  23.   
  24.   
  25. NetState getNetState()  
  26. {  
  27.       
  28.     Reachability *r = [Reachability reachabilityWithHostname:testPage];  
  29.     switch ([r currentReachabilityStatus]) {  
  30.         case NotReachable:  
  31.             // 沒有網絡連接  
  32.             return NoNetWork;  
  33.             break;  
  34.         case ReachableViaWWAN:  
  35.             // 使用3G網絡  
  36.             return Conn3G;  
  37.             break;  
  38.         case ReachableViaWiFi:  
  39.             // 使用WiFi網絡  
  40.             return ConnWiFi;  
  41.             break;  
  42.     }  
  43.        
  44. }  

    其中Reachability類是官方給提供的一個測試網絡的類。使用時引入Reachability.h 和.m就可以,另外還要在Frameworks中加入SystemConfiguration.framework。一些使用可以百度,我下面的源碼中也能找到相應的項目。

    源碼:http://download.csdn.net/detail/fansongy/5377491
  

2016年4月12日 星期二

20160412_IOS cocos2d-x 設置開啟多點觸控

在初始化代碼中,開啟當前層接受觸摸
  1. this->setTouchEnabled(true);  

在AppController.mm文件中,設置開啟多點觸控
[html] view plain copy
 print?
  1. [__glView setMultipleTouchEnabled:YES];  

測試一下,重寫ccTouchesMoved函數,打印多點觸控的位置
  1. void HelloWorld::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)  
  2. {  
  3.     if(pTouches->count() >= 2)  //多點觸控  
  4.     {  
  5.         CCSetIterator itor;  
  6.         for( itor = pTouches->begin(); itor != pTouches->end(); ++itor)  
  7.         {  
  8.             CCTouch *pTouch = dynamic_cast<CCTouch *>(*itor);  
  9.             //獲得遊戲坐標位置  
  10.             CCPoint ccp = pTouch->getLocation();  
  11.             printf("%f\t%f\n", ccp.x, ccp.y);  
  12.         }  
  13.         printf("\n");  
  14.     }  
  15.     else    //單點觸控  
  16.     {  
  17.         CCTouch *pTouch = dynamic_cast<CCTouch *>(pTouches->anyObject());  
  18.         CCPoint ccp = pTouch->getLocation();  
  19.         printf("%f\t%f\n", ccp.x, ccp.y);  
  20.     }  
  21. }  

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...