Skip to content

JavaANAppSurfaceView.surfaceCreated 不移除所有纹理的话, 会有问题吗? #38

Description

@EternalFire

问题: JavaANAppSurfaceView.surfaceCreated 不移除所有纹理的话, 会有问题吗?

代码版本: 148d54077b1de819cf0958cc198b69ab97d67411

引擎代码: Java/Loon-Lite(PureJava)/LoonLiteCore, Java/Loon-Lite(PureJava)/LoonLiteJavaAN

例子项目: 使用这些目录里面的资源和代码Java/examples/assets, Java/examples/org, Java/Loon-Neo/src/assets, 创建了一个纯JavaAndroid Studio工程. 项目可以运行(拍拍手👏)!

但是, app 退到后台, 再返回前台, 图片不见了

但是, 文字还在, 按钮也在

打断点调试发现 JavaANAppSurfaceView.surfaceCreated 里面会清掉所有纹理.

public class JavaANAppSurfaceView ... {
	@Override
	public void surfaceCreated(SurfaceHolder surfaceHolder) {
		updatePpi();
		start();
		if (_game != null) {
//			LSystem.resetTextureRes(_game); // 注释这行
			if (_game.display() != null) {
				_game.display().GL().update();
			}
			LSystem.d("Created Renderer View");
		}
	}
}

注释以后, app 返回前台图片还在!!!


原例子代码的改动:

原例子有些代码在 LoonLiteCore 引擎里没有. 所以移除一些例子代码.

MultiScreenTest 里面移除了一些:

public class MultiScreenTest extends Screen {

    // ...

    @Override
	public void onLoad() {

        // ...

		if (page == 0) {
			addScreen(page0[index++], new LMessageBoxTest());
//			addScreen(page0[index++], new Live2dTest());
			addScreen(page0[index++], new ActionEventTest());
			addScreen(page0[index++], new EffectTest());
			addScreen(page0[index++], new EmulatorTest());
			addScreen(page0[index++], new TileMapTest());
//			addScreen(page0[index++], new SpriteBatchTest());
			addScreen(page0[index++], new BDFontTest());
			addScreen(page0[index++], new BMFontTest());
			addScreen(page0[index++], new LayoutTest());
			addScreen(page0[index++], new TableTest());
			addScreen(page0[index++], new MenuTest());
//			addScreen(page0[index++], new DecideNameTest());
			addScreen(page0[index++], new ToastTest());
			addScreen(page0[index++], new ListTest());
			addScreen(page0[index++], new SpriteTest());
			addScreen(page0[index++], new LTexturePackTest());
//			addScreen(page0[index++], new NodeTest());
			addScreen(page0[index++], new ScrollTest());
//			addScreen(page0[index++], new CycleTest());
			addScreen(page0[index++], new TextAreaTest());
			addScreen(page0[index++], new ProgressTest());
			addScreen(page0[index++], new ParticleTest());
			addScreen(page0[index++], new SelectIconTest());
			addScreen(page0[index++], new ControlTest());
			addScreen(page0[index++], new JSonResTest());
			addScreen(page0[index++], new SpriteSheetFontTest());
			addScreen(page0[index++], new ParticleConfigTest());
			addScreen(page0[index++], new RippleTouchTest());
			addScreen(page0[index++], new SoundTest());
			addScreen(page0[index++], new GestureTest());
//			addScreen(page0[index++], new PhysicalTest());
//			addScreen(page0[index++], new Node2Test());
			addScreen(page0[index++], new SysInputTest());
			addScreen(page0[index++], new DepthTest());
//			addScreen(page0[index++], new CanvasLayerTest());
			addScreen(page0[index++], new GameMapTest());
//			addScreen(page0[index++], new MovieClipTest());
			addScreen(page0[index++], new TextureImageTest());
			addScreen(page0[index++], new SessionTest());
		} else if (page == 1) {
			addScreen(page1[index++], new Test());
			addScreen(page1[index++], new SliderTest());
			addScreen(page1[index++], new AlertTest());
			addScreen(page1[index++], new AnimationTest());
			addScreen(page1[index++], new FrameLoopTest());
			addScreen(page1[index++], new RocScriptTest());
			addScreen(page1[index++], new ScrollTextTest());
			addScreen(page1[index++], new LightImageTest());
			addScreen(page1[index++], new CountdownTest());
			addScreen(page1[index++], new TitleScreen());
			addScreen(page1[index++], new TDTest());
			addScreen(page1[index++], new LLKTest());
			addScreen(page1[index++], new TextFieldTest());
//			addScreen(page1[index++], new SRPGTest());
			addScreen(page1[index++], new PShadowTest());
			addScreen(page1[index++], new MapTest());
//			addScreen(page1[index++], new ImageTest());
			addScreen(page1[index++], new NaturalTest());
			addScreen(page1[index++], new MenuSelectTest());
			addScreen(page1[index++], new CheckBoxTest());
			addScreen(page1[index++], new TextTreeTest());
			addScreen(page1[index++], new SLGTest());
			addScreen(page1[index++], new I18NTest());
//			addScreen(page1[index++], new ButtleTest());
			addScreen(page1[index++], new HexagonMapTest());
			addScreen(page1[index++], new LabelTest());
			addScreen(page1[index++], new GridTest());
			addScreen(page1[index++], new ElementsOrderTest());
//			addScreen(page1[index++], new QRCodeTest());
			addScreen(page1[index++], new ChopTest());
//			addScreen(page1[index++], new CachePoolTest());
			addScreen(page1[index++], new JSonViewTest());
//			addScreen(page1[index++], new HtmlViewTest());
			addScreen(page1[index++], new CompNewLine());
			addScreen(page1[index++], new CollisionWorldTest());
			addScreen(page1[index++], new GravityTest());
			addScreen(page1[index++], new JigsawTest());
//			addScreen(page1[index++], new TetrisTest());
			addScreen(page1[index++], new ExplosionTest());
			addScreen(page1[index++], new FlappyBirdTest());
		} else if (page == 2) {
			addScreen(page2[index++], new TimerTest());
			addScreen(page2[index++], new SnakeTest());
			addScreen(page2[index++], new TextEffectTest());
			addScreen(page2[index++], new MarginTest());
			addScreen(page2[index++], new DefineMoveTest());
			addScreen(page2[index++], new IntervalTest());
			addScreen(page2[index++], new SchedulerTest());
//			addScreen(page2[index++], new ShaderTest());
//			addScreen(page2[index++], new FrameBufferTest());
			addScreen(page2[index++], new TaichiTest());
			addScreen(page2[index++], new StatusTest());
			addScreen(page2[index++], new DragTest());
			addScreen(page2[index++], new RadarTest());
			addScreen(page2[index++], new PathMoveTest());
			addScreen(page2[index++], new AnswerTest());
			addScreen(page2[index++], new PreloadTest());
		}
    }
}

Activity:

public class MainActivity2 extends JavaANApplication {


    @Override
    public LazyLoading.Data main(JavaANSetting setting) {
        // 配置游戏设置
        setting.appName = "My Loon Game";
        setting.width = 480;
        setting.height = 800;
        setting.fullscreen = false;
        setting.isCheckResize = true;
//        setting.disposeTexture = false;
//        setting.isFPS = true;
//        setting.isDrawCall = true;
//        setting.isMemory = true;

        // 返回游戏主界面
        return new LazyLoading.Data() {
            @Override
            public Screen onScreen() {
//                return new GameScreen();

                return new MultiScreenTest();
            }
        };
    }
}

运行起来的 app :

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions