2

我正在构建一个 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

4 回答 4

2

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

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

于 2011-06-21T18:48:59.440 回答
1

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

于 2010-12-17T02:09:00.427 回答
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 文件访问这些组件中的属性。

老的:

这是文档: 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 指令或标记的源属性包含的文件。

于 2010-12-15T15:21:29.700 回答
0

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

lblFeedback.text = 错误";

应该...

lblFeedback.text = "错误";

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

于 2010-12-15T21:35:07.323 回答