如何在不移动任何AS3的情况下实现相机?

时间:2014-03-31 19:56:11

标签: actionscript-3 bitmap

我使用的是PhysInjector,因此无法移动包含我的对象的剪辑:物理引擎因此而无法正常工作。

我考虑实现像位图一样绘制舞台的选定部分。怎么做到呢?我已经阅读了这个Trying to capture stage area using BitmapData,但作者在那里从舞台上复制了数据,而我需要在它之外的区域。

此外,是否有更少资源消耗的解决方案?

2 个答案:

答案 0 :(得分:1)

首先,您可能希望使用全局Sprite来放置剪辑,例如:

var a:Sprite = new Sprite();
a.addChild(myClip1);
a.addChild(myClip2);
...

然后,您应该可以移动a

如果你不这样做,并且你的物理引擎依赖舞台工作,你应该尝试修复它,或者更好地理解它是如何工作的,这样你就可以移动你的动画片段。

每帧重绘一次BitmapData将需要大量的CPU资源,并且您将无法与剪辑进行交互。这真的不是最好的方式。

答案 1 :(得分:0)

x=-(player.mc.x-stage.stageWidth/2);
y=-(player.mc.y-stage.stageHeight/2);
if(canvas)
    removeChild(canvas);

var bd:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight,false,0xFFFFFF);

bd.draw(stage);
trace(bd);

canvas=new Bitmap(bd);
addChild(canvas);

x=0;
y=0;

在PC上工作正常。不知道它是否适合手机。

我还没有测试过blue112建议的方法,因为在physinjector开发者的推特中,有关于任何移动父剪辑(https://twitter.com/reyco1/status/327107695670853632)的抱怨,并且很难与我现有的架构结合起来。

更改globalOffsetX和globalOffsetY属性也没有帮助