我正在尝试创建一个自定义类,它将在请求时创建一个瓦片(一个小圆角正方形),上面有一个小图像。我可以成功地创建瓦片,如下面的代码所示,但我不知道如何将图片数据传递给该类。
是否可以使用bitmapData或通过库引用它(如果我将图片存储在库中的电影剪辑中?
到目前为止,这是我的类:
package com{
import flash.display.MovieClip;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;
public class tileCreator extends MovieClip{
public var tiled:MovieClip;
public var sourceImage:MovieClip = new MovieClip;
public function tileCreator() {
trace("tile creator");
tiled = new MovieClip;
tiled.graphics.beginFill(0x666666, 0.3);
tiled.graphics.drawRoundRect(-55/2, -55/2, 55, 55, 15, 15);
this.addChild(tiled);
}
}}
发布于 2011-07-29 15:59:06
是的,使用BitmapData是可能的。
将图像导入到库中,然后右键单击以更改“设置...”。你必须勾选"export for actionscript“,然后在复选框下面的第二个文本字段中输入一个名字--比如说'MyImage‘。(flash会自动添加flash.display.BitmapData类型的基类)。
然后,您可以创建镜像的实例,如下所示:
var myImage:MyImage = new MyImage();它是一个BitmapData对象,因为您的MyImage类扩展了BitmapData。
然后,您只需将BitmapData作为参数添加到构造函数中(将您的类重命名为Tile,因为它不是创建者,而是您创建的tile本身。并使用大写字母!)。
public class Tile extends MovieClip
{
public function Tile (img:BitmapData)
{
var bmp:Bitmap = new Bitmap(img);
addChild(bmp);
tiled = new MovieClip;
tiled.graphics.beginFill(0x666666, 0.3);
tiled.graphics.drawRoundRect(-55/2, -55/2, 55, 55, 15, 15);
addChild(tiled);
bmp.mask = tiled;
}
} 发布于 2011-07-29 15:58:30
你需要按照下面的方式来做:
function createBitmap ( yourMovieClipYouWantToBeAsImage : DisplayObject ) : Bitmap
{
var bitmapData:BitmapData = new BitmapData ( width, height );
bitmapData.draw ( yourMovieClipYouWantToBeAsImage );
var bitmap:Bitmap = new Bitmap ( bitmapData );
return bitmap; // do what ever you want with it but now as an image
}发布于 2011-07-29 15:58:52
你可以使用bitmapData创建一个“快照”。然后,您可以将它传递给您想要的任何其他类。代码如下所示。
//This code goes into your TileCreator-class
public function draw():BitmapData
{
//True and 0 at the end of creating this bitmap ensure transparancy
//for the transparant pixels (else these would be opaque)
var bmp:BitmapData = new BitmapData(width, height, true, 0);
bmp.draw(this);
return bmp;
}https://stackoverflow.com/questions/6870053
复制相似问题