尝试链接到SWF中的URL时出现错误2028

时间:2014-08-07 22:55:30

标签: xml actionscript-3 runtime-error flash

我正在尝试为农贸市场创建互动地图。用户将光标悬停在看台上,弹出农场和农场主的名字。点击该按钮后,用户会将用户重定向到bloomington.in.gov网站上的农民页面。 .swf为farm / farm / url数据读取.xml文件,因此.swf可以更加动态。

.swf将位于bloomington.in.gov域中的某个位置,但我无法访问它以测试它是否可以在那里工作。因此,我试图通过在adobe flash player或chrome中的不同计算机上的闪存驱动器上运行来测试.swf。

当我在Adobe Flash中测试文件时,一切似乎都有效,但当我尝试发布.swf并在Adobe Flash Player中运行时,我收到以下错误消息:

SecurityError:错误#2028:本地文件系统SWF文件文件:/// G | /FarmersMarketMap/FarmersMarketMap2.swf无法访问Internet URL https://bloomington.in.gov/documents/viewDocument.php?document_id=7483。     at global / flash.net :: navigateToURL()     在MethodInfo-7()

似乎加载了xml文件,因为显示了服务器场/农场名称,但URL似乎存在此安全问题。

我玩过将我与外部网站联系起来的Flash游戏。为什么我不允许这样做?

我已尝试过互联网的各种建议:

  • 跨域xml政策
  • Adob​​e Flash发布设置
  • 的Security.allowDomain(" *&#34);
  • 将html allowScriptAccess更改为"始终"

或者,当.swf最终嵌入到bloomington.in.gov域中时,所有链接(因此在该域内)是否突然起作用?尽管如此,它的神经紧张还是不知道它是否会提前发挥作用。

以下是我的代码:

import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.Font;

//http://www.republicofcode.com/tutorials/flash/as3text/;
var farmFont:Font = new nevis   as Font;
var farmerFont:Font = new DistrictPro   as Font;

//FarmText Format
var farmFormat:TextFormat = new TextFormat();
farmFormat.font = farmFont.fontName;
farmFormat.size = 28;
farmFormat.align = TextFormatAlign.LEFT;

//FarmerText Format
var farmerFormat:TextFormat = new TextFormat();
farmerFormat.font = farmerFont.fontName;
farmerFormat.size = 24;
farmerFormat.align = TextFormatAlign.LEFT;

//Set Farm Text Attributes
var farmText:TextField = new TextField();
farmText.embedFonts = true;
farmText.defaultTextFormat = farmFormat;
farmText.antiAliasType = AntiAliasType.ADVANCED;
farmText.text = "This is the Farm Text.";
farmText.x = 324.15;
farmText.y = 42.1;
farmText.autoSize = "left";

//Set FarmerTextAttributes
var farmerText:TextField = new TextField();
farmerText.embedFonts = true;
farmerText.defaultTextFormat = farmerFormat;
farmerText.antiAliasType = AntiAliasType.ADVANCED;
farmerText.text = "This is the Farmer Text";
farmerText.x = 324.15;
farmerText.y = 70.1;
farmerText.width = 475.85;
farmerText.wordWrap = true;

//Default Text
var firstLine:String = "Vendor Locations";
var secondLine:String = "Click on market spaces for more information.";
farmText.text = firstLine;
farmerText.text = secondLine;
addChild(farmText);
addChild(farmerText);

//http://www.republicofcode.com/tutorials/flash/as3xml/
var XMLinput:XML;//var variableIdentified:DataType;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("MarketSpreadsheet.xml"));
//loads xml file;
myLoader.addEventListener(Event.COMPLETE, processXML);
//checks for when xml is loaded, processXML=function to be done when xml is loaded;

var i:int;//counter
//var j:int;//nested counter

//generates the xml variable data array
var XMLData:Array = new Array(4);
for (i=0; i<4; i++)
{
    XMLData[i] = new Array(100);
}

function processXML(e:Event):void
{
    XMLinput = new XML(e.target.data);
    for (i=0; i<100; i++)
        {
            if (isNaN(Number(XMLinput.*.Lot[i])) == false)
        {
            XMLData[0][i] = ("N" + XMLinput.*.Lot[i]);
        }
        else
        {
            XMLData[0][i] = XMLinput.*.Lot[i];
        }
        XMLData[1][i] = XMLinput.*.Farm[i];
        XMLData[2][i] = XMLinput.*.Farmer[i];
        XMLData[3][i] = XMLinput.*.Link[i];
    }

    //Add the button event handler to the buttons' parent clip.
    butts.addEventListener(MouseEvent.CLICK, buttClick);
    butts.addEventListener(MouseEvent.MOUSE_OVER, buttOver);
    butts.addEventListener(MouseEvent.MOUSE_OUT, buttOut);

    //Button Handlers
    function buttClick(e:MouseEvent)
    {
        trace(e.target.name + " Click");
        for (i=0; i<XMLData[0].length; i++)
        {

            if (XMLData[0][i] == e.target.name)
            {
                navigateToURL(new URLRequest(XMLData[3][i]));
                trace(XMLData[3][i]);
            }
        }
    }

    function buttOver(e:MouseEvent)
    {
        for (i=0; i<XMLData[1].length; i++)
        {
            if (XMLData[0][i] == e.target.name)
            {
                farmText.text = XMLData[1][i];
                farmerText.text = XMLData[2][i];
            }
        }
    }

    function buttOut(e:MouseEvent)
    {
        farmText.text = firstLine;
        farmerText.text = secondLine;
    }
}

1 个答案:

答案 0 :(得分:0)

LDMS是对的,它是设计上的本地/托管安全问题。要正确测试是否要在网站上运行某些内容,您需要尽可能地匹配托管环境。

在大多数情况下,托管您的SWF以及在任何Web服务器(甚至是本地Web服务器)上相对于SWF文件加载的所有文件,并尝试一下。