Дублирование спрайта пламени на Android, а не Iphone? - PullRequest
0 голосов
/ 06 апреля 2020

Создание игры с использованием движка Flutter Flame и AndroidStudio для разработки. Функция рендеринга использует функции canvas.save () и canvas.render (), которые обеспечивают чистоту экрана между кадрами (для предотвращения дублирования рисования спрайтов). На симуляторе IPhone приложение работает как положено, однако на нескольких симуляторах Android отображаются дубликаты спрайтов. Не могу понять, почему это происходит ... Любая помощь приветствуется!

enter image description here

import 'dart:ui';
import 'package:flame/components/component.dart';
import 'package:flame/flame.dart';
import 'package:flame/game.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';


class ThisGame extends Game {
  final SharedPreferences storage;
  Size screenSize;
  double tileSize;

  Player player;
  double spriteSize = 128;
  double timeElapsed = 0;

  ThisGame(this.storage) {
    initialize();
  }

  initialize() async {
    resize(await Flame.util.initialDimensions());
    player = Player();
    player.x = 0;
    player.y = 0;
  }

  @override
  void render(Canvas canvas) {
    canvas.save();
    player.render(canvas);
    canvas.restore();
  }

  @override
  void update(double t) {
    timeElapsed += t;
    if (timeElapsed > 1) {
      timeElapsed = 0;
      player.y += t * 300;
      player.x += t * 300;
    }
  }

  @override
  void resize(Size size) {
    screenSize = size;
    tileSize = screenSize.width / 9;
  }
}

class Player extends SpriteComponent {
  Player() : super.square(128.0, 'player.png') {
    this.angle = 0.0;
   }

}
...