Avatar billede kalleballe Nybegynder
19. november 2003 - 10:58 Der er 1 løsning

virker fint som funktion men ikke som klasse

Jeg har følgende kode:
pressItem = function () {
    trace("this = "+this);
    holderNr = this.id-1;
    speed = 3;
    _root.objPath = topHolder[holderNr];
    trace("_root.objPath = "+_root.objPath);
    subHeight = _root.ActivitySetTexts[holderNr].length;
    clipHeight[holderNr] = parseInt(l._height)*(subHeight);
    _root.objPath = _level0.projectClip.baseClip1;
    if (!yFlag[holderNr]) {
        startY[holderNr] = _root.objPath._y;
        if (clipHeight[holderNr]) {
            endY[holderNr] = _root.objPath._y+clipHeight[holderNr];
        } else {
            endY[holderNr] = _root.objPath._y+_root.objPath._height;
        }
        yFlag[holderNr] = 1;
    }
    with (_root.objPath) {
        if (_y == endY[holderNr] && !n[holderNr]) {
            yFlag[holderNr] = 1;
            n[holderNr] = 1;
            this.onEnterFrame = undefined;
            return;
        }
        if (_y<endY[holderNr] && !n[holderNr]) {
            _y += speed;
           
        } else if (_y>startY[holderNr]) {
            n[holderNr] = 1;
            _y -= speed;
           
        }
        if (_y == startY[holderNr]) {
            yFlag[holderNr] = undefined;
            n[holderNr] = undefined;
            this.onEnterFrame = undefined;
            return;
        }
    }
    this.updateAfterEvent();
};

Dette script bevæger et lag der ligger oven på et andet lag, - på samme måde som en akkordion menu, - det er bare muligt at have flere menu items åbne på samme tid.

Nu har jeg skrevet det om så det er lettere at finde rundt i:

function Mover(myClip, speed, topHolder, id) {
    // constructor of the Mover class
    this.myClip = myClip;
    this.speed = speed;
    this.topHolder = topHolder;
    this.id = id;
}
//
Mover.prototype.getPressedItemID = function(clipId) {
    //
    this.holderNr = clipId-1;
    this.objPath = this.topHolder[this.holderNr];
};
//
Mover.prototype.getHeightOfClipsToMove = function() {
    //
    subHeight = _root.ActivitySetTexts[this.holderNr].length;
    clipHeight[this.holderNr] = l._height*subHeight;
};
//
Mover.prototype.getPositionsOfMovingLayer = function() {
    //
    if (!yFlag[this.holderNr]) {
        startY[this.holderNr] = this.objPath._y;
        if (clipHeight[this.holderNr]) {
            endY[this.holderNr] = this.objPath._y+clipHeight[this.holderNr];
        } else {
            endY[this.holderNr] = this.objPath._y+this.objPath._height;
        }
        yFlag[this.holderNr] = 1;
    }
};
//
Mover.prototype.updatePosition = function() {
    //!n[this.holderNr]
    motion.updateScroll();
};
//
Mover.prototype.updateScroll = function() {
    //
    with (this.objPath) {
        if (_y == endY[this.holderNr] && !n[this.holderNr]) {
            yFlag[this.holderNr] = 1;
            n[this.holderNr] = 1;
            _root.onEnterFrame = undefined;
        }
        if (_y<endY[this.holderNr] && !n[this.holderNr]) {
            _y += this.speed;
        } else if (_y>startY[this.holderNr]) {
            n[this.holderNr] = 1;
            _y -= this.speed;
        }
        if (_y == startY[this.holderNr]) {
            yFlag[this.holderNr] = undefined;
            n[this.holderNr] = undefined;
            _root.onEnterFrame = undefined;
        }
    }
};


som kaldes med:

//****** creating a new mover object callet 'motion' ****
var motion = new Mover(this, 3, topHolder, this.id);
//*******************************************************
//
//
pressIt = function () {
    // calls an event Handler
    this.onEnterFrame = pressItem;
    //
};
//
pressItem = function () {
    //
    with (motion) {
        //
        getPressedItemID(this.id);
        getHeightOfClipsToMove();
        getPositionsOfMovingLayer();
        updatePosition();
    }
    //
    };


problemet er at mine lag nu ikke stopper når de er foldet enten helt ud eller ind, - altså de står og hopper ;-)

Er der mon nogen der kan hjælpe mig?

vh
KalleBalle
Avatar billede kalleballe Nybegynder
19. november 2003 - 11:17 #1
ups galt sted ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester