2012-05-29 48 views
1

我试图从谷歌地图API静态图像到闪存加载图像。当我试图加载他们的闪存抱怨沙箱问题。即使在我尝试从谷歌加载策略文件后。加载谷歌地图的静态图像到闪存

Security.loadPolicyFile("http://maps.googleapis.com/crossdomain.xml");

有没有解决这个办法吗?或者以这种方式加载图像是不可能的?

+0

你测试这个本地或从Web服务器? – crooksy88

+1

请显示一些代码。从不同域加载图像不应导致安全sandobx错误。但是,如果您尝试访问此类图像的位图数据,则会生成安全错误。 –

+0

我确实解决了这个问题,你是对的,我正在使用一个loader类,它试图检查状态,我伪装涉及访问数据。 – user379468

回答

1
 var loader1:Loader = new Loader(); 
     var lctx1:LoaderContext = new LoaderContext(true); 
     loader1.contentLoaderInfo.addEventListener(Event.INIT, doImgInit); 
     loader1.load(new URLRequest("http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=600x400&maptype=satellite&sensor=false&scale=4"), lctx1); 
    private function doImgInit(evt:Event):void 
    { 
     trace("DO IT") 
     // get a reference to the LoaderInfo object in which the image is loaded 
     var lInfo:LoaderInfo = evt.target as LoaderInfo; 

     // this variable is used as reference to the image in the end. 
     var dO:DisplayObject; 

     // try to access the "content" property of the loader, if it works, there is a crossdomain.xml file. 
     try{ 
      dO = lInfo.loader.content; 
     } 

     // if there wasn't one, we need to put the loader inside another object in order to manipulate it 
     catch(err:SecurityError) 
     { 
      // create a new Sprite to contain the loaded image 
      var sprt:Sprite = new Sprite(); 
      // add the loader to the sprite 
      sprt.addChild(lInfo.loader); 
      // get a reference to this sprite in the dO variable 
      var dO:DisplayObject = sprt as DisplayObject; 
     } 

     // from here on you can do anything to the dO variable, rotate it, draw it unto a bitmapData, move it around.. 
     // but first don't forget to add to to some container that is on the stage so you can see it! 
    } 
+0

您是否能够绘制位图数据而不会遇到问题沙箱问题? – Mattias