我的目标是编写在Flash或AIR中运行的教育软件。(可能主要是移动设备上的AIR。)我设想舞台将有一个像Flex提供的控件区域,但另一个区域将有纯ActionScript中完成的动画和图形。有人告诉我,如果我使用Flex,我需要在我创建的任何新组件中继承UIComponent,但我也被告知,我可以在屏幕上放一个大的UIComponent,并在其中添加基于Sprite的对象。所以我试图对后者进行编码,但我被卡住了。我创建了一个带有按钮和UIComponent的MXML文件。然后,我想在一个单独的.AS文件中编写一个类,该文件在其构造函数中使用UIComponent并处理添加对象。我不知道如何在MXML文件的脚本代码中引用UIComponent。这是我的:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import exper AddSprites;
private var e:AddSprites;
public function addStuff():void {
???? next line is question ???
e = new AddSprites(..UIComponent?..);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:Button click="addStuff()" />
<mx:UIComponent id="uic"/>
</s:Application>
您可以在脚本块中引用UIComponent及其id uic
。然后,您可以将其传递给addStuff函数。由于UIComponent继承自Sprite,因此您可以完美地拥有一个addSprite函数,该函数将Sprite作为参数,并且对Flex类一无所知,并且是纯AS3代码。
所以基本上:
e = new AddSprites(uic);
带有:function AddSprites(holder:Sprite)
作为构造函数。