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
