【问题标题】:swf will not work on server. Runs fine locallyswf 将无法在服务器上运行。在本地运行良好
【发布时间】:2011-11-11 05:03:41
【问题描述】:

我有一个横幅 (XML_Banner.swf),它应该从 XML 文件 (banners.xml) 加载和旋转图像。当我在本地预览我的网站时,我没有遇到任何问题。然而,一旦在 Linux 网络服务器上,电影似乎加载但不显示任何图片。只是一个黑匣子。如果我导航到横幅,它也会毫无问题地加载。

http://www.aaronletourneau.ca/ecometrix/Site/Refresh/banner/XML_Banner.swf

这可能是一个我一直忽略的非常简单的解决方法。以下是一些细节:

  • 横幅文件位于站点根文件夹内名为“横幅”的文件夹中。
  • 我已将文件 XML_Banner.swf、XML_Banner.html 和 banners.xml 放在文件夹“banner”中。
  • 横幅图像位于“横幅”内的“img”文件夹中。
  • 文件 (AC_RunActiveContent.js) 位于横幅文件夹内名为“Scripts”的文件夹内。

引用文件:

<script type="text/javascript" src="Scripts/AC_RunActiveContent.js"></script>

嵌入代码:

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="878" HEIGHT="220" id="XML_Banner" ALIGN="">

网址: http://www.aaronletourneau.ca/ecometrix/Site/Refresh/index.html

编辑 这是我的 XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<rotator isRandom="false">
  <bannerTime>5</bannerTime>
  <numberOfBanners>7</numberOfBanners>
  <banners showHeader="true">
    <banner>
      <name>Arrival of Spring.</name>
      <body></body>
      <imagePath>img/01.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Fishing in Peru.</name>
      <body></body>
      <imagePath>img/02.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Peruvian Cattle.</name>
      <body></body>
      <imagePath>img/03.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Shoreline of Port Hawksbury, NS.</name>
      <body></body>
      <imagePath>img/04.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Lilies afloat.</name>
      <body></body>
      <imagePath>img/05.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Logging road.</name>
      <body></body>
      <imagePath>img/06.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
    <banner>
      <name>Small rapids.</name>
      <body></body>
      <imagePath>img/07.jpg</imagePath>
      <link>gallery.html</link>
    </banner>
  </banners>
</rotator>

编辑这是我的 AS:

    //Load from XML File
    stop();
    //Banner 
    var banners:Array = new Array();
    //Image Path
    var imagePaths:Array = new Array();
    //Link URL
    var links:Array = new Array();
    //Body Text
    var bodyTexts:Array = new Array();
    //
    var imageTime:Number;
    //
    var numberOfBanners:Number;
    //
    var isRandom:String;
    //
    var showHeader:String;
    //
    var bannersXML:XML = new XML();
    bannersXML.ignoreWhite = true;
    bannersXML.load("banner/banners.xml");
    bannersXML.onLoad = function(success) {
        if (success) {
            trace("XML LOADED");
            imageTime = parseInt(this.firstChild.firstChild.firstChild)*1000;
            numberOfBanners = parseInt(this.firstChild.childNodes[1].firstChild);
            isRandom = this.firstChild.attributes["isRandom"];
            showHeader = this.firstChild.childNodes[2].attributes["showHeader"];

            var bannerSequence:Array = new Array();
            if (isRandom == "true") {
                //Make a random sequence
                while (bannerSequence.length<numberOfBanners) {
                    newRandomNumber = random(numberOfBanners);
                    //Make sure that the random one chosen is not already chosen
                    for (var i = 0; i<=bannerSequence.length; i++) {
                        if (newRandomNumber != bannerSequence[i]) {
                            alreadyThere = false;
                        } else {
                            alreadyThere = true;
                            break;
                        }
                    }
                    //Add only random values that aren't in the array
                    if (!alreadyThere) {
                        bannerSequence.push(newRandomNumber);
                    }
                }
            } else {
                for (var i = 0; i<numberOfBanners; i++) {
                    bannerSequence.push(i);
                }
            }
        }

        //Read XML in the Random Order Chosen
        for (var i = 0; i<numberOfBanners; i++) {
            banners.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].firstChild.firstChild.toString());
            bodyTexts.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[1].firstChild.nodeValue);
            imagePaths.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[2].firstChild.nodeValue);
            links.push(this.firstChild.childNodes[2].childNodes[bannerSequence[i]].childNodes[3].firstChild.nodeValue);
        }
        play();
    };
    //Start the image counter at 0
    var imageCounter = 0;

stop();
//Check to see if the banner should be reset
if (imageCounter>=banners.length) {
    imageCounter = 0;
}
//Load banner image  
var imageLoader:MovieClipLoader = new MovieClipLoader();
imageLoader.loadClip("banner/img/"+imagePaths[imageCounter],bannerContainer_mc);
var loadingListener:Object = new Object();
loadingListener.onLoadComplete = function() {
    play();
    //Display Header
    if (showHeader == "true") {
        imageText_mc.headerTxt.text = banners[imageCounter].toString();
    } else {
        imageText_mc.headerTxt.text = "";
        imageText_mc._alpha = 0;
    }
    //Button and Link Handling
    if (links[imageCounter] != null) {
        trace("LINK : "+links[imageCounter]);
        bannerContainer_mc.onRelease = function() {
            getURL(links[imageCounter], "_self");
        };
    } else {
        delete bannerContainer_mc.onRelease;
    }
};
imageLoader.addListener(loadingListener);

有什么不正确的,还是我遗漏了什么? 任何帮助将不胜感激。非常非常感谢。

【问题讨论】:

  • 您确定为服务器环境正确设置了图像的路径吗?
  • 如果 SWF 直接加载正常,那么我会检查 JS 控制台是否有错误。

标签: spring-webflow


【解决方案1】:

问题是,您的网址有误。 swf 在

处搜索您的图片
http://www.aaronletourneau.ca/ecometrix/Site/Refresh/img/01.jpg

但它们位于

http://www.aaronletourneau.ca/ecometrix/Site/Refresh/banner/img/01.jpg

您可以在您的 xml 中添加此相对路径 banner/img/01.jpg 作为源,或者使用该相对路径创建一个 flashVar。如果给定,您必须修改您的 AS 代码以使用此相对路径。

swf 从它所包含的 HTML 的基本 url 中获取相对 url,而不是 swf 所在的位置。

【讨论】:

  • 感谢您的回复。非常感激。也许是睡眠不足,但我对此感到困惑:您可以在您的 xml 横幅/img/01.jpg 中添加此相对路径作为源,或者使用该相对路径创建一个 flashVar。如果给定,您必须修改您的 AS 代码以使用此相对路径。
  • 您可以在 HTML 嵌入代码中定义 flashVars。此 flashVar 可通过 contentLoaderInfo 在 flash 中获得。您可以在 flash 中检索此值并将其与 xml 中的图像名称结合起来,以获得图像的正确相对 url。你也可以在你的 XML 中拥有完整的相对路径,但是它不会在本地工作,因为 swf 和图像与嵌入的 HTML 位于同一目录中。
  • 您也可以将图片移至http://www.aaronletourneau.ca/ecometrix/Site/Refresh 以方便使用。
  • DanielB... 感谢您的帮助。现在已经解决了。我是这个网站的新手,有感谢按钮吗?
  • 是的,点击我的答案旁边的灰色接受按钮。看看how to accept an answer
猜你喜欢
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2016-09-15
  • 2014-11-29
相关资源
最近更新 更多