我目前正在开发一款Flash游戏,我需要知道如何添加一个BitmapData或者将BitmapData绘制到屏幕上。如果我不能,我怎么能给DisplayObject我的BitmapData?
答案 0 :(得分:7)
BitmapData对象无法直接添加到屏幕,因为它们不是DisplayObject的后代。如果您想显示BitmapData对象的内容,则需要使用Bitmap,它是bitmapData属性。如果您正在使用Flex,则需要确保将Bitmap放入UIComponent或其中一个子类的实例中。否则,如果您只是在Flash中使用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);
}
}
}
}
}
答案 1 :(得分:5)
以下是一个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实例。
这是一种方式,但同样,它在很大程度上取决于你要特别做的事情,所以如果这不适用于你的情况,请随时回复,我会相应调整。希望它有所帮助!