-1

一周以来,我发现我的 flex 4 应用程序在本地环境和远程部署环境中的工作方式有所不同。

我将整个 bin-debug 文件夹复制到遥控器中,但我不知道为什么会发生这种情况?它与复制到远程的相同 swf 和我用来运行应用程序的浏览器相同,但它的行为不同。

好吧,我阅读了一些有布局问题的帖子在本地和远程中的显示方式不同,但让我澄清一下,在我的情况下,我没有看到布局问题,但它的代码似乎工作方式不同。就像,我在我的代码中实现了动态屏蔽、共谋检测、深度排序算法,这些算法在本地环境中完美运行,而在远程环境中则不行。

如果您认为这可能是缓存问题,那么让我告诉您。我已经清除了浏览器的缓存(事实上,我几乎每次在运行应用程序之前都会这样做)。另外,我已经完全删除了遥控器中的文件并再次复制了所有文件。我也尝试过部署“发布”版本,但同样的事情。我已经以不同的组合多次执行上述每个步骤以查看修复,但还没有运气。

我相信这不重要

我在本地环境中使用 WAMP,在远程环境中使用 LAMP

为了确保我看到的是最新版本,我添加了一个版本号并显示在调试窗口中。两个环境都显示相同的数字,因此这表明两者是相同的版本。

这些是我与主 swf 一起复制的所有文件

framework_4.0.0.14159.swf
main.swf
osmf_flex.4.0.0.13495.swf
rpc_4.0.0.14159.swf
spark_4.0.0.14159.swf
sparkskins_4.0.0.14159.swf
test.swf
textLayout_1.0.0.595.swf

我不知道如何解决这个问题。请帮忙

4

1 回答 1

0

谢谢 shaunhusain 非常感谢。我使用截图工具使用了跟踪并发现了错误。

它全部在主机名中。我正在根据url中找到的扩展名找到资产类型。如果资产类型是“图像”,我会删除透明像素,如果它不是图像(xml、swf 等)则忽略

这是确定资产类型的代码(注意默认值为“未知”)

    private function getAssetType(url:String):String{

        var type:String = "unknown";

        var ext:String = getExtension(url);

        if (ext == "png" || ext == "jpg" || ext == "jpeg" || ext == "bmp"){
            type ="image";
        }else if (ext == "swf"){
            type = "swf";
        }

        return type;

    }
    // this is the buggy code
    private function getExtension(str:String):String{
        return  str.split(".")[1];
    }

该错误在 getExtension() 函数中。我只期望文件名中的点和拆分返回两个数组元素,第二个元素是扩展名。

如果你传递这个变量

http://localhost/assets/images/Rendered/aksum_se.png

它返回 png

http://19x.19x.24x.xxx/assets/images/Rendered/aksum_se.png

它返回 19x,因此它的格式未知。好吧,我修好了。

现在我有点好奇为什么我的深度排序不起作用,这与任何图像 url 无关,但我想我会做到的。

于 2012-05-04T14:35:14.467 回答