播放 wav 文件,将字符串连接到调用文件

Posted

技术标签:

【中文标题】播放 wav 文件,将字符串连接到调用文件【英文标题】:Playing wav file, concatenating string to call file 【发布时间】:2010-10-31 23:18:17 【问题描述】:

我(在我的资源文件有些奇怪之后)能够在我的项目中播放 .wav 文件:

SoundPlayer player = new SoundPlayer();
player.Stream = Sounds.L1;
Player.Play();

这很好,但我想要做的是能够将一个字符串连接在一起,然后调用该文件。 .wav 文件名的格式为“L”+ int,int 介于 1 - 99 之间,即 L1、L2...L99。所有不同的声音文件都在一个名为 Sounds 的 resx 文件中。

我怎样才能给他们打电话?

我正在尝试使用 ResXResourceSet resxSet = new ResXResourceSet("btc.Sounds") ResXResourceSet 加载资源文件,然后按照建议使用 .getobject() 。但是,如何指定嵌入资源文件的位置?如果我使用上述路径,则会在我的 bin/debug 文件夹中查找错误,该文件夹是 .exe 所在的位置。如果我明确指定路径,我会收到访问错误,我真正好奇的一件事是“Sounds.resx”文件是嵌入式资源,因此它应该“知道”它在哪里并且不需要任何路径...我几乎尝试了所有排列,包括使用 Assembly.GetExecutingAssembly().GetManifestResourceStream("btc_I_Cap.Sounds"), @"....\Sounds" @"....\Resources", @"btc.声音”“Sounds.resx”等等,到目前为止什么都没有。有人可以让我摆脱痛苦,这样我就可以去'哦,是的,这很明显,为什么我没有想到这一点!'

万圣节快乐。

谢谢。

【问题讨论】:

【参考方案1】:

使用 ResXResrouceSet 调用声音文件是这样的:

using (ResXResourceSet resxSet = new ResXResourceSet(resxFile))

    for (int i = 1; i <= 99; i ++)
    
        SoundPlayer simpleSound = (SoundPlayer)resxSet.GetObject("L" + i.ToString());
        simpleSound.Play();
    

【讨论】:

ResXResourceSet resxSet = new ResXResourceSet(声音)。这给了我一个错误,所以很明显我误解了一些东西。听起来是保存所有 .wav 文件的资源文件。它是一种类型,但被用作变量。 你应该如何定义 resx 文件的位置?我试过作为字符串“Sounds”,尝试在“my_project.Sounds”前面使用我的项目名称,但无济于事。迷路了。 我尝试了很多不同的路径名,但到目前为止我无法加载资源文件,或者我应该说加载 Sounds.resx 文件,这很奇怪,因为它是嵌入的并且,嗯,就在那里…… 如何获取资源文件的正确路径(resxFile)? 您确实需要指定 resx 文件的路径。您只能使用“Sounds.resx”,但只需确保在嵌入式 resx 文件的属性中将“复制到输出目录”设置为始终复制或更新。如果您不这样做,那么当您的程序在构建期间创建的新目录中找不到文件时,您将收到文件未找到异常。

以上是关于播放 wav 文件,将字符串连接到调用文件的主要内容,如果未能解决你的问题,请参考以下文章

Spark - 将每个分区的字符串连接到单个字符串

将字符串连接到 SELECT * MySql

将字符串连接到列表[重复]

将字符串连接到 pig 中的字段

将 C# 字符串连接到 JavaScript/knockout 函数/observables

oracle通过添加regexp_like将字符串连接到数字不起作用