从完全空的MXML应用程序开始:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" >
</mx:Application>
将是什么脚本:
BitmapData
对象吗?)BitmapData.SetPixel
更有效的方法?)myBitmap=new Bitmap(myBitmapData)
然后myBitmap.AddChild
,但这会引发错误挠曲)。...
注意:目标不仅仅是在屏幕上显示一个圆圈,而是使用SetPixel(或???)填充Bitmap(或BitmapData?或???)对象,然后将其内容放到屏幕上,正如人们在图像处理或视觉效果应用中需要做的那样。
答案 0 :(得分:3)
你有几个选择。第一个是检查具有一些非常令人难以置信的绘图工具的Degrafa framework,否则你需要添加一个脚本块并在函数中使用AS3绘图api(在这种情况下可能在creationComplete上调用:
private function handleCreationComplete():void
{
var component:UIComponent = new UIComponent(); //needed to add to the flex display list
var myCircle:Sprite = new Sprite();
myCircle.graphics.beginFill(0xFFFFFF,1)
myCircle.graphics.drawCircle(100,100,50);
component.addChild(myCircle);
this.addChild(component);
}
这不会使圆圈居中,但你可以想出这一点。
您可以使用此函数实际从上面的UIComponent中获取位图:
private function getBitmapData( target : UIComponent ) : BitmapData
{
var bd : BitmapData = new BitmapData( target.width, target.height );
var m : Matrix = new Matrix();
bd.draw( target, m );
return bd;
}
来自here。
答案 1 :(得分:2)
这是一个完整的,有效的例子我能够根据Joel Hooks的建议创建:
MXML FILE(ards.mxml):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="onCreationComplete()">
<mx:Script source="ards_script.as" />
</mx:Application>
SCRIPT文件(ards_script.as):
import mx.core.UIComponent;
private function onCreationComplete():void
{
// create a UIComponent and add it to the Flex display list
var component:UIComponent = new UIComponent();
component.width = this.width;
component.height = this.height;
component.x = 0;
component.y = 0;
this.addChild(component);
// create a BitmapData object (basically an array of pixels) the same size as the screen
var bd : BitmapData = new BitmapData( component.width, component.height );
// draw a green circle in the bitmap data
var xCenter:int = component.width/2;
var yCenter:int = component.height/2;
var r:int = Math.min(xCenter,yCenter);
var rSquare:int = r*r;
var color:Number = 0x00ff00;
for( var i:int=0; i<component.width; i++ )
{
for( var j:int=0; j<component.width; j++ )
{
var dX:int = i - xCenter;
var dY:int = j - yCenter;
var q:int = dX*dX + dY*dY;
if( q < rSquare )
{
bd.setPixel( i, j, color );
}
}
}
// create a bitmap based on the data, and add it as a child to the UIComponent to be displayed
// (if you try to add it directly to the Application, you get a runtime error)
var bt:Bitmap = new Bitmap(bd);
component.addChild(bt);
}