Pergunta

É possível ter visão múltipla do mesmo objeto de exibição? (Por exemplo, do mesmo computador jogo multi-player com tela dividida)

O código de exemplo que falhou ao trabalho seguinte:

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

Eu pensei que este faria dois visores (v1 e v2) do mesmo objeto (content). Mas quando eu chequei os docs, método DisplayObjectContaner / addChild, diz,

"Se você adicionar um objeto filho que já tenha um contêiner de objetos de exibição diferente como pai, o objeto é removido da lista de filhos do outro recipiente do objeto de exibição."

Existe uma solução para isso?


resultado obtido

resultado obtido

Resultado Esperado (simulado)

Resultado Esperado (simulado) http://img337.imageshack.us/img337/ 7914 / 222mq4.png


Renderização para um bitmap como sugerido por Antti é uma ótima idéia, mas os sprites prestados não será capaz de capturar eventos do mouse. Existe uma maneira de redirecionar os cliques do mouse sobre o bitmap para cliques de gatilho sobre os sprites originais?

Foi útil?

Solução

A maneira mais fácil de fazer isso é ter um bitmap que é atualizado com o conteúdo do objeto de exibição original, algo como:

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

Outras dicas

Uma maneira que você poderia ir é adotar um padrão MVC, onde você tem um modelo que controla a lógica do jogo etc, e vista classes separadas que display de controlo. Desta forma, é mais gerenciável para ter várias vistas da mesma cena.

Se você colocar render a um dentro de bitmap do sprite, então você pode capturar cliques do mouse.

Mike

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top