如何使用flex的外部actionscript文件

时间:2010-12-15 03:57:30

标签: actionscript-3 flashbuilder4

我正在构建一个Flash 4 Builder项目,并希望使用外部actionscript文件。这是我用过的结构......

http://img704.imageshack.us/img704/794/schermafbeelding2010121b.png

所以,我希望能够将“actionscript.as”连接到“OrderApp.mxml”文件。

我将此<fx:Script source="assets/actionscript/actionscript.as"/>添加到我的OrderAp.mxml文件中,actionscript.as中的函数查找如下示例:

public function checkCode():void{
    if (txtToegangscode.text == "moia") {
        lblFeedback.text = "ok";
        txtToegangscode.enabled = false;
        btnGaNaarPersonen.visible = true;
        btnGaVerder.visible = false;
    } else {
        lblFeedback.text = "wrong"; 
    }
}

当我想添加一些组件时,比如“Toegangscode.mxml”,我不断收到类似“1120:未定义属性lblFeedback的访问”的错误。当我尝试调用函数checkCode()我做错了什么?

4 个答案:

答案 0 :(得分:2)

您可能已经找到了您正在寻找的答案,但是,这个链接指向Adobe的网站,其中包含您或其他读者需要的所有信息。

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf61c8a-7ff4.html

答案 1 :(得分:1)

问题解决了......显然,你必须为每个组件使用不同的.as文件!不过感谢所有帮助过我的人!

答案 2 :(得分:0)

<强>编辑:

抱歉,我没有仔细查看你的问题。

您的问题是* .as文件不知道您的组件是什么:

您需要将组件传递给函数,如下所示:

public function checkCode(txtToegangscode:TextInput, lblFeedback:Label):void{
    if (txtToegangscode.text == "moia") {
        lblFeedback.text = "ok";
        txtToegangscode.enabled = false;
        btnGaNaarPersonen.visible = true;
        btnGaVerder.visible = false;
    } else {
        lblFeedback.text = "wrong"; 
    }

这将允许您的* .as文件访问这些组件中的属性。

<强> OLD:

以下是文档:http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_4.html

您可以使用标记的source属性在Flex应用程序中包含外部ActionScript文件。这提供了一种方法,使您的MXML文件不那么混乱,并促进跨不同应用程序的代码重用。

不要为脚本文件指定与应用程序文件相同的名称。这会导致编译器错误。

以下示例显示IncludedFile.as文件的内容:

// usingas/includes/IncludedFile.as
public function computeSum(a:Number, b:Number):Number {
    return a + b;
}

以下示例导入IncludedFile.as文件的内容。该文件位于includes子目录中。

<?xml version="1.0"?>
<!-- usingas/SourceInclude.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script source="includes/IncludedFile.as"/>

    <mx:TextInput id="ta1st" text="3" width="40" x="170" y="24" textAlign="right"/>
    <mx:TextInput id="ta2nd" text="3" width="40" x="170" y="52" textAlign="right"/>

    <mx:TextArea id="taMain" height="25" width="78" x="132" y="82" textAlign="right"/>

    <mx:Button id="b1" label="Compute Sum" 
        click="taMain.text=String(computeSum(Number(ta1st.text), Number(ta2nd.text)));" 
        x="105" 
        y="115"
    />

    <mx:Label x="148" y="52" text="+" fontWeight="bold" fontSize="17" width="23"/>
</mx:Application>

标记的source属性支持相对路径和绝对路径。

标记的source属性和include指令以不同的方式引用文件。

以下是标记源属性中引用的外部文件的有效路径:

相对URL,例如../myscript.as。相对于使用斜杠的文件,将解析不以斜杠开头的相对URL。如果标签包含在“mysite / myfiles / myapp.mxml”中,系统将搜索“mysite / IncludedFile.as”。

对于ActionScript include指令,您只能引用相对URL。 Flex在源路径中搜索导入的类和包。 Flex不会在源路径中搜索使用include指令或标记的source属性包含的文件。

答案 3 :(得分:0)

看起来你错过了字符串开头的双引号?

lblFeedback.text =错误“;

应该是......

lblFeedback.text =“错误”;

为什么不把这段代码放到一个类中然后你可以检测到任何编译错误?