Wil*_*iam 2 apache-flex flash actionscript-3
我目前正在开发一个Flash游戏,我需要知道如何添加一个BitmapData或者将BitmapData绘制到屏幕上.如果我不能,我怎么能给DisplayObject我的BitmapData?
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);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个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>
Run Code Online (Sandbox Code Playgroud)
基本上您需要知道的是,您的BitmapData首先需要包装在Bitmap对象中,并且生成的Bitmap对象是DisplayObject,因此在将其添加到显示列表之前,它需要包装在UIComponent实例中.
这是一种方式,但同样,它在很大程度上取决于你要具体做什么,所以如果这不适用于你的情况,请随时回复,我会相应调整.希望能帮助到你!