cocos creator横竖屏切换问题

本文主要介绍了在Cocos Creator中如何进行横竖屏切换。在web平台上,可以直接使用cc.view.setOrientation方法;而在原生iOS和Android平台上,需要修改原生代码。在iOS的AppController.mm文件中添加cocosChangeOrientation方法,Android的AppActivity.java中添加changeOrientationH方法,并在项目构建时根据需求设定屏幕方向。

脚本代码

1.web平台直接调用cc.view.setOrientation(原生平台调用原生代码)

changeOrientationH = function (val) {
    let w = cc.view.getFrameSize().width;
    let h = cc.view.getFrameSize().height;

    if (val && w > h) {
        console.log("已经是横屏,无需修改!",w ,h);
        return
    } else if (!val && w < h) {
        console.log("已经是竖屏,无需修改!",w ,h);
        return
    }

    cc.view.setFrameSize(h, w);

    if (cc.sys.os == cc.sys.OS_IOS) {
        console.log(">>>ios:", cc.sys.os, cc.sys.OS_IOS);
        jsb.reflection.callStaticMethod('AppController', "cocosChangeOrientation", val);
    } else if (cc.sys.os == cc.sys.OS_ANDROID) {
        console.log(">>>android:", cc.sys.os, cc.sys.OS_IOS);
        jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "changeOrientationH", "(Z)V", val);
    }
    if (val)
    {
        cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
    }
    else
    {
        cc.view.setOrientation(cc.macro.WEB_ORIENTATION_PORTRAIT);
    }
}

原生ios代码:

在发布出的原生工程中找到AppController.mm文件,编写脚本里面的切换方法cocosChangeOrientation。
在这里插入图片描述
经过调试发现,这里调用cocosChangeOrientation的时候,先设置方向为unknown,再去切换,不然不能触发场景横竖屏切换。

原生Android代码:

在发布的原生工程中找到AppActivity.java,编写切换的方法changeOrientationH。
app是定义的变量

public class AppActivity extends Cocos2dxActivity {
 private static AppActivity app = null;
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app = this;
  }
  public static void changeOrientationH(final boolean type)
    {
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (type)
                {
                    app.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                }
                else
                {
                    app.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
            }
        });
    }
}

项目构建的时候根据项目需要选择一种方向。
在这里插入图片描述
参考链接:https://www.jianshu.com/p/48ca5d70806d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值