Несколько видовых экранов одного и того же DisplayObject
-
08-07-2019 - |
Вопрос
Возможно ли иметь несколько видов одного и того же отображаемого объекта?(например,многопользовательская игра на одном компьютере с использованием разделенного экрана)
Ниже приведен пример кода, который не сработал:
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, он говорит,
"Если вы добавляете дочерний объект, у которого уже есть другой контейнер объектов отображения в качестве родительского, объект удаляется из дочернего списка другого контейнера объектов отображения".
Есть ли решение для этого?
Полученный результат
Ожидаемый результат (смоделированный)
Ожидаемый результат (смоделированный) 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, то сможете фиксировать щелчки мыши.
майк