有人可以通过投影机文件(位于c盘上)为我提供加载子swfs(位于cd上)的脚本吗?

时间:2011-05-04 12:32:36

标签: flash

我想分发一个应用程序。我想在c盘上安装flash exe。 Flash exe加载位于cd上的子swfs。问题是如何编写子swfs的路径。不同的系统将有不同的字母,即d,e,f,g等。代表他们的CD驱动器。有人可以通过投影机文件(位于c盘上)为我提供加载子swfs(位于cd上)的脚本吗??

2 个答案:

答案 0 :(得分:1)

我不知道你究竟想做什么,但你可以为此写一个可怕的解决方法。我不推荐这个,因为这只是为了解决这个问题。也许你的问题完全不同,但这可以从中理解。

所以,鉴于问题,你有一个CD上的文件,你想要达到它们。现在,您不知道驱动器号,因此您不知道如何加载文件。

现在,如果我们给出问题的另一个条件,我们可以做一个解决方法。让我们说,在CD上你总能找到一个特定的文件。如果没有,那么创建一个带有名称的文件,CD上的内容将永远存在(如果你有不同的版本)。

然后,任务是找到驱动器号:

var abc:String = "abcdefghijklmnopqrstuvwxyz";

var letter_to_check:String = abc.charAt(0);

checkNextLetter();

function checkNextLetter():void
{
    if(abc.length == 0) return;

    letter_to_check = abc.charAt(0);

    var ldr:Loader = new Loader();
    ldr.contentLoaderInfo.addEventListener("complete", ldrDone);
    ldr.contentLoaderInfo.addEventListener("ioError", ldrError);
    ldr.load(new URLRequest(letter_to_check + ":\\yourfile.txt"));
}

function ldrDone(evt:*):void
{
    trace(letter_to_check, "loaded");
    abc = abc.slice(1);
    checkNextLetter();
}

function ldrError(evt:*):void
{
    trace(letter_to_check, "not loaded");
    abc = abc.slice(1);
    checkNextLetter();
}

现在这里的yourfile.txt需要在你的cd的根目录中。如果运行此程序,您将看到跟踪,您将看到它何时找到该文件。

因此,无论何时ldrDone运行,您都会找到包含该文件的驱动器。

所以,如果你准备好使用这个怪物(不要这样做),请把它放在程序的开头,然后再发生任何事情。然后,您可以存储驱动器号,并在以后需要知道从何处加载文件时使用它。

希望这有帮助。

答案 1 :(得分:0)

如果您准备使用第三方投影仪工具,那么我可以帮助您。我写了一篇名为Avoiding Windows Drive Not Ready Errors的博客文章,展示了如何枚举系统中的所有驱动器并找到它们的标签。该示例需要SWF Studio(我编写的产品),但它很容易解决您的问题。

您需要做的就是为CD提供一个卷标(您可以控制),然后在枚举驱动器时查找该标签。博客文章中有一个例子。因此,如果您知道CD上文件的路径,您可以直接访问它。如果您想让它更开放,SWF Studio会有一些命令可以让您获得CD上所有文件的列表。

SWF Studio还可以告诉您,您找到的驱动器是硬盘驱动器,软盘驱动器还是可移动介质,这样您就可以防止人们将CD复制到具有与基元相同的卷标的硬盘驱动器(非常原始) )复制保护形式。

如果您想要/需要查看更多示例,请告诉我。

另一个好处是SWF Studio可以与AS1,AS2和AS3一起使用。