bug 代码1

use bevy::prelude::*;
use crate::GameScene;
use crate::config::{MainConfig, load_main_config};


// 引用flash
use bevy::{
    color::palettes::basic::*, ecs::relationship::RelatedSpawnerCommands, prelude::*,
    winit::WinitSettings,
    ui::FocusPolicy, // 添加这行
};
use bevy_flash::{FlashPlugin, assets::FlashAnimationSwfData, bundle::FlashAnimation};
use bevy::{audio::Volume, math::ops, prelude::*};
pub const FPS_OVERLAY_Z_INDEX: i32 = i32::MAX - 32;
pub struct GamePlugin;

impl Plugin for GamePlugin {
    fn build(&self, app: &mut App) {
        app.init_state::<GameScene>()
            .add_systems(Startup, (load_main_config_system, setup_game_camera))
            .add_plugins(FlashPlugin)
            .add_systems(OnEnter(GameScene::Game), (setup_game_camera, spawn_test_sprite))
            .add_systems(
                Update, 
                ( flash_animation).run_if(in_state(GameScene::Game))
            );
            
    }
}



fn load_main_config_system(mut commands: Commands) {
    let main_config = load_main_config();
    commands.insert_resource(main_config);
}

// 相机初始化
fn setup_game_camera(
    mut commands: Commands,
    existing_cameras: Query<Entity, With<Camera>>,
) {
    // 清理现有摄像机
    for entity in existing_cameras.iter() {
        commands.entity(entity).despawn();
    }
    
    // 创建新摄像机
    commands.spawn(Camera2d);
    info!("Game 场景摄像机已创建");
}

fn spawn_test_sprite(mut commands: Commands,asset_server: Res<AssetServer>) {
    commands.spawn((
        Sprite {
            color: Color::srgb(0.0, 0.5, 1.0), // 蓝色
            custom_size: Some(Vec2::new(100.0, 100.0)), // 100x100 像素
            ..default()
        },
        Transform::from_translation(Vec3::new(0.0, 0.0, 0.0)), // 屏幕中心
    ));
    info!("测试蓝色 sprite 已创建");
        commands.spawn((
        Name::new("svgload"),
        FlashAnimation {
            // name:"a1",
            swf: asset_server.load("swf/66.swf")
        },
        // Transform::default().with_scale(Vec3::ZERO),
        Visibility::Visible,
        Transform::from_translation(Vec3::new(0.0, 240.0, 0.0)).with_scale(Vec3::splat(2.0)),

    ));
}

// 动画播放
fn flash_animation(
    mut flashes: ResMut<Assets<FlashAnimationSwfData>>,
    mut flash_swf_data_events: EventReader<AssetEvent<FlashAnimationSwfData>>,
    mut initialized: Local<bool>,
) {
    // 如果已经初始化过了,直接返回
    if *initialized {
        return;
    }

    for event in flash_swf_data_events.read() {
        if let AssetEvent::LoadedWithDependencies { id } = event {
            info!("Flash 动画资源加载完成: {:?}", id);
            
            if let Some(flash) = flashes.get_mut(*id) {
                flash.player.set_on_completion(Box::new(|player| {
                    if let Err(e) = player.set_play_animation("default", false) {
                        error!("设置动画完成回调失败: {:?}", e);
                    }
                }));

                if let Err(e) = flash.player.set_play_animation("default", true) {
                    error!("开始播放动画失败: {:?}", e);
                } else {
                    info!("Flash 动画开始播放");
                    *initialized = true; // 标记为已初始化,避免后续重复执行
                }
            }
        }
    }
}
posted @ 2025-07-04 14:16  Furau  阅读(10)  评论(0)    收藏  举报