cocos2D捕鱼达人源代码初学者详解3AppDelegate

2023-11-08

    AppDelegate.m

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void) removeStartupFlicker

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//removeStartupFlicker这个方法是专门用来去除闪烁的,只要打开注释,把
//CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"];
//替换成自己定义的Default名字就可以了。这样我们可以在程序开始显示Default这个图片,以实现Default的淡出效果,以及与logo的完美切换。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

#if GAME_AUTOROTATION == kGameAutorotationUIViewController

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//Cocos2D横竖屏设置
//    项目设计的时候首先决定有无需求做自动旋转,没有的话就用 kGameAutoroationNone
//    有的话再决定从 kGameAutorotationUIViewController 和 kGameAutorotationCCDirector 里面选一个。
//    后面二者的区别:
//    CCDirector 是那种直来直往的,屏幕一翻转它会一步到位将画面翻转过来。
//    UIViewController 则不一样,旋转的时候他会有个过渡的旋转效果,个人感觉比 CCDirector 那种的体验要好。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    UIScreen类代表了屏幕,通过这个类我们可以获取一些想要的东东。
//    CGrect screenBounds = [ [UIScreen mainScreen]bounds];//返回的是带有状态栏的Rect
//    CGRect viewBounds = [ [UIScreen mainScreen]applicationFrame];//不包含状态栏的Rect
//    screenBounds 与 viewBounds 均是相对于设备屏幕来说的
//    所以 screenBounds.origin.x== 0.0 ;   screenBounds.oringin.y = 0.0;
//    screenBounds.size.width == 320;  screenBounds.size.height == 480(或者其他分辨率有所差异)
//    所以 screenBounds.origin.x== 0.0 ;   screenBounds.oringin.y = 20.0;(因为状态栏的高度是20像素)   screenBounds.size.width == 320;  screenBounds.size.height == 480
//    取得StatusBar的位置和大小
//    [self.view addSubview:theToolbar];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
  [CCDirector setDirectorType:kCCDirectorTypeDefault];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    判断你的设备是否支持CCDirectorTypeDisplayLink模式,如果不支持就设置为CCDirectorTypeDefault类型。
//    CCDirectorTypeDisplayLink:利用iPhoneOS 3.1新特性,提供高于NSTimer的执行效率,保持与UIKit的兼容性。默认的就是NSTimer的执行效率。
// 这几个 Type 的区别主要和 Director 的一个重要功能有关,就是对 mainLoop: 的调用有关。
//    整个 Cocos2d 的渲染都是源自 mainLoop:,每一帧渲染就是一次 mainLoop: 的调用。
//    四个不同的 Director 就是四种不同调用 mainLoop: 的方式:
//# kCCDirectorTypeNSTimer,使用 API 设定定时器,定时器到了之后就调用 mainLoop:
//# kCCDirectorTypeMainLoop,就是cocos2d自己用代码写的一个死循环,每次循环调用 mainLoop: 一次
//# kCCDirectorTypeThreadMainLoop,就是cocos2d单独创建一个线程,在那个线程里面写死循环
//# kCCDirectorTypeDisplayLink,就是和设备的刷新率同步,设备显示每刷新一次,就调用 mainLoop: 一次

    代码------------------------------------------------------------------------------------------------------------------------------------------------

CCDirector *director = [CCDirector sharedDirector];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    导演类也是一个单例,有两大作用,一是设置主窗口的显示属性(比如垂直或水平、是否显示FPS),二是管理、显示场景。
//    场景是树的根节点,一个游戏可以同时存在多个树,但被激活的只能有一个,导演类的实现方法是:将所有树的根节点(即场景对象)保存在一个堆栈中(array),最后进栈的就是当前激活的场景,当需要切换场景时,导演通过进栈、出栈或替换的方式实现。
//    常用方法:
//    +( CCDirector) shared CCDirector
//    获取单例。
//    -(void) runWithScene: (CCScene*)scene
//    将场景对象压入栈中,并激活(此时不能有已经激活的场景,因此该方法常用于刚进游戏时)。
//    -(void) replaceScene: (CCScene*)scene
//    替换当前激活的场景,同时将旧场景从堆栈中删除,新场景压入堆栈。
//    -(void) pushScene: (CCScene*) scene
//    添加新的场景进栈,并将其激活。
//    -(void) popScene
//    当前激活的场景出栈,激活上一个场景。
//    -(void) pause
//    暂停。
//    -(void) resume
//    恢复。
//    CCDirector是singleton模式的共享的对象。它知道当前哪个scene是激活。 CCDirector以stack的方式处理scenes的调用(当另一个scene进入的时候,暂停当前的scene,完成之后再返回原来的 scene),CCDirector 负责更换CCScene,在 CCLayer 被push的时候,更换或结束当前的scene。另外:CCDirector 负责初始化OpenGL ES。
//    作用:
//    1.访问和改变场景
//    2.访问cocos2d的配置细节
//    3.访问视图,(openGL, UIView, UIWindow)
//    4.暂停,恢复和结束游戏
//    5.在UIKit和OpenGL之间转换坐标
//    常用的方法:
//    1.主程序启劢,显示第一个场景的方法:(void) runWithScene:(Scene*) scene;
//    2. 挂起当前当前正在运行的场景并压栈到代执行场景队列。将传入场景设置为当前执行场景:(void) pushScene:(Scene*) scene;
//    3. 执行代执行场景队列中的最后一个场景,当前场景被释放:(void) popScene;当代执行队列中没有代执行场景时,系统自劢退出,调用 end 方法。
//    4. 直接用一个场景取代当前执行场景,释放当前场景:(void) replaceScene:(Scene*) scene;是经常实用的函数
//    5.结束场景运行:(void) end;
//    6.暂停场景运行:(void) pause;画面还存在,时间任务停止。
//    7.恢复场景运行:-(void) resume;
//    CCDirector。在整个游戏中一般只有一个导演。在游戏开始时,初始化CCDirector,游戏结束时,销毁它。CCDirector提供了管理场景的方法,如runWithScene、drawScene、pushScene和replaceScene等,通过这些API可以实现在各个场景之间切换,CCDirector也可以设置或者获取一些系统信息,如调整OpenGL的相关设置,获取屏幕的大小等。
//    cocos2d-x除了提供CCDirector外,还提供了CCDisplayLinkDirector。CCDisplayLinkDirector是一个可以自动刷新的CCDirector。CCDisplayLinkDirector继承自CCDirector,CCDirector继承自CCObject。
//    CCDirector主要负责当前窗口的内容,并且负责场景的切换和管理,它同时还还负责:
//    1. OpenGL中上下文的初始化(当然这在XNA中很多东西没有了)
//    2. 设置投影方式,默认为3D透视投影
//    3. 设置屏幕方向
//    4. 它是一个单实例
//    5. 设置着色器一些通用参数
//    1. 对于投影方式,cocos2d同时支持2D投影和3D投影,默认为3D投影,2D的情况下采用的是正投影。但是cocos2d大部分的功能需要3D的方式才能实现,所以你不应该随便切换为2D,除非你确保2D的方式能实现接下来要使用的功能。cocos2d中的2D投影主要是用来处理和2D相关的绘制,并且出于性能考虑,在某些特殊的情况下用2D来绘制,以后会讲到。
//    2. 对于XNA中basicEffect的一些通用默认参数的设置,比如TextureEnabled可以放在CCDirector来做,目前全部放到Draw方法中设置,这个以后放在优化之列。
//    但是除此之外,CCDirector还有许多辅助的功能,这些是注释当中没有的,而开发中会遇到的,这里我在列举一下:
//    1. 显示和设置FPS
//    2. 修改窗口大小,绘制缩放比例
//    3. OpenGL坐标和屏幕位置之间的转化,也就是基于左上角为原点坐标系中的点,和左下角为原点的坐标系中的点的坐标转换,这个比如在XNA中接受的Touch事件中的点是左上角为原点的坐标系,在处理的时候需要转换为左下角为原点的坐标系
//    4. 获取和设置窗口尺寸
//    5. 一共运行了多少帧
//    6. 设置AlphaBlending,深度测试等
//    当然,CCDirector最重要的功能是场景管理,
//    CCDirector 作用
//    1 设置主窗口显示的属性
//    设定Director对象与当前窗口的关系,便于director操作主窗口
//    设置主窗口方向
//    是否显示fps
//    设定每秒帧数
//    设定主窗口显示图像的调色盘位宽
//    管理,显示场景
//    1当前正在显示的场景Scene *runningScene_
//    2 下一个将要显示的场景 Scene *nextScene;
//    3 等待执行场景队列NSMutableArray *scenesStack;
//    Director 对象管理场景的方法
//    1 显示第一个场景
//    (void)runWithScene:(Scene *)scene;
//    2挂起当前正在运行的场景并压栈到带执行场景队列,将传入场景设置为当前执行场景
//    (void)pushScene:(Scene *)scene;
//    3执行代执行场景队列中最后一个场景,当前场景被释放
//    (void)popScence
//    当带执行队列中没有代执行场景时,系统自动退出,调用end方法
//    4 直接用一个场景取代当前执行场景,释放当前场景
//    (void)replacesScene:(Scene *)scene 这个函数经常使用
//    5结束场景运行 (void)end;
//    6停止场景运行 (void)pause
//    7恢复运行-(void) resume

 

    代码------------------------------------------------------------------------------------------------------------------------------------------------

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    创建RootViewController这个视图控制器的实例。使用alloc方法创建一个视图控制器,然后用initWithNibName:bundle:方法对其进行初始化。init方法先指定控制器应加载的nib文件,然后指定在哪个程序包中可找到该文件。程序包是文件系统某个位置的抽象,该位置存放了应用程序将会用到的代码和资源。
//    使用属性的存取方法,将创建好的视图控制器实例设置为viewController属性变量的值
//    根据内存管理规则释放视图控制器
//    视图控制器用来配置和管理在应用程序中看到的视图,每一个视图也对应有一个视图控制器来管理。窗体(window)有一个根视图控制器——这个视图控制器负责配置当窗体显示时最先显示的视图。要让你的视图控制器的内容显示在窗体中,需要去设置窗体的根视图控制器为你的视图控制器。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

viewController.wantsFullScreenLayout = YES;/

    代码------------------------------------------------------------------------------------------------------------------------------------------------

;// viewController的一个属性,这个属性默认值是NO,如果设置为YES的话,如果statusbar,navigationbar, toolbar是半透明的话,viewController的view就会缩放延伸到它们下面,但注意一点儿tabBar不在范围内,即无论该属性是否为YES,view都不会覆盖到tabbar的下方
 

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 EAGLView *glView = [EAGLView viewWithFrame:[window bounds]// EAGLView 派生类 UIView, 苹果公司用它来实现 OpenGL 输出支持,以支持OpenGL ES 编程:
           pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8// 这个参数代表像素格式
           depthFormat:0      // GL_DEPTH_COMPONENT16_OES// 这个参数代表浓度深度缓冲是一个与你的渲染目标(render target)相同大小的缓冲,这个缓冲记录每个像素的深度
      ];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 [director setOpenGLView:glView];//绑定到OpelGL

    代码------------------------------------------------------------------------------------------------------------------------------------------------

#if GAME_AUTOROTATION == kGameAutorotationUIViewController//设置设备的方向
 [director setDeviceOrientation:kCCDeviceOrientationPortrait];//竖屏
#else
 [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];//横屏
#endif

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//       UIDeviceOrientationFaceUp朝上平躺
//       UIDeviceOrientationFaceDown朝下平躺
//       UIDeviceOrientationLandscapeLeft向左橫置
//       UIDeviceOrientationLandscapeRight向右橫置
//       UIDeviceOrientationPortrait直立
//       UIDeviceOrientationPortraitUpsideDown直立,上下顛倒
//       UIDeviceOrientationUnknown未知方向
     //return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); // 只支持向左横向, YES 表示支持所有方向

    代码------------------------------------------------------------------------------------------------------------------------------------------------

[director setAnimationInterval:1.0/60];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    动作间隔决定了cocos2d刷新屏幕的频率,它关乎游戏可以获得的最大帧率。但动作间隔并不等同于每秒刷新多少帧。相反,它表示的是cocos2d刷新一帧所需要的时间。在上面的代码中,动作间隔的参数为1.0/60,这就是cocos2d对屏幕进行连续两次刷新之间的时间间隔。
//    很多情况下,最好把帧率设置为30fps。这对复杂游戏很有帮助,因为这样做可以避免由于帧率无法达到60fps,而在游戏过程中发生30fps到60fps间的大幅波动。在这种情况下,最好把帧率设为可能达到的最低帧率,因为较低但是稳定的帧率可以保证游戏的流畅运行,而平均帧率较高但是帧率可能发生大幅波动的游戏会降低玩家的用户体验。
//    注意:在iOS设备上不能以高于60fps的帧率进行渲染,因为设备的屏幕刷新率被锁定为最高60fps。如果强迫cocos2d以高于60fps的帧率进行渲染,那么在最好情况下,cocos2d会以60fps的帧率进行渲染;而在最坏情况下,它的帧率反而会下降。所以,如果想让cocos2d以最快速度进行渲染,应把动作间隔参数设为1.0/60。
 [director setDisplayFPS:YES];//显示每秒帧数//使能“Display FPS”后屏幕的左下角会显示一个小数字。这个是你的帧速率,理想状况是你的游戏在任何时候都能跑在60fps上。这个FPS显示能帮助你跟踪帧速率和游戏中出现的任何打嗝和结巴状况。启动帧率显示功能以后,在屏幕的左下角会出现一个小小的数字,这就是应用程序的帧率,或者硕士每秒刷新的帧数。
//    注意:如果需要调整显示帧率的反应速度,可以在ccConfig.h文件中修改CC_DIRECTOR_FPS_INTERVAL代码行。该文件位于cocos2d Sources/cocos2d中。该值默认为0.1,即在默认情况下,表示帧率的数字会在每秒被刷新10次。如果增大该值,那么小数字就会被刷新得更慢,虽然这个变化不明显,但还是存在的。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 [viewController setView:glView];//设定viewController的view为glView。
  [window addSubview: viewController.view];//addSubview 是将view加到所有层的最顶层

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    //方法一,新方法
//    self.window.rootViewController = self.tabBarController;
//    [self.window makeKeyAndVisible];
//   
//    //方法二,旧方法
//        [_window addSubview:self.tabBarController.view];
//        [_window makeKeyAndVisible];
//    4.0之前用addsubview 之后用RootViewController

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 [window makeKeyAndVisible];//makeKeyAndVisible作用被使用对象的主窗口显示到屏幕的最前端。
 [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 //更改默认的纹理像素格式,设置渲染格式位32位RGB,纹理像素格式的改变会影响后面加载的所有纹理。因此,如果你想后面加载纹理使用不同的像素格式的话,必须再调用此方法,并且重新设置一遍像素格式,像素格式与图片本身的像素格式不匹配的话,就会导致显示严重失真。比如颜色不对,或者透明度不对等
//    有哪些比较有用的纹理像素格式呢?
//    generate 32-bit textures: kCCTexture2DPixelFormat_RGBA8888 (default)
//    generate 16-bit textures: kCCTexture2DPixelFormat_RGBA4444
//    generate 16-bit textures: kCCTexture2DPixelFormat_RGB5A1
//    generate 16-bit textures: kCCTexture2DPixelFormat_RGB565 (no alpha)
//    RGBA8888是默认的格式。对于16位的纹理来说,使用RGB565可以获得最佳颜色质量,因为16位全部用来显示颜色:总共有65536总颜色值。但是,这里有个缺点,除非图片是矩形的,并且没有透明像素。所以RBG565格式比较适合背景图片和一些矩形的用户控件。
//    RBG5A1格式使用一位颜色来表示alpha通道,因此图片可以拥有透明区域。只是,1位似乎有点不够用,它只能表示32768种可用颜色值。而且图片要么只能全部是透明像素,或者全部是不透明的像素。因为一位的alpha通道的缘故,所以没有中间值。但是你可以使用fade in/out动作来改变纹理的opacity属性。
//    如果你的图片包含有半透明的区域,那么RBGA4444格式很有用。它允许每一个像素值有127个alpha值,因此透明效率与RGBA8888格式的纹理差别不是很大。但是,由于颜色总量减少至4096,所以,RBGA4444是16位图片格式里面颜色质量最差的。 
//    现在,你可以得到16位纹理的不足之处了:它由于颜色总量的减少,有一些图片显示起来可能会失真,而且可能会产生“梯度”。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

 [self removeStartupFlicker];//移除闪屏,即一开始的那个coco2d Logo标志的屏幕
 [[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];//将场景入栈,并激活。(只适用于整个App的第一个CCScene)

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    CCScene的4个基本方法:runWithScene(运行画面),replaceScene(替换场景 例如从主菜单进入游戏界面),
//    pushScene(暂停界面), popScene(从暂停的界面还原到游戏界面)CCDirector 负责scenes之间的前进或后退

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void)applicationWillResignActive:(UIApplication *)application {
 [[CCDirector sharedDirector] pause];//游戏暂停

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    当有电话进来或者锁屏,这时你的应用程会挂起,在这时,UIApplicationDelegate委托会收到通知,调用 applicationWillResignActive 方法,你可以重写这个方法,做挂起前的工作,比如关闭网络,保存数据。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void)applicationDidBecomeActive:(UIApplication *)application {
 [[CCDirector sharedDirector] resume];//游戏复原

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//    当程序复原时,另一个名为 applicationDidBecomeActive 委托方法会被调用,在此你可以通过之前挂起前保存的数据来恢复你的应用程序:
//    注意:应用程序在启动时,在调用了 applicationDidFinishLaunching 方法之后也会调用 applicationDidBecomeActive 方法,所以你要确保你的代码能够分清复原与启动,避免出现逻辑上的bug。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
 [[CCDirector sharedDirector] purgeCachedData];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//清除所有缓存数据,设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止

    代码------------------------------------------------------------------------------------------------------------------------------------------------

-(void) applicationDidEnterBackground:(UIApplication*)application {
 [[CCDirector sharedDirector] stopAnimation];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可

    代码------------------------------------------------------------------------------------------------------------------------------------------------

-(void) applicationWillEnterForeground:(UIApplication*)application {
 [[CCDirector sharedDirector] startAnimation];

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//当程序从后台将要重新回到前台时候调用

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void)applicationWillTerminate:(UIApplication *)application {

    代码------------------------------------------------------------------------------------------------------------------------------------------------
//    当用户按下按钮,或者关机,程序都会被终止。当一个程序将要正常终止时会调用 applicationWillTerminate方法。但是如果长主按钮强制退出,则不会调用该方法。这个方法该执行剩下的清理工作,比如所有的连接都能正常关闭,并在程序退出前执行任何其他的必要的工作,这个需要要设置UIApplicationExitsOnSuspend的键值。

    代码------------------------------------------------------------------------------------------------------------------------------------------------

- (void)applicationSignificantTimeChange:(UIApplication *)application {
 [[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
  

    代码------------------------------------------------------------------------------------------------------------------------------------------------

//当系统时间发生改变时执行

//设置下次增量时间是否为零


 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2D捕鱼达人源代码初学者详解3AppDelegate 的相关文章

  • 【Cocos2d-x】Win7+ vs2012,2010 + Cocos2d-x2.2 配置Cocos2d-X项目-环境

    新安装搭建cocos2d X的跳过这里 xff0c 看下面红色开始 xff1a cocos2d x删除vs2012项目模板 这一步新使用cocos2d x的不需要 如果你切换cocos2d x版本的话 xff0c 要将之前版本的vs模板删除
  • Cocos2d-android游戏引擎-介绍

    一 游戏引擎概念 什么是游戏引擎 游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件 这些系统为游戏设计者提供各种编写游戏所需的各种工具 xff0c 其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开
  • customEventData的普通用法

    需要先用event来接受一些其他信息 然后传入的数值放在参数中 类型按钮按下 TypeButtonDown event value console log 按下 console log value 然后再button这里设置好eventDa
  • 高质量程序设计指南C++ C 代码规范

    这里只是搬运作者对 匈牙利 命名规则做合理简化之后的命名规则 比较适合于 Windows应用程序的开发 建议1 类型名和函数名均以大写字母开头的单词组合而成 例如 class Node 类名 class LeafNode 类名 void D
  • cocos creator碰撞和碰撞回调不生效

    1 碰撞不生效 一定要记得 在使用物理的时候 一定要先开启物理 cc director getPhysicsManager enabled true 只有在onLoad 中 开启 才有效 在onEnable 或者start 都无效 2 碰撞
  • TiledMap简介

    TiledMap简介 TiledMap是一款地图编辑器 我们常用它编辑一些相似度很大的背景 例如 超级 玛丽的地图 天天酷跑 COC等 这些游戏的地图都有一个共同点那么就是有很多相 同的色块组成 如果用纯代码取拼接那会很复杂 如果用Tile
  • cocos2D捕鱼达人源代码初学者详解3AppDelegate

    AppDelegate m 代码 void removeStartupFlicker 代码
  • C++(19)——智能指针shared_ptr

    shared ptr的概念 shared ptr实现共享式拥有 shared ownership 概念 多个智能指针可以指向相同对象 该对象和其相关资源会在 最后一个引用 reference 被销毁 时候释放 基本原理 智能指针是 几乎总是
  • 有关cocos2d创建c++项目,并把win32项目打包成apk文件

    首先进入cocos2d资源包文件夹例如 cd D Cocos Cocos2d x cocos2d x 3 10 再输入cocos new try项目名 p org cocos2dx 包名 l cpp d codes 创建cocos2d 3
  • Cocos2d-android游戏引擎

    什么是游戏引擎 游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件 这些系统为游戏设计者提供各种编写游戏所需的各种工具 其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始 Cocos2d家族 coc
  • cocosCreator 之 ScrollView

    版本 3 4 0 参考 ScrollView组件 简介 ScrollView组件作为滚动容器来使用 它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域 来保证有限的区域内显示更多的内容 它的构成部分 ScrollB
  • DragonBones tools龙骨转换spine工具使用

    附上仓库连接 如果进不去需要尝试墙 Tools README zh CN md at master DragonBones Tools GitHub 安装所需依赖 npm install dragonbones tools global 使
  • 【基于Cocos Creator实现的赛车游戏】9.实现汽车节点的控制逻辑

    转载知识星球 深度连接铁杆粉丝 运营高品质社群 知识变现的工具 项目地址 赛车小游戏 基于Cocos Creator 3 5版本实现 课程的源码 基于Cocos Creator 3 5版本实现 在上一节的课程中 您已经实现了通过触控给刚体施
  • 如何从通知深层链接到 SwiftUI 中的屏幕?

    我正在尝试在我的应用程序中设置深层链接 我已经设置了应用程序以及推送通知 但是 我无法完成 AppDelegate 接收用户单击我想要深层链接到的屏幕的通知的最终链接 我基本上想从 AppDelegate 调用 viewRouter goT
  • 在 iOS 中处理不同的 URL 方案(Facebook 和 Instagram)

    我什至不知道如何定义这个问题 但它就是这样 我有一个使用 Facebook SDK 进行用户登录的应用程序 我按照 Facebook 授权教程进行操作 我不是 100 确定它是如何工作的 但这部分在我的 AppDelegate m 中似乎很
  • 当应用程序处于后台状态时暂停计时器 Swift

    我的 ViewController swift func startTimer timer NSTimer scheduleTimerWithTimerInvterval 1 0 target self selctor Selector c
  • 更改本机、phonegap/Cordova 构建的 iOS 应用程序中的键盘外观

    我想更改我的 Phonegap Cordova 构建的本机 iOS 应用程序中出现的所有键盘的背景颜色 如下所示 当然 我已经彻底搜索了这个问题 主要找到了两个相关答案 回答者here说 Objective C 代码可以添加到 PhoneG
  • 最后一个窗口关闭时关闭 SwiftUI 应用程序[重复]

    这个问题在这里已经有答案了 当用户关闭最后一个窗口时 是否可以关闭 macOS SwiftUI 应用程序 类似于applicationShouldTerminateAfterLastWindowClosed应用程序委托函数 func app
  • 应用程序的生命周期 - 当应用程序终止并且推送套件有效负载到来时

    应用程序的生命周期是怎样的 当应用程序处于终止状态并且推送套件有效负载到来时 首先 Pushkit 委托方法将起作用 或者 AppDelegate 方法将起作用 有人可以描述在这种情况下调用方法的顺序吗 感谢您的回答 提前致谢 一旦推送套件
  • 无法在 iOS8 上设置交互式推送通知

    我已经能够设置交互式本地通知 但远程通知不起作用 我正在使用 Parse com 发送 JSON 我的 AppDelegate Swift 看起来像这样 AppDelegate swift SwifferApp Created by Tra

随机推荐

  • 解决docker nginx无法查看日志的问题

    我们知道 Nginx的日志默认存放在 var log nginx access log var log nginx error log 但在使用nginx镜像构建的容器时 出现无法查看日志的问题 用cat命令后无反应 通过如下命令可以看到
  • android面试题-ActivityRecord TaskRecord和ProcessRecord之间的关系

    转自 http blog csdn net mwq384807683 article details 72529285 源码分析相关面试题 Volley源码分析 注解框架实现原理 okhttp3 0源码分析 onSaveInstanceSt
  • 数据分析之训练数据集处理

    在训练dbnet的时候 需要进行数据分析的一些方法来分割数据集 这里刚好整理一下 coding utf 8 用于解决编码问题 x strip strip 方法删除前导空格和尾随空格 with open as 方法 with open 1 t
  • 外向交货单发货过账BAPI:BAPI_OUT…

    前面说过 可以使用 WS DELIVERY UPDATE 进行外向交货单的发货过账 当然 这个可实现的很多 过账 冲销 删除都可以 但是这个不是bapi 是个函数 则会缺少bapi自带的那些校验 为了更安全 其实建议是使用 BAPI OUT
  • 创建Gravatar头像

    Gravatar Globally Recognized Avatar的缩写 是一项用于提供在全球范围内使用的头像服务 只要你在Gravatar的服务器上上传了你自己的头像 你便可以在其他任何支持Gravatar的博客 论坛等地方使用它 它
  • shared-service.ts

    shared service ts import Observable from rxjs Observable import Injectable from angular core import Subject from rxjs Su
  • npm link

    正文 npm link的用法 假如我们想自己开发一个依赖包 以便在多个项目中使用 一种可行的方法 也是npm给我们提供的标准做法 那就是我们独立开发好这个 依赖包 然后将它直接发布到 npm镜像站 上去 等以后想在其他项目中使用的时候 直接
  • 为什么说测试岗位是巨坑?10年测试人告诉你千万别上当

    每次都有人问我软件测试的前景是什么样的 每年也会有人很多人纷纷涌入测试的岗位上 希望自己能够进入阿里 华为等大厂 但是测试岗位真的那么吃香吗 今天我结合从零基础小白到测试开发的成长经历 来说下这个行业的发展前景 以及要入行的同学应该从哪个地
  • MinIO安装配置访问以及SpringBoot整合MinIO

    MinIO 1 MinIO安装 Minio 是个基于 Golang 编写的开源对象存储服务 存储非结构化数据 如 图片 视频 音乐等 官网地址 https min io 中文地址 http minio org cn 官网文档 中文 地址 h
  • C高级 day4

    1 有m1 txt m2 txt m3 txt m4 txt 分别创建出对应的目录 m1 m2 m3 m4 并把文件移动到对应的目录下 1 sh bin bash touch m1 txt m2 txt m3 txt m4 txt for
  • 【Ant Design】<a-date-picker>只选择今天之前的日期

  • LeetCode-N数之和类问题总结(双指针法)

    两数之和 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那两个整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 你不能重复利用这个数组中同样的元素 示例 给定 nums 2 7 1
  • jsp中编码问题(自认为这个最好)

    在JSP Servlet中主要有以下几个地方可以设置编码 pageEncoding UTF 8 contentType text html charset UTF 8 request setCharacterEncoding UTF 8 和
  • python pdf转word

    转自 https yq aliyun com articles 487610 spm a2c4e 11153940 blogcont493499 12 655a7962KsKW7M 1 安装pdfminer3k模块 安装anaconda后
  • java listnode 合并链表_剑指offer:合并两个排序的链表(Java)

    1 问题描述 输入两个单调递增的链表 输出两个链表合成后的链表 当然我们需要合成后的链表满足单调不减规则 2 思路 方法1 非递归方法 根据题目这个很类似排序中的外排过程 两个数组分别排好序 然后再把他们整体进行排序 所以这道题思想很简单
  • Nvidia Jetson 编解码开发(6)Jetpack 4.x版本Multimedia API 硬件编码开发--输入端对接Camera V4L2采集

    1 前言 Nvidia Jetson 编解码开发 2 Jetpack 4 x版本Multimedia API 硬件编码开发 集成encode模块 free xx的博客 CSDN博客 基于上篇继续开发 由于上篇只集成了encode模块 但是编
  • Redis作为消息队列的优劣

    Redis缓存问题 Redis作为消息队列的优劣 Redis集群模式下保证可迁移和高可用 一致性算法 Redis热Key问题解决方案汇总 Redis基于内存 高性能并且提供多种数据结构供使用 那么对于Redis能不能作为消息队列 以及与专业
  • 【Unity小游戏】游戏开发案例-Unity打造畅玩无阻的小游戏(下)

    击球方阵 乒乓克隆 使用立方体建造竞技场 球拍和球 移动球和球拍 击球并得分 让相机感受到冲击力 给游戏一个抽象的霓虹灯外观 这是有关基础游戏的系列教程中的第一个教程 在其中 我们将创建一个简单的 Pong 克隆 本教程是使用 Unity
  • Blob分析实现缺陷检测

    检测饼干的缺陷 blob 特征 1 正常的图 2 有缺陷的图 3 代码 This example demonstrates a quality inspection on hazelnut wavers Using the morpholo
  • cocos2D捕鱼达人源代码初学者详解3AppDelegate

    AppDelegate m 代码 void removeStartupFlicker 代码