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 的顶部,这意味着您不能分层他们彼此之间)。
我使用的一些进口产品:
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 的顶部,这意味着您不能分层他们彼此之间)。