如何在动作脚本3中显示超出舞台界限的电影片段



我目前正在flash中开发一款启动器游戏:

  1. 英雄将一根棍子抛向空中,然后棍子长途飞行,击中各种物体
  2. 当棍子飞行时,主人公的狗追着它跑,击中了各种各样的物体等等

我的问题是:我想水平分割屏幕,你沿着屏幕上部的棍子,然后沿着屏幕下部的狗。

现在我已经实施了棍子运动。从技术上讲,棍子只移动到舞台中心,一旦它的坐标位于舞台中心,它的所有其他物体都会根据棍子的x和y速度移动。

现在我的问题是:我如何管理狗的展示?我希望我能找到一些类来创建一种视口,允许我显示远离舞台边界的对象,但到目前为止,我还没有找到我需要的东西。

我能想到的唯一解决方案是,每当一个movieclip被添加到我的舞台上时,为每个movieclimp创建两个实例,并在转换后的x和y坐标下将副本添加为另一个moiceClip的子对象),但之后我必须将所有操作都做两次(例如:如果棍子破坏了某个东西,它的副本也必须被破坏)。

你知道我如何在不折磨我的玩家处理器(并危及我自己的理智)的情况下做到这一点吗?

问题的一个可能解决方案是blitting,它从DisplayObject中绘制像素,类似于您在这里看到的。

另一个(从长远来看,这可能对您很有帮助,并且不需要与第一个互斥)是使整个事情以数据驱动。您只需构建两个不同的视图,它们要么获得相同的数据,要么获得不同的数据子集,然后根据它们自己的规则来表示数据。

当对象从数据中消失时,其表示形式将同时从两个视图中消失。从技术上讲,你可能仍然要做两次工作,但如果你在编写类的方式上很聪明,这并不一定意味着额外的代码。

最后,您可能需要考虑使用scrollRect。

最终我找到了这个问题的答案,所以我想分享我所做的。

解决方案是使用transform.matrix属性实现虚拟相机

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html

这里有一个关于如何实现这一点的教程。

http://www.youtube.com/watch?v=yuhJkEWAbq8

最新更新