【问题标题】:Loading Profile Images on VK.com in ActionScript使用 ActionScript 在 VK.com 上加载配置文件图像
【发布时间】:2014-01-06 22:42:38
【问题描述】:

我在 vk.com 中有一个 iframe 应用程序。我可以使用他们的 API,一切看起来都很好,但是当我想加载配置文件图像时,我得到了安全沙箱错误。当我打印结果和错误时,我得到这个:(我正在使用 Greensock ImageLoader)

MYURL : 'my Image URL on cs408919 of vk'
Loading CrossDomain on cs408919
ScriptAccessDenied : 错误 # 2048
SecurityError : 错误 #2048
错误 : 错误 #2048
ScriptAccessDenied : 错误 #2123 违反安全沙盒,未授予任何策略文件访问权限

在我看来是 crossdomain.xml 问题,但我找不到正确的问题。谢谢...

【问题讨论】:

    标签: image actionscript-3 loading vk


    【解决方案1】:

    除了 fsbmain 的回答,我想说你必须添加以下代码:

    Security.allowDomain("*");
    

    【讨论】:

      【解决方案2】:

      是的,这是跨域问题,图像的 vk 子域不为用户头像提供 crossdomain.xml,但您仍然可以加载(也可以添加到显示列表)它们。你不能做的是访问加载的内容(例如设置smooth位图标志,或draw带有vk图像的hole stage)。

      如果你需要访问内容,你可以使用这个“policy-hack”,但它是 hack,所以它可以在任何 FP 更新中修复(我想即使这个答案也可能更接近这一刻:)):

      这个想法是在图像加载器中监听 ADDED 事件:

      protected var _prepareloaderBitmap:Bitmap;
      
      _prepareloader.addEventListener(Event.ADDED, onPrepareLoader);
      _prepareloader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPrepareLoader);
      

      还有听者:

      protected function onPrepareLoader(event:Event):void
      {
          //event ADDED fired only for Bitmap (not for SWFs)
          if(event.type == Event.ADDED)
          {
              _prepareloaderBitmap = event.target as Bitmap;
          }
          else if (event.type == Event.COMPLETE)
          {
              if(_prepareloaderBitmap)
              {
                  trace("loaded image size:", _prepareloaderBitmap.width, "x", _prepareloaderBitmap.height);
              }
          }
      }
      

      拥有对加载的Bitmap 的引用,您现在可以添加它而不是跨域发布的加载器。

      【讨论】:

      • 我现在在我的服务器上从 php 文件中获取图像我希望他们能让我这样做
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多