我使用的是PhysInjector,因此无法移动包含我的对象的剪辑:物理引擎因此而无法正常工作。
我考虑实现像位图一样绘制舞台的选定部分。怎么做到呢?我已经阅读了这个Trying to capture stage area using BitmapData,但作者在那里从舞台上复制了数据,而我需要在它之外的区域。
此外,是否有更少资源消耗的解决方案?
答案 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属性也没有帮助