我目前正在开发一个flash游戏,我需要知道如何addChild一个BitmapData或绘制一个BitmapData到屏幕上。如果我不能,我怎么能给DisplayObject我的BitmapData呢?
发布于 2009-07-15 16:25:03
不能将BitmapData对象直接添加到屏幕,因为它们不是DisplayObject的后代。如果您想要显示BitmapData对象的内容,则需要使用Bitmap,它的bitmapData属性。如果你使用的是Flex,你需要确保将位图放入UIComponent的一个实例或者它的一个子类中。否则,如果你只是在闪存中使用AS3,这将会实现:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Point;
public class BitmapDataExample extends Sprite
{
public function BitmapDataExample()
{
super();
var canvasSize:uint = 100;
var size:uint = 5;
var bd:BitmapData = new BitmapData (canvasSize, canvasSize, false, 0x000000);
var bmp:Bitmap = new Bitmap (bd);
addChild(bmp);
// everything from this point on is just drawing junk into the BitmapData object
var p:Point = new Point (0, 0);
for (var y = 0; y < canvasSize; y++)
{
p.y = y;
for (var x = 0; x < canvasSize; x++)
{
p.x = x;
if (p.x % size == p.y % size)
bd.setPixel(p.x, p.y, 0x00FF00);
}
}
}
}
}发布于 2009-07-15 16:23:45
假设我已经正确理解了这个问题,这里有一个组合在一起的AIR应用程序的例子来说明一种方法:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private function onCreationComplete():void
{
// Some sample bitmap data
var bmpd:BitmapData = new BitmapData(50, 50, false, 0xFF0000);
// Create a new bitmap, created from the data
var bmp:Bitmap = new Bitmap(bmpd);
// Wrap the bitmap in UIComponent
var uic:UIComponent = new UIComponent();
uic.addChild(bmp);
// Add your UIComponent to the display list
addChild(uic);
}
]]>
</mx:Script>
</mx:WindowedApplication>实际上,您需要知道的是,您的BitmapData首先需要包装在Bitmap对象中,并且生成的Bitmap对象是一个DisplayObject,因此,在将其添加到显示列表之前,需要将其包装在UIComponent实例中。
这只是一种方法,但同样,这在很大程度上取决于你试图具体做什么,所以如果这不太适用于你的情况,请随时回帖,我会相应地进行调整。希望它能帮上忙!
https://stackoverflow.com/questions/1132385
复制相似问题