1

所以我正在使用 FlashDevelop 和 flex,但我无法让源代码正常工作。当我嵌入图像时它工作得很好,但如果我只是去 source=".​​./img/Koala.jpg" 我用于工作嵌入的相同路径它不起作用。在 flash builder 中,我所要做的就是 source="/img/Koala.jpg" ,它工作得很好。如果我输入路径“D:\flashDevelop\FlexMobileProject\src\img\Koala.jpg”,这可以正常工作。谁能解释一下我在这里缺少什么?

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    title="HomeView" creationComplete="init()">

<fx:Script>
    <![CDATA[

        [Embed(source = "../img/Koala.jpg")]
        [Bindable] public var img:Class;


        public function init():void {
            var s:String = new String();
            label.text = String(imgstage.sourceHeight);

            trace(imgstage.source);
        }

    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<!-- can't find the image even if that path is the same as the embed -->
<s:Image id="imgstage" source="../img/Koala.jpg" y="0" x="0"/>
<s:Label id="label" text="name"></s:Label>
</s:View>
4

3 回答 3

0

如果我没记错的话, source=".​​./img/Koala.jpg" 是在运行时处理的,而 embed 指令是在编译时处理的。所以工作目录不同导致 source="" 失败。

以下工作是否有效:

<s:Image id="imgstage" source="img/Koala.jpg" y="0" x="0"/>

假设 img 文件夹在您的 swf 文件旁边,它应该可以工作。

于 2012-11-08T23:17:56.417 回答
0

在 FlashDevelop 中,您想要保留在 SWF 之外的任何文件都必须放在 bin 文件夹中。

于 2012-11-09T10:04:50.777 回答
0

当您为图像指定“源”时,文件将在运行时加载。但是,FlashDevelop 不会将文件从 src/ 复制到 bin/ - 您必须使用要在运行时加载的元素手动填充 bin/ 目录。运行时的路径相对于 HTML 页面进行解析。

嵌入是在编译时解析的,应该注意的是,在使用 FlashDevelop 时,路径总是相对于 class/mxml 文件而不是相对于项目根目录来解析。如果路径以“/”开头,它将相对于类路径的根。

PS:这些限制实际上是在 Flex SDK 中。

于 2012-11-09T13:31:38.070 回答