Вопрос

Возможно ли иметь несколько видов одного и того же отображаемого объекта?(например,многопользовательская игра на одном компьютере с использованием разделенного экрана)

Ниже приведен пример кода, который не сработал:

    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 и v2) одного и того же объекта (content).Но когда я проверил документы, метод DisplayObjectContaner / addChild, он говорит,

"Если вы добавляете дочерний объект, у которого уже есть другой контейнер объектов отображения в качестве родительского, объект удаляется из дочернего списка другого контейнера объектов отображения".

Есть ли решение для этого?


Полученный результат

Obtained result

Ожидаемый результат (смоделированный)

Ожидаемый результат (смоделированный) http://img337.imageshack.us/img337/7914/222mq4.png


Рендеринг в растровое изображение, предложенный Antti, - отличная идея, но визуализированные спрайты не смогут перехватывать события мыши.Есть ли способ перенаправить щелчки мыши по растровому изображению, чтобы запускать щелчки по исходным спрайтам?

Это было полезно?

Решение

Самый простой способ сделать это - иметь растровое изображение, обновленное с содержимым исходного экранного объекта, что-то вроде:

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

Другие советы

Одним из способов, которым вы могли бы воспользоваться, является принятие шаблона MVC, в котором у вас есть модель, управляющая игровой логикой и т. д., и отдельные классы представлений, управляющие отображением. Таким образом, более легко управлять несколькими видами одной сцены.

Если вы разместите рендеринг растрового изображения внутри sprite, то сможете фиксировать щелчки мыши.

майк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top