1

我目前正在开发 Flash 中的启动器游戏:

  1. 英雄将一根棍子扔到空中,然后长距离移动,击中各种物体。
  2. 当棍子飞行时,英雄的狗追着它跑,撞到各种物体等等......

我的问题:我想水平分割屏幕,你跟随屏幕上部的棍子,你跟随屏幕下部的狗。

现在我已经实现了摇杆运动。从技术上讲,摇杆只移动到舞台的中心,一旦它的坐标在舞台中心,它的所有其他对象都根据摇杆的 x 和 y 速度移动。

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

我能想到的唯一解决方案是每当将一个动画剪辑添加到我的舞台时创建每个动画剪辑的 2 个实例,并将副本添加为另一个动画剪辑的子代,在转换后的 x 和 y 坐标处)但是我必须做两次(例如:如果棍子破坏了某些东西,那么它的副本也必须被破坏)。

关于如何在不折磨玩家处理器(并危及我自己的理智)的情况下做到这一点的任何想法?

4

2 回答 2

0

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

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

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

这是有关如何实现此目的的教程。

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

于 2013-02-26T18:50:22.940 回答
0

解决您的问题的一种可能方法是blitting,它从 DisplayObject 中绘制像素,类似于您在此处看到的内容。

另一个(从长远来看可能会很好地为您服务,并且不需要从一开始就相互排斥),是让整个事情成为数据驱动的。您只需构建两个不同的视图,它们要么获取相同的数据,要么获取数据的不同子集,然后根据它们自己的规则表示数据。

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

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

于 2012-10-15T22:06:29.783 回答