Domanda

È possibile avere una vista multipla dello stesso oggetto di visualizzazione? (ad es. gioco multigiocatore per lo stesso computer con schermo diviso)

Segue il codice di esempio che non ha funzionato:

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

Ho pensato che questo avrebbe reso due viewport ( v1 e v2 ) dello stesso oggetto ( content ). Ma quando ho controllato i documenti, il metodo DisplayObjectContaner / addChild, dice,

" Se aggiungi un oggetto figlio che ha già un contenitore di oggetti di visualizzazione diverso come genitore, l'oggetto viene rimosso dall'elenco figlio dell'altro contenitore di oggetti di visualizzazione. "

C'è una soluzione per questo?


Risultato ottenuto

Risultato ottenuto

Risultato atteso (simulato)

Risultato atteso (simulato) http://img337.imageshack.us/img337/ 7914 / 222mq4.png


Il rendering su una bitmap come suggerito da Antti è un'ottima idea, ma gli sprite renderizzati non saranno in grado di catturare eventi del mouse. C'è un modo per reindirizzare i clic del mouse sulla bitmap per attivare i clic sugli sprite originali?

È stato utile?

Soluzione

Il modo più semplice per farlo è avere una bitmap che viene aggiornata con i contenuti dell'oggetto di visualizzazione originale, qualcosa del tipo:

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

Altri suggerimenti

Un modo in cui potresti andare è quello di adottare un modello MVC, in cui hai un modello che controlla la logica di gioco, ecc., e classi di vista separate che controllano il display. In questo modo è più gestibile avere più viste della stessa scena.

Se si mette il rendering su una bitmap all'interno di sprite, è possibile acquisire i clic del mouse.

mike

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top