我正在构建一个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()我做错了什么?
答案 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 =“错误”;
为什么不把这段代码放到一个类中然后你可以检测到任何编译错误?