我在超级用户上发布了一个问题,似乎有一个代码相关的答案,所以在这里。我有个问题;我需要在线分享视频,但需要找到一种方法来完全停止,或者至少让人们难以下载并在线查看。我知道如果有可能,好莱坞已经做到了,但我有一个想法......
几年前,我偶然发现了一个关于newgrounds.com的视频,这是一个Flash动画制作网站,用于发布内容供用户评价,反馈和评论,我花了几个小时下载视频在学校播放它们的地方(哦具有讽刺意味的......),但我记得有一段视频不同。下载并打开.swf文件后,它停止播放并显示一个框架,上面写着“抱歉,这个动画是在newgrounds.com上查看的。你可以随时在那里找到它!”。我当时很生气,但现在它给了我一个想法......
我是否有某种方法可以让动画检查正在播放的文件的当前位置/目录,这样如果它发现它是从物理计算机而不是服务器播放的,那么它就是要播放的,它完全停止播放???
答案 0 :(得分:2)
我相信,您可以通过stage.loaderInfo.url
获取SWF正在播放的网址(通常是网页的位置,如果嵌入HTML中)。因此,您只需针对您网站的网址进行检查即可。
loaderInfo
中的网站地址,这样我就可以播放它。你最好使用一种DRM而不是这种形式。一般来说,DRM比伪造URL要难得多。
答案 1 :(得分: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.
}
}