Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-10-2006, 00:15   #1 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
Mathem. Berechnung von Scrollbalken!!!

Hi, ich suche um diese späte Stunde noch Hilfe

Ich habe eine swf erställt, die sich per html automatisch skaliert zu 100%.
In dieser swf habe ich einen mc der sich in der Höhe verändert! Ist die Höhe größer als die Bühne (Stage.height<=_root.MC._height) dann wird ein Scrollbalken sichtbar und 2 Buttons, mit denen man rauf und runter scrollen kann. Mausrad ist ebenfalls vorhanden.

Die Höhe des Scrollbalken habe ich so bestimmt:
PHP-Code:
vscroll._height Stage.height/(((_root.MC._height/Stage.height)*100)/100)-48
(-48 deswegen, da ich einen RAUF und RUNTER button habe mit jeweils 24 px Höhe!)

Nun weiß ich nicht, wie ich das mittlere mc damit verschieben kann.
Ich kann den Scrollbalken schon rauf und runterschieben. Doch ich will die Position des Balkens dem MC übergeben.
Also wenn der Scrollbalken ganz unten ist soll der mc an dem unteren Rand anstoßen.
Und wenn der Scrollbalken ganz oben ist soll der mc an dem oben Rand anstoßen.

Ich habe auf den Scrollbalken folgendes Script:
PHP-Code:
on (press) {
    
this.startDrag(false_root.vscroll._x24_root.vscroll._xStage.height-24-_root.vscroll._height);
    
_root.scrollbar true;
}
on (releasereleaseOutside) {
    
this.stopDrag();
    
_root.scrollbar false;

In der Hauptzeitleiste frage ich ab, ob scrollbar=true ist:
PHP-Code:
Stage.scaleMode "noScale";
Stage.align "TL";
lstrn = new Object();
lstrn.onResize = function() {
    ...
    ...
    if (
_root.scrollbar == true) {
        
trace ("Befehl zum Bewegen");
        
_root.MC._y = ???;
    }
};
Stage.addListener(lstrn);
_root.lstrn.onResize(); 
Ich überleg die ganze Zeit wie wohl die Formel dafür geht?

Hat jemand schon SO einen Scroller gebaut, der die ganze Seite scrollt? (wie auf elastique)
Oder muss ich das Rad wieder neu erfinden?

Hier habe ich zur besseren Verständniss noch ein Bild erstellt!

Vielen Dank für eure Hilfe!!
__________________
currently working: yes

Geändert von starfighter (11-10-2006 um 00:19 Uhr)
starfighter ist offline   Mit Zitat antworten
Alt 11-10-2006, 10:22   #2 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Hallo,

vom Prinzip ist es doch so, das der Raum zwischen den Buttons die Höhe des mc wiederspiegelt, also Stage.height - 48 entspricht mc._height. Die Höhe des Balkens entspricht dem sichtbaren Bereich des Movieclips. Demzufolge entspricht der Bereich über dem Balken bzw. die y-Position des Balkens der y-Position des mc´s.

Daraus ergibt sich folgende Berechnung für die Position des mc´s:

var help = mc._height / (Stage.height - 48)
mc._y = balken._y * help

Die Ausgangsposition von dem Balken sollte also 0 sein, ansonsten muß die entsprechende y-Position abgezogen werden.

Ich hoffe, das hilft dir ein wenig weiter.

Gruss
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 11-10-2006, 13:06   #3 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
Vielen Dank für deine Hilfe!
Schaut soweit gut aus, DOCH das MC in der Mitte bewegt sich beim HINUNTERSCROLLEN hinunter und beim hinaufscrollen hinauf...
sollte ja umgekehrt sein, also wenn ich hinunterscrolle bewegt sich das MC hinauf...
__________________
currently working: yes
starfighter ist offline   Mit Zitat antworten
Alt 11-10-2006, 13:19   #4 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
mc._y = -balken._y * help;
public ist offline   Mit Zitat antworten
Alt 11-10-2006, 13:39   #5 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
ja.. hm.. also.. aufs "-" hätt ich auch draufkommen können

DANKEEE!!!! funktioniert!... Weiß wer noch wie ich das UMGEKEHRT machen kann? also dass die position vom balken sich an dem MC orientiert?

Weil ich hab das mausrad mit eingebaut, und wenn ich runterscroll, soll sich der balken auch mitbewegen.
danke auf jedenfall für eure hilfe!!
__________________
currently working: yes
starfighter ist offline   Mit Zitat antworten
Alt 11-10-2006, 14:13   #6 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Ja, sorry das mit dem minus hab ich jetzt übersehen.

Für den umgekehrten weg einfach die Gleichung umstellen.

mc._y = -(balken._y * help);

balken._y = -(my._y / help);

Ich denke so sollte es gehen.

Gruss
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 11-10-2006, 17:37   #7 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
Es funktioniert zu 70%
igendwie klappt bei mir nicht alles..
Die Höhe vom Mc wird nicht 100%ig ausgerichtet.. sondern paar pixel zu hoch/zu tief!
Außerdem richtet sich der balken nicht aus, nachdem ich das scrollrad oder die buttons benütze!

ich seh jetzt nur noch buchstaben und zahlen, wär schön wenn sich jemand meine fla anschaut!
Danke auf jedenfall für eure Hilfe!
Angehängte Dateien
Dateityp: zip hilfe_scrollrad.zip (6,4 KB, 28x aufgerufen)
__________________
currently working: yes

Geändert von starfighter (11-10-2006 um 17:41 Uhr)
starfighter ist offline   Mit Zitat antworten
Alt 12-10-2006, 12:46   #8 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Hallo,

ein paar kleine Fehler sind noch drin.
Die y-Position von vscroll ist zu Beginn nicht 0 sonder 24. Das bedeutet, diesen Wert mußt du bei allen Berechnungen mit vscroll._y abziehen und beim berechnen von vscroll._y dazuaddieren oder du setzt das ganze in einen anderen mc der y=24 hat und dann vscroll._y=0.

Dann ist da noch nen Fehler bei der Berechnung der y-Position des Balkens, anstatt
PHP-Code:
var help MC._height/(Stage.height-48);
var 
help2 = -vscroll._y*help;
vscroll._y = -(MC._y/help2); 
muss es heißen
PHP-Code:
var help MC._height/(Stage.height-48);
vscroll._y = -(MC._y/help); 
Zudem würde ich dir empfehlen die Berechnungen in extra Functionen zu machen und nur an den entsprechenden Stellen aufzurufen.
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 12-10-2006, 17:12   #9 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
Hey vielen Dank für deine Antwort!
Seitdem ich deine antwort bekommen hab sitz ich davor und schau was möglich ist!
Ich hab alles gelöscht und nochmal aufgebaut und gleich von anfang an besser übersichtlicher gemacht (sollte ich mir merken )
Ich habe es jetzt so HALBWEGS hinbekommen, also mit ein bissl cheaten funktioniert das mausrad und die Rauf-Runter Buttons!

Doch die Leiste will irgendwie nicht, kann es sein dass die Formel
PHP-Code:
var scrollhoehe = -(MC._y/(MC._height/(Stage.height-48))) 
nicht 100%ig stimmt? oder muss ich hier noch was dazuzählen? habe schon alles mögliche probiert...!

(Die var scrollhoehe ist deine var help , MC._height/(Stage.height-48); vscroll._y = -(MC._y/help); )

Vielleicht kann irgendwer nochmal über mein AS drüberschaun?
Danke!
Angehängte Dateien
Dateityp: zip hilfe_scrollrad2.zip (7,6 KB, 6x aufgerufen)
__________________
currently working: yes

Geändert von starfighter (12-10-2006 um 17:22 Uhr)
starfighter ist offline   Mit Zitat antworten
Alt 13-10-2006, 00:21   #10 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
N´abend,

ich glaube das Problem lag an der falschen Höhe des Scrollers.

Ich hab das ganze mal nachgebaut (siehe Anhang). So scheint es jetzt zu funktionieren. Hab versucht möglichst viele Kommentare zu verwenden, sollten trotzdem Fragen sein immer her damit.

Gruss
Angehängte Dateien
Dateityp: zip hilfe_scrollrad2_new.zip (5,9 KB, 84x aufgerufen)
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 13-10-2006, 00:39   #11 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
ja bist du wahnsinnig! so schön und fein!
genau das was ich gesucht habe! so genial! ich danke dir
mal schaun, ob ich auch einen horizontalen scroller zusammenbekomme

Danke dir auf jedenfall!!!
__________________
currently working: yes

Geändert von starfighter (13-10-2006 um 00:54 Uhr)
starfighter ist offline   Mit Zitat antworten
Alt 13-10-2006, 10:13   #12 (permalink)
flashworker
 
Benutzerbild von brose
 
Registriert seit: Jun 2003
Beiträge: 199
Gern geschehen, hat ja auch Spass gemacht .

Für nen Horizontalen Scroller brauchst du glaube ich nur die drei Funktionen mit der Berechnung ändern, anstatt der y-Werte die dementsprechenden x-Werte einsetzen.

Gruss
__________________
brose
brose ist offline   Mit Zitat antworten
Alt 13-10-2006, 10:21   #13 (permalink)
Fragebogen
 
Benutzerbild von starfighter
 
Registriert seit: Apr 2003
Ort: austria.vienna Beiträge:25.343
Beiträge: 361
solang es spaß macht macht mans gerne
ja ich hab schon den horizontalen scroller versucht einzubauen, positionierung passt aber die balkengröße und position hat nicht hingehaun.
Ich lass den jetzt einmal weg, vielleicht geb ich ihn später noch hinzu!

aber du hast mir sehr geholfen! freu mich jetzt richtig!
__________________
currently working: yes
starfighter ist offline   Mit Zitat antworten
Alt 01-11-2006, 12:17   #14 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 2
hey super

vielen dank, hab grad unerwarterter weise einen scroller auf die schnell gebraucht funkt super. merci
conny zz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele