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();
}
);
這樣啟動的時候就立刻顯示一張圖,當進入遊戲在加載過程中也就顯示圖檔等加載完正常進入遊戲。
繼續,加油!