天天看点

cocoscreator android 项目启动加载黑屏加个遮罩掩盖

cocoscreator android 项目启动加载jswrapper时间过长黑屏加个遮罩掩盖。

正如网友 https://www.jianshu.com/p/662274d5d637 通过activity快速启动,但是加载过程属于游戏activity,导致加载时还是黑屏,所以在oncreate()方法里通过addContend()加一个图片来遮挡黑屏,在底层加载完jswrapper后进入main.js的boot函数进入游戏场景时通过jsb调用java层清理图片遮罩,正常进入游戏界面。

先建立一个主题 主题继承android自带的全屏黑

<resources>

    <style name="AppWelcome" parent="@android:style/Theme.NoTitleBar.Fullscreen">

        <item name="android:windowBackground">@drawable/welcome</item>

    </style>

</resources>

然后在AndroidManifest.xml 中将appActivity 的主题换成以上主题

<activity

android:name="org.cocos2dx.javascript.AppActivity"

android:screenOrientation="sensorLandscape"

android:configChanges="orientation|keyboardHidden|screenSize"

android:label="@string/app_name"

android:theme="@style/AppWelcome"

>

这样启动就显示一张全屏图了。

在appActivity中加入变量和函数并在oncreate()中实例下

protected static Handler mUIHandler;

private static ImageView mWelcome = null;

    // 创建一个ImageView,welcome是闪屏图片

    protected ImageView createLaunchImage() {

        mWelcome = new ImageView(mContext);

        mWelcome.setImageResource(R.drawable.welcome);

        mWelcome.setScaleType(ImageView.ScaleType.CENTER_CROP);

        return mWelcome;

    }

    // 当资源加载好了之后 删除之前创建的imageView 否则一直会在界面上显示

    public static void removeLaunchImage() {

        mUIHandler.post(new Runnable() {

            @Override

            public void run() {

                if (mWelcome != null) {

                    mWelcome.setVisibility(View.GONE);

                }

            }

        });

    }

在onCreate() 中加

// DO OTHER INITIALIZATION BELOW

mUIHandler = new Handler();

// 显示launch image 遮住「黑屏」

addContentView(createLaunchImage(),

new WindowManager.LayoutParams(

WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN));

在main.js中调整

var launchScene = settings.launchScene;

var clearWelcomeImage = function(){

console.log("clear welcome image ...")

if (cc.sys.os === cc.sys.OS_ANDROID) {

let className = "org/cocos2dx/javascript/tool/Utils";

let sigs = "()V";

jsb.reflection.callStaticMethod(className, "clearWelcomeImage", sigs);

} else if (cc.sys.os === cc.sys.OS_IOS) {

}

}

// load scene

cc.director.loadScene(launchScene, null,

function () {

if (cc.sys.isBrowser) {

// show canvas

canvas.style.visibility = '';

var div = document.getElementById('GameDiv');

if (div) {

div.style.backgroundImage = '';

}

}

cc.loader.onProgress = null;

console.log('Success to load scene: ' + launchScene);

clearWelcomeImage();

}

);

这样启动的时候就立刻显示一张图,当进入游戏在加载过程中也就显示图片等加载完正常进入游戏。

继续,加油!