文章出自于  http://blog.csdn.net/zhouyunxuan

RootViewController.h

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController {

}
- (BOOL) prefersStatusBarHidden; @end

RootViewController.cpp

#import "RootViewController.h"
#import "cocos2d.h"
#import "CCEAGLView.h" @implementation RootViewController /*
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
// Custom initialization
}
return self;
}
*/ /*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/ /*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
} */
// Override to allow orientations other than the default portrait orientation.
// This method is deprecated on ios6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape( interfaceOrientation );
} // For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
return UIInterfaceOrientationMaskAllButUpsideDown;
#endif
} //是否自己主动旋转
- (BOOL) shouldAutorotate {
return YES;
} //这个函数时用来确定我们的应用所支持的旋转方向。假设想要支持每一个方向则直接返回YES即可,还能够单独推断某一方向:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; //设置旋转到某个地方
/*
UIInterfaceOrientationPortrait: 正常
UIInterfaceOrientationPortraitUpsideDown: 转180度
UIInterfaceOrientationLandscapeLeft: 向左转90度
UIInterfaceOrientationLandscapeRight: 向右转90度
*/
//处理转移到某个角度的时候要做的事情
if (fromInterfaceOrientation == UIInterfaceOrientationPortrait) {
//
}
else if (fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
//
}
else if (fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){
//
}
else if (fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
//
} cocos2d::GLView *glview = cocos2d::Director::getInstance()->getOpenGLView(); if (glview)
{
CCEAGLView *eaglview = (CCEAGLView*) glview->getEAGLView(); if (eaglview)
{
CGSize s = CGSizeMake([eaglview getWidth], [eaglview getHeight]);
cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width, (int) s.height);
}
}
} //fix not hide status on ios7
- (BOOL)prefersStatusBarHidden
{
return YES;
} - (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use.
} - (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
} - (void)dealloc {
[super dealloc];
} @end

AppController.h

#import <UIKit/UIKit.h>

@class RootViewController;

@interface AppController : NSObject <UIApplicationDelegate> {
UIWindow *window;
} @property(nonatomic, readonly) RootViewController* viewController; @end

AppController.mm

#import "AppController.h"
#import "CCEAGLView.h"
#import "cocos2d.h"
#import "AppDelegate.h"
#import "RootViewController.h" @implementation AppController #pragma mark -
#pragma mark Application lifecycle // cocos2d application instance
static AppDelegate s_sharedApplication; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // Add the view controller's view to the window and display.
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; // Init the CCEAGLView
CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH24_STENCIL8_OES
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples: 0]; // 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
[window addSubview: _viewController.view];
}
else
{
// use this method on ios6
[window setRootViewController:_viewController];
} [window makeKeyAndVisible]; [[UIApplication sharedApplication] setStatusBarHidden:true]; // IMPORTANT: Setting the GLView should be done after creating the RootViewController
cocos2d::GLView *glview = cocos2d::GLView::createWithEAGLView(eaglView);
cocos2d::Director::getInstance()->setOpenGLView(glview); cocos2d::Application::getInstance()->run(); return YES;
} - (void)applicationWillResignActive:(UIApplication *)application {
/*
Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
*/
//We don't need to call this method any more. It will interupt user defined game pause&resume logic
/* cocos2d::Director::getInstance()->pause(); */
} - (void)applicationDidBecomeActive:(UIApplication *)application {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
*/
//We don't need to call this method any more. It will interupt user defined game pause&resume logic
/* cocos2d::Director::getInstance()->resume(); */
} - (void)applicationDidEnterBackground:(UIApplication *)application {
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
*/
cocos2d::Application::getInstance()->applicationDidEnterBackground();
} - (void)applicationWillEnterForeground:(UIApplication *)application {
/*
Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
*/
cocos2d::Application::getInstance()->applicationWillEnterForeground();
} - (void)applicationWillTerminate:(UIApplication *)application {
/*
Called when the application is about to terminate.
See also applicationDidEnterBackground:.
*/
} #pragma mark -
#pragma mark Memory management - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
/*
Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
*/
} - (void)dealloc {
[window release];
[super dealloc];
} @end
didFinishLaunchingWithOptions
2014-07-28 10:07:41.247 SKT iOS[1024:60b] cocos2d: surface size: 1024x768
cocos2d: GLView End
cocos2d:
{
cocos2d.x.version: cocos2d-x 3.1.1 - modify by zyx
cocos2d.x.compiled_with_gl_state_cache: true
cocos2d.x.build_type: DEBUG
gl.supports_vertex_array_object: true
cocos2d.x.compiled_with_profiler: false
gl.renderer: Apple Software Renderer
gl.vendor: Apple Computer, Inc.
gl.max_texture_size: 4096
gl.max_samples_allowed: 4
gl.version: OpenGL ES 2.0 APPLE-9.4.3
gl.supports_S3TC: false
gl.supports_ATITC: false
gl.supports_ETC1: false
gl.max_texture_units: 8
gl.supports_PVRTC: true
gl.supports_NPOT: true
gl.supports_discard_framebuffer: true
gl.supports_BGRA8888: false
} libpng warning: iCCP: known incorrect sRGB profile
cocos2d: GLProgramState::init
cocos2d: Director End
AppDelegate::applicationDidFinishLaunching()
cocos2d: Application End
applicationDidBecomeActive
Application 单例的实现方法
//静态函数调用的时候会运行一次构造函数,这个时候就初始化这个对象了。
Application* Application::getInstance()
{
CC_ASSERT(sm_pSharedApplication);
return sm_pSharedApplication;
}
//初始化
Application* Application::sm_pSharedApplication = 0;
//Application的构造函数
Application::Application()
{
//在构造函数里面初始化sm_pSharedApplication
CC_ASSERT(! sm_pSharedApplication);
sm_pSharedApplication = this;
}
//Application的析构函数
Application::~Application()
{
CC_ASSERT(this == sm_pSharedApplication);
sm_pSharedApplication = 0;
}
Director 单例实现方法
static DisplayLinkDirector *s_SharedDirector = nullptr;
static Director* getInstance();
Director* Director::getInstance()
{
if (!s_SharedDirector)
{
s_SharedDirector = new DisplayLinkDirector();
s_SharedDirector->init();
} return s_SharedDirector;
}
void Director::setOpenGLView(GLView *openGLView)
{
CCASSERT(openGLView, "opengl view should not be null"); if (_openGLView != openGLView)
{
// Configuration. Gather GPU info
Configuration *conf = Configuration::getInstance();
conf->gatherGPUInfo();
CCLOG("%s\n",conf->getInfo().c_str()); if(_openGLView)
_openGLView->release();
_openGLView = openGLView;
_openGLView->retain(); // set size
_winSizeInPoints = _openGLView->getDesignResolutionSize(); createStatsLabel(); if (_openGLView)
{
setGLDefaultValues();
} //初始化renderer
_renderer->initGLView(); CHECK_GL_ERROR_DEBUG(); if (_eventDispatcher)
{
_eventDispatcher->setEnabled(true);
}
}
}

cocos2d-x 3.1.1 学习笔记[21]cocos2d-x 创建过程的更多相关文章

  1. [XMPP]iOS聊天软件学习笔记[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. cocos2d-x 3.1.1学习笔记[23]寻找主循环 mainloop

    文章出自于  http://blog.csdn.net/zhouyunxuan cocos2d到底是怎样把场景展示给我们的,我一直非常好奇. 凭个人猜想,引擎内部的结构类似于这样 while(true ...

  3. cocos2d-x 3.1.1 学习笔记[3]Action 动作

    这些动画貌似都非常多的样子,就所有都创建一次. 代码例如以下: /* 动画*/ auto sp = Sprite::create("card_bg_big_26.jpg"); Si ...

  4. cocos2d-x 3.1.1 学习笔记[2]Sprite 精灵

    Sprite应该是用到最多的一个类吧.无法想像一个游戏没有精灵将怎样进行愉快的玩耍. Sprite继承于Node 和 TextureProtocol. Sprite是一个2d的图像. Sprite能够 ...

  5. cocos2d-x 3.1.1 学习笔记[4]GridActions 网格动画

    文章写的  http://blog.csdn.net/zhouyunxuan 老样子.见代码. //GridActions can only used on NodeGrid auto nodeGri ...

  6. cocos2d-x 3.1.1 学习笔记[11] http请求 + json解析

    //http须要引入的头文件和命名空间 #include <network/HttpClient.h> using namespace network; //json须要引入的头文件 #i ...

  7. [XMPP]iOS聊天软件学习笔记[四]

    昨天完成了聊天界面,基本功能算告一段落 开发时间:五天(工作时间) 开发工具:xcode6 开发平台:iOS8 XMPP框架:XMPPFramework git clone https://githu ...

  8. [XMPP]iOS聊天软件学习笔记[三]

    今天做了好友界面,其实xmpp内部已经写好很多扩展模块,所以使用起来还是很方便的 开发时间:五天(工作时间) 开发工具:xcode6 开发平台:iOS8 XMPP框架:XMPPFramework gi ...

  9. [XMPP]iOS聊天软件学习笔记[二]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

随机推荐

  1. 使用Spring的JAVA Mail支持简化邮件发送(转)

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是Mail ...

  2. STL之Vector(不定长数组)

    vector是同一种对象的集合,每一个对象都有一个相应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. 引入头文件 #include<vector> 1.vec ...

  3. ftk学习记(waitbox篇)

    [声明:版权全部.欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到了脚本.那么就看看ftk中demo与script搭配的效果是什么样的? 上面的效果图就相 ...

  4. php获取分类以下的全部子类方法

    获取分类以下的全部子类方法: static function getMenuTree($arrCat, $parent_id = 0, $level = 0,$all=True) { static $ ...

  5. oracle varchar2 和varchar 区别

    今天,往ORACLE一个表的VACHAR2(20)字段中插入七个汉字,提示错误:插入的值太大. 改成插入六个汉字,又可以. 一直以来,都以为一个汉字占两个字节.觉得非常奇怪. 用length().le ...

  6. Gradle 修改 Maven 仓库地址(转)

    近来迁移了一些项目到Android Studio,采用Gradle构建确实比原来的Ant方便许多.但是编译时下载依赖的网速又着实令人蛋疼不已. 如果能切换到国内的Maven镜像仓库,如开源中国的Mav ...

  7. Java重写方法与初始化的隐患(转)

    原文出处: Shawon 虽然文章标题是Java, 但几乎所有面向对象设计的语言都遵守这个初始化流程, 感谢廖祜秋liaohuqiu_秋百万指出, 之前忘记提这个了. 前言 drakeet写了个和Re ...

  8. maven项目建立pom.xml报无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3

    一.发现问题 建立maven项目后,pom.xml在显示红叉.鼠标放上去,显示Executiondefault-testResources of goalorg.apache.maven.plugin ...

  9. Android自己定义控件实战——仿淘宝商品浏览界面

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38656929 用手机淘宝浏览商品详情时,商品图片是放在后面的,在第一个Scr ...

  10. Windows Phone开发(9):关于页面状态

    原文:Windows Phone开发(9):关于页面状态 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的. 啥是无状态?如果我们玩过Web开 ...