也许这是一个很糟糕的习惯,自从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>
有人能告诉我我做错了什么并帮我纠正吗?
答案 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();
我认为使用精灵比直接在应用程序上绘制更灵活;但这取决于你想要完成的事情。