首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Movieclip -> BitmapData和原点

Movieclip -> BitmapData和原点
EN

Stack Overflow用户
提问于 2012-06-09 01:04:48
回答 2查看 1.7K关注 0票数 0

我正在尝试绘制一个BitmapData的MovieClip,这样它看起来就像我画的addChild(电影剪辑)一样。

我似乎想不出我需要使用什么魔术公式来保持动画在它的原点附近。

下面是相关的代码:

代码语言:javascript
运行
复制
private function update(e:Event):void
{
    var bounds:Rectangle = movieClip.getBounds(movieClip);
    bitmapData = new BitmapData(maxMCwidth, maxMCheight, true, 0x0);
    bitmapData.draw(movieClip, new Matrix(1, 0, 0, 1, maxMCwidth - (bounds.x + bounds.width), maxMCheight - (bounds.y + bounds.height)));
    bitmap.bitmapData = bitmapData;
}

完整代码在这里:http://pastebin.com/KyU5FPeJ

结果如下所示:

http://www.swfcabin.com/open/1339173476

顶部动画是使用addChild(mc)完成的。底部动画是使用bitmapData.draw完成的。请注意,在底部版本中,右侧的剑不会水平移动。几乎就像整个动画都是右对齐的。

这里还有一个指向我的flashdevelop项目的链接,其中包含完整的代码,以防有人想要使用它:https://www.dropbox.com/s/gvt4scknqdian2a/bitmapdatadrawing.zip

我只希望两个版本看起来是一样的。要实现这一点,我需要对bitmapData绘图代码进行哪些更改?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-09 03:34:34

好了,我想通了!

问题的原因是我没有正确计算maxMCwidth或maxMCheight。我正在看电影片段,寻找最宽/最高的单帧。但这并没有考虑到跨帧边界的位置发生变化。为了获得整个动画的实际最大宽度/高度,我使用了以下代码:

代码语言:javascript
运行
复制
maxBounds = new Rectangle();
for (var i:uint = 0; i < movieClip.totalFrames; i++)
{
    var tempBounds:Rectangle = movieClip.getBounds(movieClip);
    maxBounds = maxBounds.union(tempBounds); 
    movieClip.nextFrame();
}

然后,这允许我修复转换矩阵:

代码语言:javascript
运行
复制
bitmapData.draw(movieClip, new Matrix(1, 0, 0, 1, -maxBounds.x, -maxBounds.y));

就像这样,它适用于我测试过的每个动画。

票数 1
EN

Stack Overflow用户

发布于 2012-06-09 02:57:30

好吧,我不能让你的项目运行,因为你没有提供一个主mxml。

不过,我想我找到你的问题了。

我不认为getBounds会返回您认为的值。

我不能查看框架swc,但我有一种感觉,在它的屏幕顶部或底部有一个对象,而你编写它的方式会导致它缩小以适应它。

getBounds可能正在将其添加到高度中。

代码语言:javascript
运行
复制
bitmapData = new BitmapData(movieClip.width, movieClip.height, true, 0x0);
bitmapData.draw(movieClip, new Matrix(1, 0, 0, 1, movieClip.width/2, movieClip.height/2 )); 
bitmap = new Bitmap(bitmapData);
bitmap.x = 70;
bitmap.y = 200;

记住这里未测试的代码。:(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10953105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档