Frage

Ist es möglich, mehrere Ansicht des gleichen Anzeigeobjekts zu haben? (Z same-Computer Multi-Player-Spiel Split-Screen verwenden)

Der Beispielcode, der zur Arbeit fehlgeschlagen folgt:

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

Ich dachte, das zwei Ansichtsfenster machen würde (v1 und v2) des gleichen Objekts (content). Aber wenn ich die Dokumentation geprüft, DisplayObjectContaner / addChild Methode, es sagt,

„Wenn Sie ein Kind Objekt hinzufügen, das bereits einen anderen Anzeigeobjektcontainer als Elternteil hat, das Objekt aus der Child-Liste des anderen Anzeigeobjektcontainers entfernt wird.“

Gibt es eine Lösung für dieses?


Erhalten Ergebnis

Erhalten Ergebnis

Erwartetes Ergebnis (simulierte)

Erwartetes Ergebnis (simuliert) http://img337.imageshack.us/img337/ 7914 / 222mq4.png


Rendering in eine Bitmap, wie durch Antti vorgeschlagen ist eine großartige Idee, aber die gerenderten Sprites nicht in der Lage sein, Mausereignisse zu fangen. Gibt es eine Möglichkeit, die Mausklicks auf die Bitmap zu umleiten Klicks auf den ursprünglichen Sprites auslösen?

War es hilfreich?

Lösung

Der einfachste Weg dies zu tun ist, einen Bitmap zu haben, die mit dem ursprünglichen Anzeigeobjekt Inhalt, so etwas wie aktualisiert wird:

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

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

Andere Tipps

Ein Weg Sie gehen könnten, ist ein MVC-Muster zu übernehmen, wo Sie ein Modell, das Spiel Logik usw. steuert, und eine separate Ansicht Klassen, die Anzeige zu steuern. Auf diese Weise ist es besser handhabbar mehrere Ansichten der gleichen Szene zu haben.

Wenn Sie eine Bitmap innerhalb von Sprite gesetzt machen, dann können Sie Mausklicks erfassen.

mike

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top