Actionscript 3 尝试学习actionscript/flex,尝试在没有mxml的情况下绘制方框
好的,我正在尝试用ActionScript3和Flex3.5绘制一个方框。首先有几件事: 1) 我根本不使用任何IDE,只使用记事本和flex 2) 我根本没有使用任何mxml文件(是的,这在as3中是可能的) 3) 我没有使用继承,也就是说,我没有在我的类上使用扩展,我试图让这段特殊的代码只通过组合工作 无论如何,这是代码本身(文件名为MAIN.as):Actionscript 3 尝试学习actionscript/flex,尝试在没有mxml的情况下绘制方框,actionscript-3,actionscript,Actionscript 3,Actionscript,好的,我正在尝试用ActionScript3和Flex3.5绘制一个方框。首先有几件事: 1) 我根本不使用任何IDE,只使用记事本和flex 2) 我根本没有使用任何mxml文件(是的,这在as3中是可能的) 3) 我没有使用继承,也就是说,我没有在我的类上使用扩展,我试图让这段特殊的代码只通过组合工作 无论如何,这是代码本身(文件名为MAIN.as): 它编译得很好,但没有显示任何内容。我应该看到一个红色的盒子,但现在我看到的只是一个空白屏幕。我已经通过使用类MAIN extends Spr
它编译得很好,但没有显示任何内容。我应该看到一个红色的盒子,但现在我看到的只是一个空白屏幕。我已经通过使用类MAIN extends Sprite实现了这一点,然后一起去掉了box变量,但是我想再次避免使用extends命令。很抱歉,文章中的导入有点过了头,虽然它们与问题无关,但也没什么关系。Flex组件(如应用程序、列表、画布等)在使用addChild时只能将其他Flex组件作为子组件添加。如果要添加原始AS3原语,如Shape、Sprite、Movieclip,则必须执行
[FLEX COMPONENT HERE].rawChildren.addChild(BOX)
或在您的情况下APPLICATION.rawChildren.addChild(框)代码>如果Sprite是您的主要类,我认为您应该扩展它
其次,我不是Flex方面的专家,但我认为如果没有正确初始化框架,就无法真正使用Flex的大多数类。我一直看到使用mxml完成这项工作。也许只有使用Actionscript才能做到这一点,但我看不出有什么意义。如果您想使用应用程序和其他Flex内容,请将您的入口点设置为mxml文件。否则,只需使用纯Actionscript
PS:刚刚读到,您已经发现了扩展Sprite的代码。但无论您对继承或组合的偏好是什么,为了使框可见,必须在某个时候将其附加到显示列表。所以,你有一个精灵,并吸引了它。但您仍然必须将其添加到显示列表中才能看到它。要将显示对象添加到显示列表,需要对某个显示对象容器的引用。如果扩展Sprite,则类将是1)一个容器,2)将附加到显示列表。你的主要职业至少应该是一个精灵。我想你在这里没有太多选择 文档类是ActionScript进入舞台的入口点。您的文档类对象的一个实例作为显示列表中任何对象的“根”属性存在和表示。DisplayObject类的根属性必须返回一个DisplayObject,定义为:
对于加载的SWF文件中的显示对象,根属性是该SWF文件表示的显示列表树结构部分中最顶层的显示对象
因此,您的文档类(必须)是DisplayObject,以便在舞台上显示任何内容,而不管您是否希望使用合成
关于Flex组件,如果您的主AS文件从DisplayObject扩展而来,则不需要对mx.core.Application或任何其他Halo组件进行任何引用(Sprite,主要是MovieClip,除非您涉及Flash CS*Professional中包含需要在帧中引用的时间线的对象),否则没有任何用处),您仍然可以创建BOX:Sprite并将其添加到文档类的显示列表中
这个.addChild(BOX)
而且一切都会正常工作。如果不至少将主类扩展到MovieClip或Sprite,就无法做到这一点。即使您以这种方式调用应用程序类(我怀疑这是否可行),您也必须将其添加到显示列表中。如果要避免使用Flex,就不能使用mx名称空间。应用程序类是flex的一部分。
package
{
import flash.display.*;
import mx.core.Application;
import flash.events.*;
import mx.collections.*;
import flash.geom.*;
import mx.controls.*;
import flash.text.*;
import mx.events.*;
import mx.styles.*;
public class MAIN
{
public var APPLICATION:Application = Application(Application.application);
public function MAIN()
{
APPLICATION.layout = 'absolute';
var BOX:Sprite = new Sprite();
BOX.graphics.beginFill(0xFF0000,1);
BOX.graphics.drawRect(0,0,400,400);
BOX.graphics.endFill();
APPLICATION.addChild(BOX);
}
}
}