我使用的一些导入:
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电影剪辑会起作用......
答案 0 :(得分:3)
你不能将Flash的BitmapData.draw()
与Starling这样的显示对象一起使用 - 它们是完全不同的东西,并使用非常不同的技术进行渲染。
但是,您可以使用starling.display.Stage.drawToBitmapData()
方法,该方法将Starling Stage的内容绘制到Flash BitmapData对象。
您还可以使用starling.display.Sprite.flatten()
来获得类似的结果并允许将结果图形放置在Starling显示树中(Flash显示树位于Starling顶部,这意味着您无法将它们分层彼此)。