2

我是 actionscript 的新手,有一些问题:

我在 CS 5.5 中使用 AS 3.0 编写了一个 rss 阅读器

当我按 ctrl+Enter 时,它会读取我的 rss 信息,

但是当我在 html 中发布它时,它只是卡在图片上(显示在舞台上)并且什么都不做 + 显示违反沙箱的错误

我花了一整天的时间阅读文档并理解这是域限制或类似的东西,但仍然不明白该怎么做,你能帮帮我吗

这是我的 swf 文件的代码

俄语.swf

var news_title:Array = new Array ();
var news_descr:Array = new Array ();
var news_pubdate:Array = new Array ();

var rus = "http://news.yandex.ua/index.rss";


test (rus,txt_descr,txt_title);

function test (link,txt_descr,txt_title)

{
var rssLoad:URLLoader = new URLLoader(new URLRequest(link));

rssLoad.addEventListener(Event.COMPLETE, end_rssLoad);

function end_rssLoad(rss_data:Event)
{
    var rss_file:XML = new XML(rss_data.target.data);

    for each (var item:XML in rss_file.channel.item)
    {
        news_title.push(item.title);
        news_descr.push(item.description);
        news_pubdate.push(item.pubDate);

    }

    show_rss();
}


function show_rss()
{
    //number of news in rss field
    var i:Number = 0;

    //number of loops before update the field
    var n:Number = 0;

    function assign_rss_textBox()
    {
        txt_title.htmlText = news_title[i];

        var blank_height = txt_descr.height;

        txt_descr.htmlText = news_descr[i];
        txt_descr.autoSize = "center";
        txt_descr.y = txt_descr.y + (blank_height - txt_descr.height) / 2;

        i+=1;
        if (i >= news_title.length)
        {
            i=0;
            n+=1;
            if (n > 2)
            {
                clearInterval(delay_assign_rss_textBox);
            }
        }
    }

    assign_rss_textBox();

    var delay_assign_rss_textBox = setInterval(assign_rss_textBox,500);
}

}

这是html页面的代码

<html>
<body>
<object width="600" height="125">
<param name="movie" value="russian.swf">
<param name="quality" value="high">
<embed src="russian.swf" quality=high width="600" height="125" ">
</embed>
</object>
</body>
</html>
4

1 回答 1

0

正如您正确识别的那样,这是一个跨域安全问题,原因是您尝试将来自另一个域的数据加载到您的 Flash 文件中。如果您查看crossdomain.xml存储提要的域,您会发现它只允许来自域本身的请求。

如果您无法控制跨域策略(我认为您没有),通常的解决方案是在您自己的域上创建一个服务器端代理来读取数据并将其公开给您的 SWF。本文很好地解释了该过程,并包含一个示例脚本。

这里还解释了一个解决方案,它涉及在Feedburner中镜像提要并从那里使用它(大概它的跨域策略更宽松),而不是直接从源提要中使用。

于 2012-08-06T09:16:33.743 回答