Question

Est-il possible d'avoir plusieurs vues du même objet d'affichage? (par exemple, jeu multi-joueurs sur un même ordinateur avec un écran partagé)

L'exemple de code qui n'a pas fonctionné est le suivant:

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

Je pensais que cela créerait deux fenêtres d'affichage ( v1 et v2 ) du même objet ( contenu ). Mais quand j'ai vérifié la documentation, méthode DisplayObjectContaner / addChild, il est dit,

"Si vous ajoutez un objet enfant qui possède déjà un conteneur d'objet d'affichage différent en tant que parent, cet objet est supprimé de la liste des enfants de l'autre conteneur d'objet d'affichage."

Existe-t-il une solution pour cela?

Résultat obtenu

Résultat obtenu

Résultat attendu (simulé)

Résultat attendu (simulé) http://img337.imageshack.us/img337/ 7914 / 222mq4.png

Le rendu en bitmap suggéré par Antti est une excellente idée, mais les images-objets rendues ne pourront pas intercepter les événements de la souris. Existe-t-il un moyen de rediriger les clics de la souris sur l'image bitmap pour déclencher des clics sur les images-objets d'origine?

Était-ce utile?

La solution

Pour ce faire, le plus simple est d’avoir un bitmap mis à jour avec le contenu de l’objet d’affichage original, comme par exemple:

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

Autres conseils

Une solution consiste à adopter un modèle MVC, dans lequel vous disposez d’un modèle contrôlant la logique de jeu, etc., et de classes de vues distinctes contrôlant l’affichage. De cette façon, il est plus facile de gérer plusieurs vues de la même scène.

Si vous mettez le rendu dans une image bitmap à l'intérieur d'un sprite, vous pouvez capturer des clics de souris.

mike

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top