Много вопросов здесь.
Во-первых, я никогда не видел, чтобы кто-нибудь помещал операторы 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, который бы работал. Тем не менее, вы должны быть осторожны при использовании creationComplete для кода «стиль конструктора» в компоненте MXML. preinitialize лучше, и событие сработает сразу после запуска фактического конструктора. Если вам нужен доступ к любым дочерним элементам MXML, поместите свой код в обработчик события инициализации, который запускается сразу после запуска createChildren ().
обработчики creationComplete выполняются сразу после завершения инициализации компонента; и люди часто создают в creationComplete такие вещи, которые заставляют компонент снова проходить его жизненный цикл, обновляя список отображения.