gpt4 book ai didi

actionscript-3 - Actionscript 3 - 使用循环嵌入声音文件数组

转载 作者:行者123 更新时间:2023-12-02 23:49:28 24 4
gpt4 key购买 nike

我正在使用 Actionscript 3 创建音乐播放游戏。为此,我为每种乐器录制了大约 20 个音符(也使用 Starling Framework 和 FlashDevelop,尽管这些似乎与这个问题无关)。我目前正在通过指定每个文件路径并嵌入〜20个声音中的每一个来为默认乐器加载音符,如下所示:

    [Embed(source = "../assets/1.mp3")]
public var SOUND_1:Class;
var sound:Sound = new SOUND_1() as Sound;
_sounds[1] = sound;

[Embed(source = "../assets/2.mp3")]
public var SOUND_2:Class;
var sound:Sound = new SOUND_2() as Sound;
_sounds[2] = sound;

[Embed(source = "../assets/3.mp3")]
public var SOUND_3:Class;
var sound:Sound = new SOUND_3() as Sound;
_sounds[3] = sound;

//... etc...

然而,为了嵌入不同乐器的声音,我需要更模块化的东西。我已经编写了下面的循环,我期望它会加载声音并将它们存储在一个对象数组中(我已经在应用程序中使用了这样一个数组)。我遇到的问题是当我使用这样的字符串时,Embed 标记似乎无法识别文件名的扩展名。如果我将文件名硬编码到 EMBED 行中,那么它将编译得很好(尽管显然它每次都会加载大约 20 个相同声音的副本)。
        for (var i:int = 1; i < totalSounds + 1; i++) {
var filename:String = '../pathtosounds/' + String(i) + '.mp3';
[Embed(source = filename)]
var MY_SOUND:Class;
var sound:Sound = new MY_SOUND() as Sound;
_sounds[i] = sound;
}

有没有办法解决这个问题而无需为每个可能的音符和乐器手动输入每个文件名/文件路径?

最佳答案

[EMBED] 标签用于在编译时嵌入 Assets 。您不能运行循环来嵌入 Assets ,因为这发生在 RUN 时。

您可以在运行时使用加载器加载 Assets ,或者您必须像您所做的那样手动嵌入每个 Assets 。我通常创建一个单独的类来存储嵌入的 Assets :

public final class SoundAsset
{
[Embed(source="/assets/sound/sound1.mp3")]
public static var SOUND1:Class;

[Embed(source="/assets/sound/sound2.mp3")]
public static var SOUND2:Class;
}

关于actionscript-3 - Actionscript 3 - 使用循环嵌入声音文件数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com