flame_audio 0.1.0-rc3 copy "flame_audio: ^0.1.0-rc3" to clipboard
flame_audio: ^0.1.0-rc3 copied to clipboard

outdated

Audio support for the Flame game engine. This containst all audio related code will live in the future, using the audioplayers package.

example/lib/main.dart

import 'package:flame/anchor.dart';
import 'package:flame/extensions/vector2.dart';
import 'package:flame/game.dart';
import 'package:flame/gestures.dart';
import 'package:flame/palette.dart';
import 'package:flame/text_config.dart';
import 'package:flame_audio/audio_pool.dart';
import 'package:flame_audio/flame_audio.dart';
import 'package:flutter/widgets.dart' hide Animation;

AudioPool pool = AudioPool('fire_2.mp3', minPlayers: 3, maxPlayers: 4);

void main() async {
  runApp(GameWidget(game: AudioGame()));
}

/// This example game showcases three possible use cases:
///
/// 1. Use the static FlameAudio class to easily fire a sfx using the default
/// configs for the button tap.
/// 2. Uses a custom AudioPool for extremely efficient audio loading and pooling
/// for tapping elsewhere.
/// 3. Uses the Bgm utility for background music.
class AudioGame extends BaseGame with TapDetector {
  static Paint black = BasicPalette.black.paint;
  static Paint gray = PaletteEntry(Color(0xFFCCCCCC)).paint;
  static TextConfig text = TextConfig(color: BasicPalette.white.color);

  @override
  Future<void> onLoad() async {
    await pool.init();
    startBgmMusic();
  }

  Rect get button => Rect.fromLTWH(20, size.y - 300, size.x - 40, 200);

  void startBgmMusic() {
    FlameAudio.bgm.play('music/bg_music.ogg');
  }

  void fireOne() {
    FlameAudio.audioCache.play('sfx/fire_1.mp3');
  }

  void fireTwo() {
    pool.start();
  }

  @override
  void render(Canvas canvas) {
    super.render(canvas);
    canvas.drawRect(size.toRect(), black);

    text.render(
      canvas,
      '(click anywhere for 1)',
      Vector2(size.x / 2, 200),
      anchor: Anchor.topCenter,
    );

    canvas.drawRect(button, gray);

    text.render(
      canvas,
      'click here for 2',
      Vector2(size.x / 2, size.y - 200),
      anchor: Anchor.bottomCenter,
    );
  }

  @override
  void onTapDown(TapDownDetails details) {
    if (button.contains(details.localPosition)) {
      fireTwo();
    } else {
      fireOne();
    }
  }
}
85
likes
0
pub points
97%
popularity

Publisher

verified publisherflame-engine.org

Audio support for the Flame game engine. This containst all audio related code will live in the future, using the audioplayers package.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

audioplayers, flame, flutter, synchronized

More

Packages that depend on flame_audio