又大又圆 发表于 2018-12-5 15:57:54

加载xml出现的问题

导出的swf,如果是用flash player打开就没有问题。
但是如果用浏览器打开,就加载不了xml文件,路径方面相对和绝对都试过了,没有什么用

xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
        <video>
                <list>
                        <path>video/1.mp4</path>
                </list>
        </video>
</config>
as代码:
var myXML:XML;
var XML_URL:String = "config.xml";
var myLoader:URLLoader;

myXML = new XML();
myLoader = new URLLoader(new URLRequest(XML_URL));
myLoader.addEventListener("complete", xmlLoaded);
myLoader.addEventListener("ioError", ioError);

function ioError(e: Event):void {
        trace("xml ioError." + e.toString());
        _txt.text = "xml error.";
}

function xmlLoaded(event: Event):void {
        myXML = XML(myLoader.data);
        trace("xml loaded.");
        _txt.text = "xml loaded.";
}

上面是player打开的 ,下面是浏览器打开的,浏览器试了很多个都一样结果
https://s1.ax1x.com/2018/12/05/FlJSfJ.jpg



最后一批aser 发表于 2018-12-5 15:57:55

本帖最后由 最后一批aser 于 2018-12-5 16:20 编辑


安全性问题,你只要把这些档案部署到服务器或者自己本地搭建环境,就可以了,已经测试可行!

TKCB 发表于 2018-12-5 16:11:24

这个是一个安全限制问题。
SWF默认是有本地和网络两个模式的。
本地模式,可以更多的本地权限,比如加载本地文件等等。
网络模式,则更多的网络访问权限,本地权限则大大限制。


本地文件可以通过添加信任,解决此问题。


又大又圆 发表于 2018-12-5 16:55:04

TKCB 发表于 2018-12-5 16:11
这个是一个安全限制问题。
SWF默认是有本地和网络两个模式的。
本地模式,可以更多的本地权限,比如加载本 ...

把设置修改成网络模式之后,导出的swf文件用player打开,在未设置信任路径之前打开也是没有内容的。设置之后就好了。
但是用浏览器打开swf还是没有内容,是不是还要改别的地方?

又大又圆 发表于 2018-12-5 16:56:16

最后一批aser 发表于 2018-12-5 16:19
安全性问题,你只要把这些档案部署到服务器或者自己本地搭建环境,就可以了,已经测试可行!
...

本地怎么搭建环境呢,楼上的方法已经试过了,还是不可以,不知道是哪里出了问题

最后一批aser 发表于 2018-12-5 17:34:27

https://jingyan.baidu.com/article/ed2a5d1f128ff609f6be17fa.html

TKCB 发表于 2018-12-5 17:47:24

有的浏览器本地是有问题的,,比如谷歌,我之前写的JS和AS交互就是,本地谷歌是无法通信成功的。
但是实际环境下,上传到网站后,是可以的。

又大又圆 发表于 2018-12-6 11:28:39

最后一批aser 发表于 2018-12-5 17:34
https://jingyan.baidu.com/article/ed2a5d1f128ff609f6be17fa.html

谢谢,根据两位大佬的方法,可以在网页加载到xml的数据了。

不过在我播放mp4的时候就又不行了,提示NetStream.Play.StreamNotFound,找不到视频文件,但是swf就可以,能帮我看看是什么原因吗
加载视频的代码:
public function LoadVideo()
{
        nc = new NetConnection();
        nc.connect(null);
        videoStream = new NetStream(nc);
}

public function load(_url:String,_mc:MovieClip):void
{
        mc = _mc;
        videoStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
        videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

        videoStream.play(_url);
        myvideo = new Video();
        myvideo.attachNetStream(videoStream);
        mc.parent.addChild(myvideo);
}

private function asyncErrorHandler(event: AsyncErrorEvent): void {
        trace("ignore error:" + event);
}

private function netStatusHandler(event:NetStatusEvent):void
{
        trace(event.info.code);
}


最后一批aser 发表于 2018-12-6 11:43:34

又大又圆 发表于 2018-12-6 11:28
谢谢,根据两位大佬的方法,可以在网页加载到xml的数据了。

不过在我播放mp4的时候就又不行了,提示NetS ...

myvideo = new Video();
myvideo.attachNetStream(videoStream);
videoStream.play(_url);//放到下面


又大又圆 发表于 2018-12-6 12:10:11

最后一批aser 发表于 2018-12-6 11:43

myvideo = new Video();
myvideo.attachNetStream(videoStream);


还是不行,我在本地是没有问题的,就是放到服务器上不行了
跟swf放在一起的,swf就可以
nc.connect(null);

会是这个参数的原因吗;
参数command:String — 如果要连接到本地计算机上的视频文件,请将此参数设置为 null。 如果要连接到服务器,则将此参数设置为包含服务器上视频文件的应用程序的 URI。 应使用以下语法(方括号中的项是可选的):
protocol:[//host][:port]/appname

若要连接到 Flash Media Server,请使用 rtmp、rtmpe、rtmps、rtmpt、rtmpte 或 rtmfp 作为协议。如果连接成功,则会返回 code 属性值为 NetConnection.Connect.Success 的 netStatus 事件。 有关为响应 connect() 调用而返回的所有事件代码的列表,请参阅 NetStatusEvent.info 属性。

如果 SWF 文件是从安装服务器的同一台主机中提供的,则可以省略 host 参数。 如果省略 instanceName 参数,Flash Player 将连接到应用程序的默认实例。


... arguments — 要传递给 command 中指定的应用程序的任意类型可选参数。 如果使用 Flash Media Server,会将额外的参数传递给应用程序服务器端代码中的 application.onConnect() 事件处理函数。 您必须在 onConnect() 中定义并处理这些参数

把视频和swf放在一起应该算本地文件把,还是网络上的?

页: [1] 2
查看完整版本: 加载xml出现的问题

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)