【问题标题】:How to use an external actionscript file with flex如何使用带有 flex 的外部 actionscript 文件
【发布时间】:2011-06-22 02:48:59
【问题描述】:

我正在构建一个 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() 时我做错了什么?

【问题讨论】:

  • 您尝试在添加脚本后向您的 flex 应用添加一些组件?
  • 这个文件中定义了包吗?你能提供它的结构吗?也可能编译器会因为actionscript是保留关键字而感到困惑:)但是我从未听说过它
  • 嗯...定义的包?什么意思?
  • 请查看我的编辑,因为我相信这会解决您的问题。很抱歉之前没有看到这个。

标签: actionscript-3 flashbuilder4


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答!不过已经找到了解决办法,还是要谢谢你!
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您好像缺少字符串开头的双引号?

    lblFeedback.text = 错误";

    应该是……

    lblFeedback.text = "错误";

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

    【讨论】:

    • 嗯...错字。我确实使用了 2 个引号......这些函数在一个 actionscript 类中......但我不断收到这个错误:“1120:未定义属性 lblFeedback 的访问”
    • 我有点困惑你是如何使用它的?
    • lblFeedback 在哪里定义?在 Toegangscode.mxml 或 OrderApp.mxml 中?也只有 OrderApp.mxml 添加了 actionscript 源代码吧?
    • lblFeedback 在组件 Toegangscode.mxml 中。 actionscript源只定义在OrderApp.mxml中,因为actionscript.as文件只支持一个组件,对吧?
    • 您可以在 actionscript 文件中编写更通用的代码,然后您可以根据需要将其包含在更多组件中。无论如何,我认为你的问题是 lbl 是在 Toeganscode 中定义的,但在 OrderApp 中被引用,就好像它是 OrderApp 中的一个孩子......它应该是这样的 txtToegangscode.lblFeedback.text = "ok";
    【解决方案4】:

    已编辑:

    对不起,我没有仔细看你的问题。

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

    旧:

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

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

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

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

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

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

    <?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 包含指令,您只能引用相对 URL。 Flex 在源路径中搜索导入的类和包。 Flex 不会在源路径中搜索使用 include 指令或标记的源属性包含的文件。

    【讨论】:

    • 感谢您的回答!但是这里没有解决任何问题...首先,我的 Flash Builder 4 不接受“
    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 2011-09-06
    • 2013-09-02
    • 2010-10-22
    • 2012-01-27
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多