当前位置: 首页 > news >正文

Cocos2d中从场景切换到UIViewController视图方法总结

第一种:直接从场景切换到UIViewController视图(网上流传的版本)

- (void) showUIViewController:(UIViewController *) controller
{
 
   [[Director sharedDirector] pause];
    
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:[[Director sharedDirector] openGLView] cache:YES];
    
    [[[Director sharedDirector] openGLView] addSubview:controller.view];
    
    [UIView commitAnimations];
}

从UIViewController视图切换到场景

//返回场景视图
- (void) hideUIViewController:(UIViewController *) controller
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animDone:finished:context:)];
    
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:[[Director sharedDirector] openGLView] cache:YES];
    
    [controller.view removeFromSuperview];
    
    [UIView commitAnimations];
}

-(void)animDone:(NSString*) animationID finished:(BOOL) finished context:(void*) context
{    
    [[Director sharedDirector] resume];
}

备注:
代码1:[[[[CCDirector sharedDirector] openGLView] window]addSubview:viewController.view];
效果:添加的view会随着window是横屏还是竖屏变化,添加之后如果view下面覆盖了一个cocos2d的按钮,点击按钮的区域按钮不响应点击。
代码2:[[[CCDirector sharedDirector] openGLView]addSubview:viewController.view];
效果:不随着变化,并且底部的按钮相应点击

第二种:通过RootViewController切换 (自己写的)

1、默认情况下面,cocos2d 模板并没有在AppDelegate里面包含一个RootViewController的属性,因此必须手动添加一个。
跳转到AppDelegate.h文件,并添加下面的代码:
@property (nonatomic, retain) RootViewController * viewController;

然后跳转到AppDelegate.m,synthesize之:

@synthesize viewController;

2、添加

 

#import "AppDelegate.h"

- (void) showUIViewController:(UIViewController *) controller
{
    AppDelegate *delegate=(AppDelegate *)[UIApplication sharedApplication].delegate;
    [delegate.viewController presentModalViewController:controller animated:YES];
   
}

 

从UIViewController视图切换到场景
//返回场景视图

第一种:在UIViewController调用dismissModalViewControllerAnimated 来返回,例如:

[self dismissModalViewControllerAnimated:YES];

第二种使用委托,让RootViewController来控制,例如

[appdelegate.viewController dismissModalViewControllerAnimated:YES];
 
备注:cocos2d 2.0的,上面那个RootViewController*viewController改成了UINavigationController *navController_;获取视图控制器改成[delegate.navController.view addGestureRecognizer:gestureRecognizer];

 

转载于:https://www.cnblogs.com/wangqiuyun/archive/2012/09/22/noah.html

相关文章:

  • OpenStack架构详解
  • mysql安装出现error Nr.1045
  • 第 2 章 Document Tools
  • JSTL 核心标签库 使用【转载】
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • java中的IO整理(转)
  • collections工具类 排序
  • 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  • Design Pattern: Builder 模式
  • xml 相关操作
  • activity添加切换动画之后出现的黑色背景问题
  • GNU make manual 翻译( 一百五十八)
  • Linux自学笔记——nginx详解
  • POJ 1722 DP
  • centos搭建ssh
  • 分享一款快速APP功能测试工具
  • Angular2开发踩坑系列-生产环境编译
  • chrome扩展demo1-小时钟
  • crontab执行失败的多种原因
  • Gradle 5.0 正式版发布
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Mysql优化
  • php的插入排序,通过双层for循环
  • quasar-framework cnodejs社区
  • select2 取值 遍历 设置默认值
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 服务器之间,相同帐号,实现免密钥登录
  • 技术:超级实用的电脑小技巧
  • 经典排序算法及其 Java 实现
  • 精彩代码 vue.js
  • 你真的知道 == 和 equals 的区别吗?
  • 线上 python http server profile 实践
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 一些关于Rust在2019年的思考
  • 栈实现走出迷宫(C++)
  • ​flutter 代码混淆
  • #NOIP 2014#Day.2 T3 解方程
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (2022 CVPR) Unbiased Teacher v2
  • (day6) 319. 灯泡开关
  • (ZT)一个美国文科博士的YardLife
  • (zt)最盛行的警世狂言(爆笑)
  • (一) springboot详细介绍
  • (一)kafka实战——kafka源码编译启动
  • . Flume面试题
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NetCore 如何动态路由
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @ComponentScan比较
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [BIZ] - 1.金融交易系统特点
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法