aloha!
ich versuche gerade, ein full-as-dynamisches scrollgedingse zu basteln;
der code ist no net optimiert, kommt noch;
mein prob ist, dass ich alles zur laufzeit dynamisch erstelle, auch das textfeld;
die scrollformel für richtet sich immer nach textfeldhöhe;
da haperts...ich erstell ja nur einmal ein textfeld und muss ja eine höhe angeben;
wenn nu text reinkommt, sollte sich ja die höhe anpassen.....wie moch i des?
PHP-Code:
//++++++++++++++++++++++++++++++++++++++++++++++
var thisFilm:MovieClip = this;
//+++++++++++++++++++++++++++++++++++++++++++++++++++text-movieclip
thisFilm.createEmptyMovieClip("textClip", 10);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++text
thisFilm.textClip.createTextField("T_text", 1, 0, 0, 450, 285);
thisFilm.textClip.T_text.multiline = true;
thisFilm.textClip.T_text.background = true;
thisFilm.textClip.T_text.backgroundColor = "0xD3C27C";
thisFilm.textClip.T_text.border = true;
thisFilm.textClip.T_text.wordWrap = true;
thisFilm.textClip.T_text.html = true;
thisFilm.textClip.T_text.mouseWheelEnabled = true;
thisFilm.textClip.T_text.selectable = true;
thisFilm.textClip.T_text.borderColor = "0xFFFFFF";
var myTextFormat:TextFormat = new TextFormat();
myTextFormat.align = left;
myTextFormat.font = "Verdana";
myTextFormat.leading = 2;
myTextFormat.size = 11;
//myTextFormat.blockIndent = 3;
//thisFilm.textClip.T_text.setTextFormat(myTextFormat);
//++++++++++++++++++++++++++++++++++++++++++++++maske
thisFilm.createEmptyMovieClip("mask_mc", 20);
with (thisFilm.mask_mc) {
lineStyle(1, 0x999999, 100);
beginFill(0x999999, 100);
moveTo(0, 0);
lineTo(470, 0);
lineTo(470, 286);
lineTo(0, 286);
lineTo(0, 0);
}
thisFilm.textClip.setMask(thisFilm.mask_mc);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++scrolling arrows
thisFilm.textClip.createEmptyMovieClip("MC_up", 2);
thisFilm.textClip.MC_up._x = thisFilm.textClip._x+thisFilm.textClip._width+4;
thisFilm.textClip.MC_up._y = thisFilm.textClip._y;
with (thisFilm.textClip.MC_up) {
lineStyle(1, 0xFFFFFF, 100);
beginFill(0xD3C27C, 100);
moveTo(5, 0);
lineTo(5, 0);
lineTo(10, 10);
lineTo(0, 10);
lineTo(5, 0);
}
thisFilm.textClip.MC_up.duplicateMovieClip("MC_down", 3);
thisFilm.textClip.MC_down._y = thisFilm.textClip._y+thisFilm.mask_mc._height;
thisFilm.textClip.MC_down._yscale *= -1;
thisFilm.textClip.MC_up._alpha = thisFilm.textClip.MC_down._alpha=0;
//+++++++++++++++++++++++++++++++++++++scroller bgnd
thisFilm.createEmptyMovieClip("bgnd", 25);
with (thisFilm.bgnd) {
lineStyle(1, 0x620000, 0);
beginFill(0x620000, 0);
moveTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10+6, thisFilm.textClip._y+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10+6, thisFilm.textClip._y+20+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+20+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+16);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++scrollbar
thisFilm.createEmptyMovieClip("scrollbar_mc", 30);
with (thisFilm.scrollbar_mc) {
lineStyle(1, 0xFFFFFF, 100);
beginFill(0xD3C27C, 100);
moveTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10+6, thisFilm.textClip._y+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10+6, thisFilm.textClip._y+20+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+20+16);
lineTo(thisFilm.textClip._x+thisFilm.textClip._width-10, thisFilm.textClip._y+16);
}
//thisFilm.scrollbar_mc._visible = false;
var sliding = false;
function init(h, c, m) {
thisFilm.bgnd._height = Math.round(h-(thisFilm.textClip.MC_up._height*2));
this.ct = c;
this.mask = m;
startWatch();
}
function startWatch() {
thisFilm.scrollbar_mc.useHandCursor = false;
thisFilm.scrollbar_mc.onPress = function() {
this.startDrag(false, 0, 0, 0, bgnd._height-this._height);
sliding = true;
};
thisFilm.scrollbar_mc.onRelease = function() {
this.stopDrag();
sliding = false;
};
thisFilm.scrollbar_mc.onReleaseOutside = function() {
this.stopDrag();
sliding = false;
};
thisFilm.textClip.MC_up.onRollOver = function() {
startMove(-1);
};
thisFilm.textClip.MC_up.onRollOut = function() {
stopMove();
};
thisFilm.textClip.MC_up.onPress = function() {
startMove(-1);
};
thisFilm.textClip.MC_up.onRelease = function() {
stopMove();
};
thisFilm.textClip.MC_up.onReleaseOutside = function() {
stopMove();
};
thisFilm.textClip.MC_down.useHandCursor = false;
thisFilm.textClip.MC_down.onRollOver = function() {
startMove(1);
};
thisFilm.textClip.MC_down.onRollOut = function() {
stopMove();
};
thisFilm.textClip.MC_down.onPress = function() {
startMove(1);
};
thisFilm.textClip.MC_down.onRelease = function() {
stopMove();
};
thisFilm.textClip.MC_down.onReleaseOutside = function() {
stopMove();
};
_global.checker = setInterval(function () {
getPos();
//reDraw();
}, 50);
}
function startMove(d) {
if (speed == undefined) {
speed = 2;
}
sliding = true;
thisFilm.bgnd.onEnterFrame = function() {
thisFilm.scrollbar_mc._y += (d*speed);
if (thisFilm.scrollbar_mc._y<0) {
thisFilm.scrollbar_mc._y = 0;
}
if (thisFilm.scrollbar_mc._y>bgnd._height-thisFilm.scrollbar_mc._height) {
thisFilm.scrollbar_mc._y = bgnd._height-thisFilm.scrollbar_mc._height;
}
};
}
function stopMove() {
sliding = false;
delete thisFilm.bgnd.onEnterFrame;
}
function getPos() {
//trace(ct._height+"\n\n\n"+mask._height);
if (sliding) {
var smax = thisFilm.bgnd._height-thisFilm.scrollbar_mc._height;
var scur = thisFilm.scrollbar_mc._y;
var percent = scur*100/smax;
var ab_pos = percent*(ct._height-mask._height)/100;
trace(ct._height+"\n\n\n"+mask._height);
ct._y = -ab_pos;
//mask._parent.setScroll(ab_pos);
}
}
function reDraw() {
var ratio = ct._height/mask._height;
thisFilm.scrollbar_mc._height = Math.round(bgnd._height/ratio);
if (thisFilm.scrollbar_mc._height<bgnd._height) {
this._visible = true;
} else {
this._visible = false;
}
}
//++++++++++++++++++++++init
thisFilm.onEnterFrame = function() {
init(285, thisFilm.textClip, thisFilm.mask_mc);
delete this.onEnterFrame;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++wabber
thisFilm.textClip._yscale = 0;
var newsText = new LoadVars();
thisFilm.textClip.onEnterFrame = function() {
this._yscale += 5;
if (this._yscale>=100) {
delete this.onEnterFrame;
this._yscale = 100;
newsText.load("news.txt");
newsText.onLoad = function(sucess) {
if (sucess) {
thisFilm.textClip.T_text.htmlText = thisFilm.newsText.news;
thisFilm.textClip.T_text.setTextFormat(myTextFormat);
} else {
thisFilm.textClip.T_text.htmlText = "<b>Fehler</b> bei Ladevorgang!";
thisFilm.textClip.T_text.setTextFormat(myTextFormat);
}
};
var fading = setInterval(function () {
clearInterval(fading);
thisFilm.textClip.MC_up.onEnterFrame = function() {
this._alpha += 4;
this._parent.MC_down._alpha = this._alpha;
if (this._alpha>=100) {
delete this.onEnterFrame;
}
};
}, 500);
}
};
es is halt verdammt viel code im moment, ich weiß;
einfach copy&paste in fla, und testen;