package com.lfk.justweengine.engine.Layer; import android.graphics.Canvas; import android.graphics.PixelFormat; import android.graphics.RectF; import android.os.Bundle; import android.view.MotionEvent; import android.view.ViewGroup; import android.view.Window; import android.widget.FrameLayout; import com.lfk.justweengine.drawable.Sprite.BaseSub; import com.lfk.justweengine.engine.Engine; import com.lfk.justweengine.utils.logger.LogLevel; import com.lfk.justweengine.utils.logger.Logger; /** * 使用了Layer分层的Engine * * @author liufengkai * Created by liufengkai on 16/5/5. */ public abstract class LayerEngine extends Engine { protected Screen layerEngineScreen; protected FrameLayout layerEngineScreenLayout; public abstract void init(); public abstract void load(); public abstract void update(); public abstract void touch(MotionEvent event); public abstract void collision(BaseSub baseSub); public LayerEngine() { // init logger Logger.init().logLevel(LogLevel.NONE); } public LayerEngine(boolean isOpenDebug) { this.isOpenDebug = isOpenDebug; if (!isOpenDebug) { Logger.init().logLevel(LogLevel.NONE); } else { Logger.init(); } } private void Engine() { this.layerEngineScreen = new Screen(this, new Screen.ScreenListener() { @Override public void Init() { init(); } @Override public void Load() { load(); } @Override public void Update() { update(); } @Override public void Touch(MotionEvent event) { touch(event); } }); layerEngineScreenLayout = new FrameLayout(this); layerEngineScreenLayout.addView(layerEngineScreen, new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT )); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Logger.d("engine onCreate start"); this.Engine(); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(layerEngineScreenLayout); layerEngineScreen.createScreen(); Logger.d("engine onCreate end"); } /** * engine onResume */ @Override protected void onResume() { super.onResume(); Logger.d("engine onResume"); layerEngineScreen.restart(); // need add... } /** * engine onPause */ @Override protected void onPause() { super.onPause(); Logger.d("engine onPause"); layerEngineScreen.pause(); layerEngineScreen.addPauseTime(); // need add... } /** * 设定整体背景 * * @param color */ public void setBackgroundColor(int color) { this.layerEngineScreen.setBackgroundColor(color); } /** * set screenOrientation * * @param mode */ public void setScreenOrientation(ScreenMode mode) { setRequestedOrientation(mode.value); } @Override public Canvas getCanvas() { return layerEngineScreen.getCanvas(); } public Screen getScreen() { return layerEngineScreen; } @Override public void debugDraw(RectF bound) { layerEngineScreen.debugDraw(bound); } /** * 添加一层 * * @param layer */ public void addLayer(Layer layer) { layerEngineScreen.addLayer(layer); } /** * 在某层之上添加一层 * * @param layer * @param name */ public void addLayerBefore(Layer layer, String name) { layerEngineScreen.addLayerBefore(layer, name); } /** * 在某层之下添加一层 * * @param layer * @param name */ public void addLayerAfter(Layer layer, String name) { layerEngineScreen.addLayerAfter(layer, name); } }