Etrangeté avec Prototype + Mon Code

Résolu
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010 - 25 déc. 2008 à 01:09
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010 - 25 déc. 2008 à 01:42
La classe:

var DialogsIDContainer = new Array();

var DialogManager = Class.create();
DialogManager.prototype = {
   
    menuID : null,
    DIDC   : null,

    // quelques fonctions inutiles dans mon probleme !
    visible: function() {
        $(this.menuID).style.visibility='visible';
        this.show();
    },
    hide: function() {
        $(this.menuID).fade({
            duration: 0.3,
            from: 1,
            to: 0
        });
    },
    show: function() {
        $(this.menuID).fade({
            duration: 0.3,
            from: 0,
            to: 1
        });
    },
    count: function() {
        return DialogsIDContainer.length;
    },
    fillContainer: function(c) {
        $append($(DialogsIDContainer[this.DIDC].containerID),c);
    },
    find: function(name) {
        found = null;
        i = 0;
        while(!found && i < 100) {
            if(DialogsIDContainer[i].name == name) {
                found = true;
                break;
            }
            ++i;
        }
        return (!found) ? false : i;
    },
    getHandle: function(name) {
        return DialogsIDContainer[this.find(name)].handle;
    },
    center: function() {
        pos = Element.cumulativeOffset($(this.menuID));
        sizes = getSizes(this.menuID);
        center = getCenter();
        alert("going from (left:"+pos.left+",top"+pos.top+") to (left:"+(center.left-(pos.left+sizes.width/2))+",top"+(center.top-(pos.top+sizes.height/2))+")");
        new Effect.Move(this.menuID, {
            x: (center.left-(pos.left+sizes.width/2)), //
            y: (center.top-(pos.top+sizes.height/2)), //-
            transition: Effect.Transitions.spring
        });
    },
    resetPos: function() {
        pos = Element.cumulativeOffset($(this.menuID));
        new Effect.Move(this.menuID, {
            x: pagerect.left-pos.left, //
            y: pagerect.top-pos.top, //-
            transition: Effect.Transitions.spring
        });
    }
}
function getCenter() {
    var ret = new Object();
    ret = {
        'left' : Math.floor((pagerect.left+pagerect.width)/2),
        'top'  : Math.floor((pagerect.top+pagerect.height)/2)
        };
    return ret;
}
function getSizes(id) {
    var ret = new Object();
    ret = {
        'width' : $(id).getWidth(),
        'height': $(id).getHeight()
        };
    return ret;
}

Donc ca creer des petits dialogs, comparable a une window ... avec graphics, bref !
Quand ma page est chargée, ceci est executé:

dlgLogin = new DialogManager("login","menu-login","login","menu-login-container");
//
dlgLogin.visible();
dlgLogin.center();
dlgChanSelect = new DialogManager("chselect","menu-chselect","chselect","menu-chanselect-container");
dlgChanSelect.resetPos();

Donc jai mon dialog de login qui vient vers le "centre" (Centre acceptable).
Et le dialog ChanSelect qui va aux positions initiales (en gros: left:0; top:0;)
Apres quelques lignes de JS, j'ai

dlgLogin.hide();
dlgChanSelect.visible();
dlgChanSelect.center();

Et a ce moment la, au lieu d'aller vers le centre comme prevu, Prototype me l'envoie en dehors de l'ecran (top negatif)

Quelqu'un a une idee ?

nico.

2 réponses

DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
25 déc. 2008 à 01:42
Problème résolu

j'ai changé le style de mes div
position:relative
à
position:absolute

:)
3
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
25 déc. 2008 à 01:23
Ajout:
Pour voir le probleme: http://nicolasderoche.co.cc/projects/game-beta/
ID: test
password: test
0
Rejoignez-nous