| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2009 Ort: Fernwald
Beiträge: 5
| Links in Scrolltextfeld funktioniert nicht
Hallo, dies ist mein erster Eintrag und ich warne gleich vor: Ich bin blutiger Anfänger ;o) Ich habe mit einer Freundin die Flash-Seite für meine Band erstellt (www.true-collins.com), was soweit auch wunderbar funktionierte, nur bei einer Sache stoßen wir an unsere Grenzen: In der Rubrik "In Concert" hätte ich im Prinzip gerne, dass im Haupttextfeld die Konzerttermine aufgelistet werden und ich dann im Fenster durch alle Termine eines Jahres scrollen kann. Problem: Entweder klappt es nicht mit den farbigen Hintergründen und - was noch viel wichtiger ist - mit den farbigen Links. Da uns nichts eingefallen ist, haben wir die Seite extrahiert und einen neuen Flash-Film daraus gemacht, der eine größere Höhe hat, sodass man die komplette Seite nach unten scrollen muss, was im Prinzip auch für mich in Ordung wäre, weil man so eine bessere Übersicht hat als in einem Fenster. Aber auch hier gibt es Probleme: Der Link zurück (jetzt erst mal nicht eingebaut), führt ja dazu, dass wieder das Intro käme, da eben auf eine andere swf-Datei verwiesen wird. Nicht so schön. Gibt es hierzu Möglichkeiten? Generell wäre es am schönsten, wenn die jetztige In Concert-Seite sich mit der größeren Höhe in die bestehende normale Flash-Datei einbinden ließe. Sollte das nicht gehen, wäre auch die Möglichkeit im Haupt-Text-Fenster durch die Termine zu scrollen gut - aber dann mit Links (farbig) und den farbigen Hintergründen, die die einzelnen Termine optisch trennen. Wir stoßen hier an unsere Grenzen. Ich würde mich sehr freuen, wenn uns jemand einen Lösungsweg aufzeigen würde. Schon mal vielen Dank im Voraus - wir sind gespannt. Geändert von M.Hulot (18-03-2009 um 08:22 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 148
|
Packe den Inhalt deines "In Concert" Bereiches in einen MovieClip, denen nennen wir jetzt mal "concert_mc". Wenn Du den jetzt auf der Hauptbühne zeigst, ist der natürlich, wie jetzt auch, viel zu lang. Leg' deshalb einfach eine Maske mit der Form darüber, die Du auch auf den anderen Seiten als Hintergrund für den Text nutzt, dieser Kasten mit den abgerundeten Ecken. So, und nun blendest Du rechts neben dem Clip Dein Scrollbalken ein (ich seh da einen im Bereich "News" beim Eintrag 01.03.2009). Nun musst Du für diesen Fall das Event des Scrollbalkens ändern. Statt im Interval ein Textfeld zu scrollen, verschiebst Du Den neu erstellten MovieClip einfach nach oben und unten, z.B. in 5er Schritten. Du musst dann nur noch durch eine Abfrage sicherstellen, dass der Clip niemals ganz ausserhalb des sichtbaren Bereiches geschoben werden kann. Ich kenn' Dein Script nicht, das könnte dann aber so aussehen (in AS2, ungetestet!): Code: function scrollDown():Void
{
if (concert_mc.y <= -(concert_mc._height + 10))
{
concert_mc._y -= 5;
}
else
{
clearInterval(wie auch immer Dein Interval heisst);
}
} |
| | |
| | #8 (permalink) | |
| Neuer User Registriert seit: May 2007
Beiträge: 4
| Brauche doch noch etwas Hilfe...:-) Zitat:
Beides funktioniert leider nicht mit einer fließenden scroll-Bewegung. Ich schaffe es nur, das schrittweise zu definieren mit der simplen on(release) und gotoAndStop - Funktion. Deinen Code verstehe ich leider auch noch nicht so ganz: Was bedeutet "Void" und die jeweiligen Zahlen (+10 und 5; => sind das die Frames?). Meine Scroll Texte hatte ich wie folgt erstellt: Dynamischen Text einen Instanznamen vergeben, Buttons definieren und dann folgenden Code: Code: var sek:Number = 200;
var scroll_up:Boolean;
var scroll_down:Boolean;
var interval:Number = setInterval(function ()
{
if(scroll_up) {
_root.txt_1.scroll--;
}
if(scroll_down){
_root.txt_1.scroll++;
}
}, sek);
up_mc.onRollOver = function(){
scroll_up = true;
};
up_mc.onRollOut = mein_mc.onReleaseOutside = function(){
scroll_up = false;
};
down_mc.onRollOver = mein_mc.onReleaseOutside = function () {
scroll_down = true;
};
down_mc.onRollOut = mein_mc.onReleaseOutside=function(){
scroll_down = false;
}; Vielleicht kannst du mir da bitte einen Hinweis geben, wie ich da besser vorgehen kann? Schon mal vielen Dank für deinen Mühen! | |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 148
|
Hi, die Vorgehensweise, den MC mit den Texten pro Frame schrittweise zu verschieben solltest du lassen, das ist viel zu aufwändig. Aber das Grundprinzip bleibt das gleiche, nur das der MC nicht pro Frame, sondern pro Interval-Tick verschoben wird. Mit 5er Schritten meine ich nur die Zahl an y-Pixeln, um die der MC verschoben wird um das Scrollen zu simulieren. Können auch 2 oder 10 oder sonst wie viele sein. Einen MC kannst Du ja nicht in dem Sinne scrollen, sondern nur auf der Bühne neu positionieren. Das "Void" hinter eine Funktion bedeutet nur, dass die Funktion keinen Rückgabewert liefert. Das ist bei AS2 nicht unbedingt notwendig, aber "sauberer". Bei AS3 musst Du das schreiben. Soll innerhalb der Funktion z.B. das Ergebnis einer Berechung zurückgegeben werden, würde das so aussehen: Code: function rechne():Number
{
var summe:Number = 5 + 6;
return summe;
} Dein Script müsste etwa so aussehen: Code: // mc = Der Name Deines MC mit den Texten
var scroll:String;
var interval:Number;
var scrollStep:Number = 5;
function scrolle():Void
{
if(scroll == "up")
{
mc._y -= scrollStep;
}
else
{
mc._y += scrollStep;
}
};
up_mc.onRollOver = function():Void {
scroll = "up";
interval = setInterval (scrolle, 200);
};
down_mc.onRollOver = mein_mc.onReleaseOutside = function ():Void {
scroll = "down";
interval = setInterval (scrolle, 200);
};
up_mc.onRollOut = mein_mc.onReleaseOutside = down_mc.onRollOut = mein_mc.onReleaseOutside = function():Void {
clearInterval (interval);
}; |
| | |
| | #10 (permalink) | |
| Neuer User Registriert seit: May 2007
Beiträge: 4
|
Das funktioniert super. Vielen Dank für die schnelle Antwort und die Codeoptimierung!!! Nur noch eine kleine Frage: kann ich dem mc auch sagen, dass er bei einem bestimmten y-Wert stoppt bzw. aufhört weiter zu scrollen (so dass noch das Ende zu sehen ist und er nicht einfach weiter scrollt)? z. B. Code: text_1._y= stop (-826); Das ist im Prinzip das, was du ganz am Anfang gesagt hast, gell? Zitat:
| |
| | |
| | #11 (permalink) | |
| Neuer User Registriert seit: Jul 2003
Beiträge: 148
| Zitat:
Die Abfrage müsste dann so angepasst werden: Code: // Ersetze die 10 durch Deine Schriftgröße
up_mc.onRollOver = function():Void {
if (mc._y <= - (mc._height - 10))
{
scroll = "up";
interval = setInterval (scrolle, 200);
}
};
down_mc.onRollOver = mein_mc.onReleaseOutside = function ():Void {
if (mc._y >= mc._height - 10)
{
scroll = "down";
interval = setInterval (scrolle, 200);
}
}; | |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: May 2007
Beiträge: 4
|
hm...leider funktioniert es jetzt nicht mehr richtig :-( warum muss ich denn die Schriftgröße definieren und nicht die Größe des MC? Das Seltsame ist, dass ich zwar nach unten scrollen kann, aber nicht zwischen durch wieder hoch. Ich muss erst komplett alles nach unten scrollen, damit ich dann wieder hochscrollen kann. Und er scrollt auch weiter, anstatt bei einer bestimmten Position (Ende) stehen zu bleiben. Das ist mein kompletter Code: Code: var scroll:String;
var interval:Number;
//die Zahl 20 ist der "Sprung", also in welchem Abstand bzw. Schritten der Text scrollt
var scrollStep:Number = 20;
function scrolle():Void
{
if(scroll == "up")
{
//das Plus vor dem Gleich ist die Richtung: +=der Text wandert hoch
text_2009._y += scrollStep;
}
else
{
text_2009._y -= scrollStep;
}
};
up_mc.onRollOver = function():Void {
//Definition der Position des MC
if (text_2009._y <= - (text_2009._height - 12))
{
scroll = "up";
interval = setInterval (scrolle, 100);
}
};
down_mc.onRollOver = mein_mc.onReleaseOutside = function ():Void {
if (text_2009._y >= mc._height - 12)
{
scroll = "down";
interval = setInterval (scrolle, 100);
}
};
up_mc.onRollOut = mein_mc.onReleaseOutside = down_mc.onRollOut = mein_mc.onReleaseOutside = function():Void {
clearInterval (interval);
}; |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Mar 2009 Ort: Fernwald
Beiträge: 5
|
Erst mal auch von mir danke für die große Hilfe, Goya. Das mit dem Scrollen haben wir nun generell hinbekommen. Auch dass man von beliebiger Stelle hoch- und runterscrollen kann. Allerdings hört das Scrollen nicht auf. Ich habe mal 3 Screenshots angehängt, an denen man das sehen kann. Der Startpunkt (Screenshot eins) stimmt. Doch sowohl am Anfang als auch am Ende scrollt das Fenster immer weiter, wenn man nicht von den Pfeilen geht - allerdings kommt dann nur noch weiß (Screenshot zwei und drei). Eingebunden ist das Fenster noch nicht. Darum ist es drumherum ebenfalls weiß. |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Jul 2003
Beiträge: 148
|
Heißt Euer MC denn auch "mein_mc"? Ansonsten funktioniert das onReleaseOutside nicht. Code: up_mc.onRollOut = mein_mc.onReleaseOutside = down_mc.onRollOut = mein_mc.onReleaseOutside = function():Void {
clearInterval (interval);
}; Code: up_mc.onRollOut = down_mc.onRollOut = function():Void {
clearInterval (interval);
}; |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| fenster, scrollen, scrolltext, text |
| Themen-Optionen | |
| Ansicht | |
| |