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);

これにより、同じオブジェクト ( ) の 2 つのビューポート (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);

function enterFrameHandler(event:Event):void {
    bitmap.bitmapData.dispose();
    bitmap.bitmapData = new BitmapData(displayObject.width, displayObject.height, true, 0x00000000);
    bitmap.bitmapData.draw(displayObject);
}
于 2008-10-10T13:58:29.070 に答える
1

1 つの方法は、MVC パターンを採用することです。この場合、ゲーム ロジックなどを制御するモデルがあり、表示を制御する別のビュー クラスがあります。このようにして、同じシーンの複数のビューを持つことがより管理しやすくなります。

于 2008-10-13T09:52:37.240 に答える
0

スプライト内のビットマップにレンダリングを配置すると、マウスクリックをキャプチャできます。

マイク

于 2008-10-13T02:46:27.163 に答える