如果我理解正确,那么是的,这是可能的。您“调用组件”的术语是非标准的;但我认为您想在 ActionScript 而不是 MXML 中创建组件。用 MXML 可以做的任何事情都可以用 ActionScript 做。
你有正确的想法;你几乎就在那儿了;只有几件事我会改变。首先,在 ActionScript 中,您将导入该类;你不会引用 MXML 命名空间,概念上是这样的:
import com.myPackage.msns;
在您的脚本块中。
创建组件时,您希望创建一个指向它的变量。这将对应于 MXML 中的 id 字段。您的语法ns1:msns:component
可能会导致编译器错误。但是,您可以像这样创建组件:
var msns :component = new component()
我将在这里提到通常的约定是将组件名称大写。不过,您对小写字母的使用在语法上并没有错。
然后设置组件的属性,你已经在做:
msns.x = 5
msns.x = 5
最后 - 这是您缺少的步骤 - 您必须将新组件添加到容器中。如果您正在处理 Spark 容器,则可以使用addElement来执行此操作;如果您正在处理 MX 容器,则可以使用addChild 。因为,在您提供的示例中,您的父容器是 spark 应用程序,所以我将使用 addElement:
this.addElement(msns);
因此,您的代码块将像这样重写:
protected function mmshakkoutab(event:MouseEvent):void{
var msns:component = new component();
msns.x = 5
msns.x = 5
this.addElement(msns);
}
您应该考虑阅读的一件事是Flex Component LifeCycle。每个 Flex 组件都经过它;某些事情是为了某种目的而按某种顺序完成的。对于创建子项,您最好扩展 createChildren(),特别是如果您希望将组件创建为应用程序标签初始设置的一部分。