0

我第一次尝试制作站点锁定的闪存文件,但我不知道该怎么做。我在网上找到了一些教程,但没有一个对我有用。我会发布一个我在网上找到的。

在此之前,我会稍微解释一下我的情况。

我在第 2 帧导出了所有分类,在第 1 帧我有预加载器图形和预加载器的简单进度事件。

这是我的 Main(class) public 函数在添加站点锁定代码之前的样子:如果可以,请在下面的代码中添加“somelocking code”。

    public function Main()
    {
    loaderInfo.addEventListener(Event.COMPLETE, preloaderDone);
    }

    private function preloaderDone(e:Event):void
    {
       showMenu(); // game will start here
    }

一切正常,但现在我想在预加载器完成后检查域名。实际上我试图设置 loaderInfo.addEventListener(Event.COMPLETE, preloaderDone) 只有当 Flash 文件托管在正确的域上时,否则我想显示文本字段“Accesdenied”。完成此操作后,flash 文件被锁定在所有域上,我尝试使用不同的域但它不起作用,我还尝试将绝对路径放入 swf 文件,如 mywebsite.com/myflashfile.swf。它总是显示访问被拒绝。这是我在网上找到的代码,我尝试使用它。

    public function Main()
    {
    var url:String=stage.loaderInfo.url;
    var goodPattern:RegExp=/^(http:\/\/)(www\.)?somewebsite\.com/;

    if (goodPattern.test(url)==true) 
    {
    loaderInfo.addEventListener(Event.COMPLETE, preloaderDone);
    } 
    else 
    {
    myTxtFieled.text = "Acces denied."
    stage.addChild(myTxtField);
    }
4

1 回答 1

-1

首先,尝试跟踪您的stage.loaderInfo.url. 您可能会发现 RegExp 是多余的,而一个简单的比较运算符就足够了。

例如,在我的本地系统上运行“test.swf”会跟踪以下路径file:///C|/Sites/myDomain/subdirectory/test.swf,而当放置在服务器上时,它会显示为http://myDomain.com/subdirectory/test.swf. 非常坦率的。

这会将您的代码简化为...

public function Main() {
    if (this.loaderInfo.url == "http://myDomain.com/subdirectory/test.swf") {
        loaderInfo.addEventListener(Event.COMPLETE, preloaderDone);
    } else {
        var txt:TextField = new TextField();
        txt.text = "Acces denied.";
        addChild(txt);
    }
}

当然,这会将您的 SWF 锁定为仅preloaderDone()在从特定目录运行时才调用。如果您希望能够在您的服务器上移动它,并且只关心域,您可以进行简单的字符串搜索。

if (this.loaderInfo.url.indexOf("myDomain.com") != -1) {
于 2013-10-29T18:16:30.517 回答