Flex 4.5.1在新应用程序上添加一个简单的Bitmap或Sprite?

时间:2011-06-27 13:28:03

标签: flex

也许这是一个很糟糕的习惯,自从Flash Professional以来我仍然有这个习惯,但我正在尝试添加一个简单的Sprite或/和Bitmap我刚刚创建的空应用程序而且它没有发生。

<?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="955" minHeight="600" 
               creationComplete="application1_creationCompleteHandler(event)">

    <fx:Script>
        <![CDATA[
            import mx.core.FlexGlobals;
            import mx.core.UIComponent;
            import mx.events.FlexEvent; 


            protected function application1_creationCompleteHandler( event : FlexEvent ) : void
            {
                var s:Sprite = new Sprite();
                s.graphics.beginFill( 0xFF0000, 0.5 );
                s.graphics.drawRect( 0, 0, 100, 100 );
                s.graphics.endFill();

                this.addChild( s );
            }

        ]]>
    </fx:Script>
</s:Application>

有人能告诉我我做错了什么并帮我纠正吗?

2 个答案:

答案 0 :(得分:4)

尝试将您的精灵放在UIComponent或SpriteVisualElement中。 这对我有用:

<?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="955" minHeight="600"
               creationComplete="test()">

    <fx:Script>
        <![CDATA[
            import spark.core.SpriteVisualElement;

            private function test():void
            {
                var sprCont:SpriteVisualElement = new SpriteVisualElement();
                sprCont.horizontalCenter = 0;
                sprCont.verticalCenter = 0;

                var spr:Sprite = new Sprite();
                spr.graphics.beginFill(0xFF0000);
                spr.graphics.drawCircle(0,0, 100);
                spr.graphics.endFill();

                sprCont.addChild(spr);
                addElement(sprCont);
            }
        ]]>
    </fx:Script>
</s:Application>

由于某些原因,'s:Application'标签未显示,但它们在那里。 HTH, FTQuest

答案 1 :(得分:1)

有几件事需要考虑。您没有为精灵指定高度或宽度。它不会默认为0的高度和宽度;有效地使它变得不可见?

第二点需要注意的是,我强烈建议您使用Flex Component Lifecycle方法创建子项。而不是使用creationComplete处理程序,重写createChildren()以创建精灵并添加它。将updateDisplayList()用于组件的绘制,大小调整和定位是很常见的。

要注意的第二件事是Application实际上是一个精灵。根据您的尝试,您可以直接在应用程序上进行绘图:

this.graphics.beginFill( 0xFF0000, 0.5 );
this.graphics.drawRect( 0, 0, 100, 100 );
this.graphics.endFill();

我认为使用精灵比直接在应用程序上绘制更灵活;但这取决于你想要完成的事情。