Flex 4.5.1在新应用程序中添加一个简单的位图或Sprite?

问题描述:

也许这是自Flash Professional以来我仍然存在的一个坏习惯,但我正在尝试将一个简单的Sprite或/和位图创建到一个空应用程序中,但这并没有发生。Flex 4.5.1在新应用程序中添加一个简单的位图或Sprite?

<?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> 

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

尝试将你的精灵放在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> 

对于的:应用程序的一些原因标签不显示,但它们的存在。 HTH, FTQuest

+0

pfeewww ...我忘记了“Flex 4.5的新组件......这样做完成了工作,谢谢。顺便说一句 - 应用程序标签不显示,因为您需要将整个源代码标记为代码从文本编辑器上方的按钮发布答案,我编辑它为你:) –

有几件事情要考虑。你不为你的精灵指定一个高度或宽度。它不会默认为0的高度和宽度;有效地使其不可见?

第二件要注意的是,我强烈建议您使用Flex Component Lifecycle方法创建子项。而不是使用creationComplete处理程序,请覆盖createChildren()以创建精灵并添加它。通常使用updateDisplayList()来绘制,确定组件的大小和位置。

要注意的第二件事是应用程序实际上是一个精灵。根据您正在试图做的,你可以做直接在应用程序绘制的内容:

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

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

+0

我试图找到一种方法与thoose的东西,以便为MenuBar项目创建某种“背景”元素。总体思路是在每个MenuBar项目中都有一个Bitmap或Sprite,用作背景。 –

+0

我这是你的意图,会使用背景皮肤风格的作品吗? http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/MenuBar.html#styleSummary – JeffryHouser

+0

每个菜单项都不同?我认为它是全球性的所有项目... –