1

是否可以对同一个显示对象进行多个视图?(例如使用分屏的同机多人游戏)

失败的示例代码如下:

    var content: Sprite = new Sprite();
    var v1: Sprite = new Sprite();
    var v2: Sprite = new Sprite();

    with(content.graphics) {
        lineStyle(2, 0xff0000);
        drawCircle(100, 100, 80);

        lineStyle(5, 0x009999);
        drawRect(50, 80, 200, 30);
    }

    v1.addChild(content);
    v1.x = 0;
    v1.y = 0;
    v1.scrollRect = new Rectangle(0, 0, 100, 100);
    addChild(v1);

    v2.addChild(content);
    v2.x = 100;
    v2.y = 0;
    v2.scrollRect = new Rectangle(0, 0, 100, 100);
    addChild(v2);

我认为这会使同一个对象 ( ) 的两个视口 (v1和)。但是当我检查文档时,DisplayObjectContaner/addChild 方法,它说,v2content

“如果您添加一个已经具有不同显示对象容器的子对象作为父对象,则该对象将从另一个显示对象容器的子列表中删除。”

有解决方案吗?


得到的结果

得到的结果

预期结果(模拟)

预期结果(模拟)http://img337.imageshack.us/img337/7914/222mq4.png


按照 Antti 的建议渲染到位图是一个好主意,但是渲染的精灵将无法捕捉鼠标事件。有没有办法重定向位图上的鼠标点击以触发对原始精灵的点击?

4

3 回答 3

2

最简单的方法是使用原始显示对象的内容更新位图,例如:

var bitmap:Bitmap = new Bitmap(new BitmapData(1,1));
addChild(位图);

addEventListener(Event.ENTER_FRAME,enterFrameHandler);

函数 enterFrameHandler(事件:事件):无效 {
    bitmap.bitmapData.dispose();
    bitmap.bitmapData = new BitmapData(displayObject.width, displayObject.height, true, 0x00000000);
    bitmap.bitmapData.draw(displayObject);
}
于 2008-10-10T13:58:29.070 回答
1

您可以采用的一种方法是采用 MVC 模式,其中您有一个控制游戏逻辑等的模型,以及控制显示的单独视图类。这样,同一场景的多个视图更易于管理。

于 2008-10-13T09:52:37.240 回答
0

如果将渲染放在精灵内部的位图上,则可以捕获鼠标点击。

麦克风

于 2008-10-13T02:46:27.163 回答