zoukankan      html  css  js  c++  java
  • 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];

  • 相关阅读:
    编解码学习笔记(十):Ogg系列
    php大小写问题
    thinkphp5内置标签
    php递归实现无限级分类
    thinkphp5项目--企业单车网站(五)
    控制器不存在:appadmincontrollerDocument
    Cookie与Session的区别与联系及生命周期
    thinkphp5项目--企业单车网站(四)
    thinkphp5项目--企业单车网站(三)
    thinkphp使后台的字体图标显示异常
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332632.html
Copyright © 2011-2022 走看看