BitmapData.draw 八哥电影剪辑

BitmapData.draw starling MovieClip

我使用的一些进口产品:

import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;
import starling.display.Sprite;
import starling.display.MovieClip;

我这里有一个位图数据:

var bm_data:BitmapData = new BitmapData(rec.width, rec.height, false, 0); //rec is a rectangle

我得到了转换矩阵:

var sprite_1_M:Matrix = sprite_1.transformationMatrix; //these are objs that extends starling.display.Sprite
var sprite_2_M:Matrix = sprite_2.transformationMatrix;

问题来了:

bm_data.draw(sprite_1.movie_clip, sprite_1_M, new ColorTransform(1,1,1,1,255,-255,-255), BlendMode.ADD);
bm_data.draw(sprite_2.movie_clip, sprite_2_M, new ColorTransform(1,1,1,1,-255,255,-255), BlendMode.ADD);

错误:

Implicit coercion of a value of type MovieClip to an unrelated type IBitmapDrawable

有什么提示我应该怎么做?认为 Flash 影片剪辑可以工作...

您不能像这样将 Flash 的 BitmapData.draw() 与 Starling 显示对象一起使用 - 它们是完全独立的东西并且使用非常不同的技术进行渲染。

但是您可以使用 starling.display.Stage.drawToBitmapData() 方法,该方法将 Starling Stage 的内容绘制到 Flash BitmapData 对象中。

您也可以使用 starling.display.Sprite.flatten() 获得类似的结果并允许将生成的图形放置在 Starling 显示树中(Flash 显示树位于 Starling 的顶部,这意味着您不能分层他们彼此之间)。