matrixstudio
Grünschnabel
Hey Schönen Abend,
kleine Frage an die Runde der Begnadeten (ich selbst bin nicht der Script König vor dem Herrn, also bitte eventuelle Antworten so einfach wie möglich gestallten). Habe bei meinem aktuellen Projekt ein Problem. Ich wollte das Script einer schönenen Scrollbar Lösung für mein dynamisches Textfeld benutzen. Nach Stunden der Verzweifelung und Vergleicherei hab ich den Unterschied gefunden:
Das Actionscript scheint nur zu funktionieren, wenn man es als Flash5 publiziert. Da ich aber bedingt durch andere Funktionen als MX publizieren möchte stehe ich jetzt aufm Schlauch. Ich füge mal den entsprechenden Code ein und pack als Anhang die originalen Files dabei. Ein Lösungsansatz war schickere Variabeln zu benutzen, da ich dachte, das es an der kombinieten klein/groß Schreibung lag aber das wars dann auch nicht.
In diesem Beispiel wird halt eine echte Windows Scrollleiste erstellt, die abhängig vom eingeladenen Text ihre Größe variiert. Vergebt mir mein Unwissen ist mit Sicherheit ne recht offensichtliche Sache... Vielen DANK!
kleine Frage an die Runde der Begnadeten (ich selbst bin nicht der Script König vor dem Herrn, also bitte eventuelle Antworten so einfach wie möglich gestallten). Habe bei meinem aktuellen Projekt ein Problem. Ich wollte das Script einer schönenen Scrollbar Lösung für mein dynamisches Textfeld benutzen. Nach Stunden der Verzweifelung und Vergleicherei hab ich den Unterschied gefunden:
Das Actionscript scheint nur zu funktionieren, wenn man es als Flash5 publiziert. Da ich aber bedingt durch andere Funktionen als MX publizieren möchte stehe ich jetzt aufm Schlauch. Ich füge mal den entsprechenden Code ein und pack als Anhang die originalen Files dabei. Ein Lösungsansatz war schickere Variabeln zu benutzen, da ich dachte, das es an der kombinieten klein/groß Schreibung lag aber das wars dann auch nicht.
In diesem Beispiel wird halt eine echte Windows Scrollleiste erstellt, die abhängig vom eingeladenen Text ihre Größe variiert. Vergebt mir mein Unwissen ist mit Sicherheit ne recht offensichtliche Sache... Vielen DANK!
Code:
onClipEvent (load){
//---------------------------------------------------------------------------------------
//--initialze variables
numLines = 18; // guesstimate of number of visible lines in text area
tolerance = 1; // controls how close the scroll bar can get before snapping to target
speed = 5; // controls re-size and re-position animation speed
origHeight = scrollbar._height;
origX = (scrollbar._x + 1);
text = "windows OS scroll bar...";
//---------------------------------------------------------------------------------------
//--resizes scrollbar according to content length
function scrollResize(){
lastHeight = scrollbar._yscale;
totalLines = (text.maxscroll - 1) + numLines;
newHeight = 100 * (numLines) / totalLines;
scaleDiff = Math.abs(newHeight - lastHeight);
currentPosition = scrollbar._y;
pixelDiff = currentPosition - (arrowUp._height - 1);
}
//---------------------------------------------------------------------------------------
//--positions scrollbar when text is scrolled
function scrollPosition (){
scrollbar._y = (lineHeight * (text.scroll - 1)) + (arrowUp._height - 1);
}
}
//-------------------------------------------------------------------------------------------
onClipEvent (enterFrame){
scrollResize();
//---------------------------------------------------------------------------------------
//--animate the scale and position of scrollbar if resize is required
if (lastHeight <> newHeight){
if (scaleDiff < tolerance && scaleDiff > (0 - tolerance)){
scrollbar._yscale = newHeight;
heightDiff = origHeight - scrollbar._height;
lineHeight = HeightDiff/(text.maxscroll - 1);
rePosition = false;
text.scroll = 1;
scrollPosition();
}else{
if (newHeight < lastHeight){
scrollbar._yscale = scrollbar._yscale - (scaleDiff / speed);
}else if (newHeight > lastHeight){
scrollbar._yscale = scrollbar._yscale + (scaleDiff / speed);
}
}
}
if (rePosition == true){
currentPosition = currentPosition - (pixelDiff / speed);
scrollbar._y = currentPosition;
pixelDiff = pixelDiff - (pixelDiff / speed);
if (currentPosition == (arrowUp._height - 1)){
rePosition = false;
}
}
//---------------------------------------------------------------------------------------
//--scrolling when arrows are pressed
if (startScroll == true){
if (scroll == "up" && text.scroll > 1){
text.scroll--;
scrollPosition();
}
if (scroll == "down" && text.scroll < text.maxscroll){
text.scroll++;
scrollPosition();
}
}
//---------------------------------------------------------------------------------------
//--page text if mouse is clicked within the scrollarea
if (paging == true){
if (hitLocation < scrollbar._y){
text.scroll-=numLines;
scrollPosition();
if (hitLocation >= scrollbar._y && hitLocation <= (scrollbar._y + scrollbar._height)){
paging = false;
}
}else{
text.scroll+=numLines;
scrollPosition();
if (hitLocation >= scrollbar._y && hitLocation <= (scrollbar._y + scrollbar._height)){
paging = false;
}
}
}
// test = (arrowDown._y - arrownDown._height) - scrollbar._height;
}
//--------------------------------------------------------------------------------------------
onClipEvent (mouseDown){
//--detect if mouse click is in scrollarea but not on scrollbar
if (scrollArea.hitTest(_root._xmouse, _root._ymouse) and not scrollbar.hitTest(_root._xmouse, _root._ymouse)){
hitLocation = this._ymouse;
paging = true;
resize = false;
}
//--detect if mouse click is on up arrow button
if (arrowUp.hitTest(_root._xmouse, _root._ymouse)){
scroll = "up";
startScroll = true;
arrowUp.gotoAndPlay(2);
resize = false;
}
//--detect if mouse click is on down arrow button
if (arrowDown.hitTest(_root._xmouse, _root._ymouse)){
scroll = "down";
startScroll = true;
arrowDown.gotoAndPlay(2);
resize = false;
}
//--detect if mouse click is on scrollbar
if (scrollbar.hitTest(_root._xmouse, _root._ymouse)){
startDrag (scrollbar, false, origX, arrowUp._height - 1, origX, heightDiff + (arrowUp._height - 1));
scroll = "scrollbar";
scrollbar.gotoAndPlay(2);
resize = false;
}
}
//--------------------------------------------------------------------------------------------
//--reset scroll properties when mouse button is released
onClipEvent (mouseUp){
scroll = "";
startScroll = false;
paging = false;
stopDrag();
resize = true;
scrollbar.gotoAndStop(1);
arrowUp.gotoAndStop(1);
arrowDown.gotoAndStop(1);
}
//--------------------------------------------------------------------------------------------
//-adjust text when scroll bar is dragged
onClipEvent (mouseMove){
if (scroll == "scrollbar"){
text.scroll = Math.round((scrollbar._y - arrowUp._height)/lineHeight + 1);
//--test for scrollbar position to correct errors created by numLines guesstimate
if (scrollbar._y == Math.ceil(arrowDown._y - (arrowDown._height - 1) - scrollbar._height)){
text.scroll = text.maxscroll;
}
}
updateAfterEvent();
}
//--------------------------------------------------------------------------------------------
//--detects when content is text box is changed...reset scroll property and resize scroll bar
onClipEvent (data){
rePosition = true;
scrollResize();
text.scroll = 1;
}