将基于Sprite的SWF文件转换为mxml

时间:2012-01-10 22:20:44

标签: flash actionscript-3 flex actionscript mxml

我在Flash Builder 4.5中使用AS3作为“Actionscript项目”编写了一个大型的Actionscript项目。我有一堆可靠,可重用的代码,但其中一个重要的组件是一个main.as文件,它扩展了Sprite并作为我的应用程序的显示代码。

由于各种原因,我现在需要成为Flex应用程序。我正在努力获得最小的包装,所以这就是我所拥有的(感谢互联网):

<?xml version="1.0" encoding="utf-8"?>
<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" minWidth="590" minHeight="700"
           initialize="initPlayer()">`

<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.core.UIComponent;
        public function initPlayer():void {
            Alert.show("Testing!");
            var comp:UIComponent = new UIComponent();
            comp.addChild(new MainView());
            addChild(comp);
        }
    ]]>
</fx:Script>
</s:Application>
然而,当我启动它时,它会出现一个空白窗口。没有错误,警报不会触发,什么都没有。知道发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

尝试使用applicationComplete代替initialize。初始化是在应用程序生命周期的早期触发的,而诸如执行addChild之类的内容更适合以后的循环(applicationComplete对应于子组件中的creationComplete

答案 1 :(得分:0)

我使用简单的精灵类“TestSprite”而不是“MainView”。有用。警告和TestSprite都可以正常工作。所以,我认为你的“MainView”必须有一些东西阻止flex展示它。

public class TestSprite extends Sprite
{
    public function TestSprite()
    {
        super();
        graphics.beginFill(0x000000);
        graphics.drawRect(0, 0, 100, 100);
        graphics.endFill();
    }
}