天天看點

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();

}

);

這樣啟動的時候就立刻顯示一張圖,當進入遊戲在加載過程中也就顯示圖檔等加載完正常進入遊戲。

繼續,加油!