Actionscript 3 如何在flex中使用外部actionscript文件

Actionscript 3 如何在flex中使用外部actionscript文件,actionscript-3,flashbuilder4,Actionscript 3,Flashbuilder4,我正在构建一个Flash4Builder项目,希望使用一个外部actionscript文件。这是我使用的结构 因此,我希望能够将“actionscript.as”连接到“OrderApp.mxml”文件 我将此添加到我的OrderAp.mxml文件中,并在actionscript.as中添加一个函数,例如如下所示: public function checkCode():void{ if (txtToegangscode.text == "moia") { lblFee

我正在构建一个Flash4Builder项目,希望使用一个外部actionscript文件。这是我使用的结构

因此,我希望能够将“actionscript.as”连接到“OrderApp.mxml”文件

我将此
添加到我的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:accesofundefinedproperty lblFeedback”。当我尝试调用函数checkCode()时,我做错了什么?

编辑:

对不起,我没有仔细考虑你的问题

您的问题是*.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文件访问这些组件中的属性

旧版:

以下是文件:

您可以使用标记的源属性在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>

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

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

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

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


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

看起来您缺少字符串开头的双引号

lblFeedback.text=错误”

应该是

lblFeedback.text=“错误”


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

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

你可能已经找到了你想要的答案,但是,有一个到Adobe网站的链接,其中包含了所有您或其他读者需要的信息


添加脚本后,您试图向flex应用程序添加一些组件?此文件中是否定义了包?您能否提供其结构?也可能编译器会感到困惑,因为actionscript是一个保留关键字:)但是我从未听说过itHm…定义的包?您的意思是什么?请查看我的编辑,因为我相信这将更正您的问题。很抱歉以前没有看到。谢谢您的回答!但这里没有解决任何问题…对于初学者,我的Flash Builder 4不接受“”标记。它将其转换为“”标记。假设您的按钮中有一个-click=“checkCode()“-单击参数。你必须使用我的openingpost中给出的函数。如何在actionscript文件和组件之间进行通信?嗯。。。打字错误我用了两个引号。。。函数位于actionscript类中。。。但是我不断地遇到这样的错误:“1120:Acces of undefined property lblFeedback”我有点困惑,你是如何尝试使用它的?lblFeedback是在哪里定义的?是在OrderApp.mxml中还是在OrderApp.mxml中?另外,只有OrderApp.mxml添加了actionscript源代码,对吗?lblFeedback位于组件toegangcode.mxml中。actionscript源仅在OrderApp.mxml中定义,因为actionscript.as文件仅支持一个组件,对吗?您可以在actionscript文件中编写更通用的代码,然后如果需要,可以将其包含在更多组件中。无论如何,我认为你的问题是lbl是在Toeganscode中定义的,但在OrderApp中被引用,就好像它是OrderApp中的一个孩子一样。。。它应该类似于txtToegangscode.lblFeedback.text=“ok”;谢谢你的回答!不管怎样,解决方案已经找到,我还是要感谢你!