0

初めてサイトロックされたフラッシュファイルを作成しようとしていますが、その方法がわかりません。ネットでいくつかのチュートリアルを見つけましたが、どれもうまくいきませんでした。ネットで見つけたものを掲載します。

その前に、私の状況を少し説明します。

フレーム 2 ですべてのクラスをエクスポートしました。フレーム 1 1 には、プリローダーのグラフィックスと単純な進行イベントがあります。

これは、サイトロック コードを追加する前のメイン(クラス) パブリック関数の外観です。可能であれば、以下のコードに「somelocking コード」を追加してください。

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

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

すべて正常に動作しますが、プリローダーが完了した後にドメイン名を確認したいと思います。実際には、フラッシュ ファイルが正しいドメインでホストされている場合にのみ loaderInfo.addEventListener(Event.COMPLETE, preloaderDone) を設定しようとしています。そうでない場合は、テキスト フィールド 'Accesdenied' を表示します。これを行った後、フラッシュファイルはすべてのドメインでロックされています。別のドメインで試してみましたが、機能しません。また、mywebsite.com/myflashfile.swf のように、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);
    }
}

preloaderDone()もちろん、それは特定のディレクトリから実行された場合にのみ呼び出されるように SWF をロックします。サーバー上で移動できるようにし、ドメインのみに関心がある場合は、代わりに単純な文字列検索を行うことができます。

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