1

我在超级用户上发布了一个问题,似乎有一个与代码相关的答案,所以就这样吧。我有个问题; 我需要在线分享视频,但需要找到一种方法来完全停止,或者至少让人们难以下载和在线观看。我知道如果可能的话,好莱坞早就这么做了,但我有个主意……

几年前,我偶然发现了 newgrounds.com 上的一个视频,这是一个供 Flash 动画师发布内容供用户评分、反馈和评论的网站,我花了几个小时下载视频并在学校播放它们(哦,讽刺。 ..),但我记得一个视频是不同的。下载并打开.swf文件后,它停止播放并显示一个框架,上面写着“对不起,这个动画是为了在newgrounds.com上观看而制作的。你可以随时在那里找到它!”。当时我很生气,但现在它给了我一个想法……

有什么方法可以让动画检查正在播放的文件的当前位置/目录,这样如果它发现它是从物理计算机而不是要播放的服务器上播放的,它就会停止播放完全地???

4

2 回答 2

2

我相信,您可以通过 获取 SWF 正在播放的 URL(通常是页面的位置,如果嵌入在 HTML 中)stage.loaderInfo.url。因此,您可以对照您网站的 URL 进行检查。

不过,这可能会被愚弄。我可以在我的机器上设置一个虚拟主机,它可能会模仿你网站的地址,loaderInfo这样我就可以玩它了。使用某种形式的 DRM 会比这更好。一般来说,DRM 比伪造 URL 更难破解。

于 2013-10-31T19:37:04.530 回答
0

此功能称为“站点锁定”。您可以搜索该术语以获取更多信息。这是 AS3 游戏博客“Emenuelle Ferronato”的链接,其中包含有关如何锁定文件的教程。

http://www.emanueleferonato.com/2008/03/10/how-to-sitelock-a-flash-movie/

该博客给出了 AS2 中的代码,所以我在下面使用 AS3 对其进行了更新。此代码需要访问阶段,并且您需要在执行锁定检查时调用“sitelock(urls_allowed)”。

urls_allowed = ["www.emanueleferonato.com", "www.triqui.com"];
sitelock(urls_allowed);
function sitelock(urls_allowed) {
    lock = true;
    domain_parts = stage.loaderInfo.url.split("://");
    real_domain = domain_parts[1].split("/");
    domain.text = real_domain[0];
    for (x in urls_allowed) {
        if (urls_allowed[x] == real_domain[0]) {
            lock = false;
        }
    }
    if (lock) {
        stage.alpha = 0;// make sure this function has access to the stage.
    }
}
于 2013-10-31T21:04:56.907 回答