我正在绘制动画片段的位图,然后我将其输入到我的hittest函数中以测试碰撞。但是,我不太确定如何添加到下面的代码中以考虑并绘制已缩放和/或旋转的动画片段的位图。下面的代码显然只适用于非转换的动画片段。我已经在评论代码中包含了我已经尝试但没有成功的代码。
将绘制的位图添加到舞台时,无论相关的动画片段是否被变换,绘制的位图都会被“切断”并且被错误地绘制 - 它似乎只绘制了一部分。但是,这并不会特别影响非转换动画片段的碰撞测试,但会对转换后的动画片段产生负面影响。
我想要绘制的所有动画片段都是通过图形属性创建的。
//for example:
var mymc:MovieClip = new MovieClip();
var g:Graphics = mymc.graphics;
g.moveTo(0,0);
g.lineTo(17.5,0);
g.lineTo(8.75,17.5);
g.lineTo(-8.75,17.5);
g.lineTo(0,0);
主要代码:
for each(var mc:MovieClip in impassable) {
//var bMatrix:Matrix = new Matrix();
//bMatrix.scale(mc.scaleX, mc.scaleY);
//bMatrix.rotate(mc.rotation * (Math.PI/180));
var bData:BitmapData = new BitmapData(mc.width, mc.height, true, 0);
//bData.draw(mc, bMatrix);
bData.draw(mc);
var bitmap:Bitmap = new Bitmap(bData);
bitmap.x = mc.x;
bitmap.y = mc.y;
var HitTest:Number = newCollision(bitmap, centerX, centerY, 13.7);
有什么想法?感谢
答案 0 :(得分:1)
此函数会考虑其变换矩阵创建BitmapData
的{{1}}克隆,但不会考虑位图过滤器。 (基于this回答。)
DisplayObject
答案 1 :(得分:0)
当您在Matrix上调用连续变换时,排序非常重要,可能会让事情变得更糟。
幸运的是,有一种辅助方法可以让您一次性指定翻译,旋转和缩放,并避免出现这些问题 - createBox
对于你的情况,这样的事情:
var matrix:Matrix = new Matrix();
matrix.createBox(mc.scaleX, mc.scaleY, mc.rotation*Math.PI/180, 0, 0);
(两个零用于x和y平移)