BitmapData.draw starling MovieClip

时间:2015-01-13 03:05:52

标签: actionscript-3 bitmapdata starling-framework

我使用的一些导入:

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

我这里有一个BitmapData:

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

我得到了转型Matrixes:

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);

错误:

  

将MovieClip类型的值隐式强制转换为不相关的类型IBitmapDrawable

任何提示我该怎么办?一个思考Flash电影剪辑会起作用......

1 个答案:

答案 0 :(得分:3)

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

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

您还可以使用starling.display.Sprite.flatten()来获得类似的结果并允许将结果图形放置在Starling显示树中(Flash显示树位于Starling顶部,这意味着您无法将它们分层彼此)。