因为android studio中的SplashActivity并没有什么卵用,只是开机1s显示开机画面,1s后面还是黑屏。

 

在主文件中加入以下代码,就是开始游戏时显示一个居中填满屏幕的图片,游戏加载完成后,再隐藏这个图片,来达到去掉黑屏的效果。

import android.app.ActionBar.LayoutParams;
import android.widget.ImageView;te ImageView image;
    //启动游戏,解决黑屏,顶层显示的图片
    private LayoutParams params;
    private ImageView image;
    public void startSplash(){
        params = new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT);
        //设置中间位置
        params.gravity = Gravity.CENTER;
        image = new ImageView(this);
        image.setScaleType(ImageView.ScaleType. CENTER_CROP);
        image.setImageResource(R.drawable.splash_img);
        //添加控件
        addContentView(image, params);
    }

    //游戏启动后,隐藏顶层显示的图片
    public void stopSplash(){
        image.setVisibility(View.GONE);
    }

 

哦,我的主文件是testappas

 

在onCreate中调用startSplash

 

监听stopSpash事件

    private void setInterfaces() {
        // Egret(TypeScript)-Runtime(Java)通讯
        // setRuntimeInterface(String name, IRuntimeInterface interface) 用于设置一个runtime的目标接口
        // callEgretInterface(String name, String message) 用于调用Egret的接口,并传递消息
        gameEngine.setRuntimeInterface("RuntimeInterface", new IRuntimeInterface() {
           @Override
            public void callback(String message) {
                Log.d(TAG, message);
                gameEngine.callEgretInterface("EgretInterface", "A message from runtime");
            }
        });

        gameEngine.setRuntimeInterface("reqLogin", new IRuntimeInterface() {
            @Override
            public void callback(String message) {
                Log.d("externalInterface", "接收到Egret的登录请求 : " + message);

                gameEngine.callEgretInterface("revLogin", "登录成功");
            }
        });

        gameEngine.setRuntimeInterface("stopSplash", new IRuntimeInterface() {
            @Override
            public void callback(String message) {
                Log.d("externalInterface", "关闭开机画面 : " + message);
                stopSplash();
            }
        });

    }

 

 Egret游戏加载完成后,在出现Egret自己的加载页面之前调用stopSpash接口即可。

我一般是在显示在自己loadScene之前调用。

egret.ExternalInterface.call("stopSplash","");

 

posted on 2018-01-14 21:11  gamedaybyday  阅读(754)  评论(0编辑  收藏  举报