我是Flex 4.5的新手,我创建了一个类(Project.as),其中包含以下代码:
package classes
{
public class Project
{
public var projectName:String;
public var description:String;
public var fileLoc:String;
public function Project()
{
// This is the constructor
}
public function SayHello() {
import mx.controls.Alert;
Alert.show('howdy!','Greeting');
}
}
}
在我的main.mxml
文件中,我有以下代码:
<fx:Script>
<![CDATA[
import classes.Project;
import mx.controls.Alert;
public var aProject:Project = new Project;
aProject.SayHello();
]]>
</fx:Script>
Flex Builder正在这样说:
1120:访问未定义的属性aProject。
为什么告诉我这个,我该如何解决?我不明白为什么它不起作用。
答案 0 :(得分:1)
这里有很多问题。
首先,我从未见过有人将import语句放在方法中。通常它们放在包和类定义之间:
package classes
{
import mx.controls.Alert;
public class Project
{
public var projectName:String;
public var description:String;
public var fileLoc:String;
public function Project()
{
// This is the constructor
}
public function SayHello() {
Alert.show('howdy!','Greeting');
}
}
}
二;您编写的用于调用类实例上的方法的ActionSCript代码行应放在方法中;不是“随机的”。像这样:
<fx:Script>
<![CDATA[
import classes.Project;
import mx.controls.Alert;
public var aProject:Project = new Project;
protected function sayHello():void{
aProject.SayHello();
}
]]>
</fx:Script>
某种方式你会想要调用该方法。原帖子上的评论者建议使用creationComplete,这可行。但是,在MXML组件中使用creationComplete作为“构造函数样式”代码时应该谨慎。 preinitialize更好,事件将在实际构造函数运行后立即触发。如果您需要访问任何MXML子级,请将您的代码放在初始化事件处理程序中,该处理程序在createChildren()运行后立即运行。
creationComplete处理程序在组件完成初始化后立即执行;并且人们经常在creationComplete中做事,使组件再次通过它的生命周期,更新显示列表。