Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-02-2008, 13:50   #1 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Scrollen sensitiv auf Mausbewegung

Hallo,

ich möchte ähnlich wie beim neuen iPod-Touch oder auf der Webseite Zero Style (links in der Navigation) ein Scrollfeld bauen.

Dieses Scrollfeld soll nicht wie eine Slideshow funktionieren, sondern die Scrollposition soll von der Mauszeiger-Position abhängig sein.

Gibt es hierzu Codeschnipsel oder evtl. sogar einen Namen, unter dem ich selbst suchen kann?

Danke,
Johannes


PS: Welche AS-Version ist egal!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 17-02-2008, 14:28   #2 (permalink)
CodeGecko
 
Benutzerbild von hellslawyer
 
Registriert seit: Aug 2007
Ort: Hagen
Beiträge: 1.242
Meinst Du sowas hier?
ActionScript:
  1. mein_mc._x = _xmouse*(-1);
__________________
Grütze Reinhart

XING || Simple Flash-Filter-Generator || DateChooser (AS3)
MovieClipLoader-Example (AS2) || PreloaderClass (AS2) || Framechecker-Component (AS2)

Bitte keine Flashfragen per PN oder ICQ. Dafür ist das Forum da.
hellslawyer ist offline   Mit Zitat antworten
Alt 17-02-2008, 16:51   #3 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Ganz so einfach ist das natürlich nicht ;-)

Da muss eine Berechnung rein, denn in Abhängigkeit der höhe des zu scrollenden Inhalts muss die Scrollgeschwindigkeit an die Mausbewegung angepasst werden: Bei langen Inhalten, entspricht also 100px Mausbewegung ein Scrollen von z.B. 500px. Bei kurzen Inhalten, entsprechen die 100px jedoch nur z.B. 200px. Richtig?

Und hierfür hätte ich gerne einen sauberen Codeschnipsel, der dynamisch zu verarbeiten ist...

Danke!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 17-02-2008, 18:40   #4 (permalink)
CodeGecko
 
Benutzerbild von hellslawyer
 
Registriert seit: Aug 2007
Ort: Hagen
Beiträge: 1.242
Na, das ist doch nur Dreisatz:
ActionScript:
  1. var slidefaktor:Number = mein_mc._width/Stage.width-1;
  2. mein_mc.onRollOver = function(){
  3.    this.onMouseMove = function(){
  4.       mein_mc._x = _xmouse*(-1)*slidefaktor;
  5.    }
  6. }
  7. mein_mc.onRollOut = function(){
  8.     delete (this.onMouseMove);
  9. }
__________________
Grütze Reinhart

XING || Simple Flash-Filter-Generator || DateChooser (AS3)
MovieClipLoader-Example (AS2) || PreloaderClass (AS2) || Framechecker-Component (AS2)

Bitte keine Flashfragen per PN oder ICQ. Dafür ist das Forum da.
hellslawyer ist offline   Mit Zitat antworten
Alt 19-02-2008, 01:18   #5 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Ah, so macht das ganze schon mehr Sinn. Dein erster Post war also nur die Grundidee. Danke!

Jetzt muss ich nur noch den Begrenzungsrahmen, wo dieser Scrolleffekt überhaupt passieren soll, mit in die mathematische Rechnung einbauen. Aber das bekomme ich hin, denke ich.
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-02-2008, 17:33   #6 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Jetzt musste ich das ganze etwas umbauen, da mein gescrollter MC selbst klickbare Elemente enthält. Ich habe das wie folgt gelöst:
ActionScript:
  1. this.onEnterFrame = function() {
  2.     if((_xmouse>10) && (_xmouse<440) && (_ymouse>10) && (_ymouse<915)) {
  3.         this.onMouseMove = function() {
  4.             this.liste._y = ((_ymouse-92)*(-1)*slidefaktor);
  5.             if(this.liste._y > 15) liste._y = 15;
  6.             if(this.liste._y < -1310) liste._y = -1310;
  7.         }
  8.     } else {
  9.         delete(this.onMouseMove);
  10.     }
  11. }

Ich habe mittlerweile schon einiges mehr Script. Immer wenn ich nun das SWF aufrufe, verbraucht Flash einen enormen Teil meiner Rechenleistung. Kann das an dem obigen Script liegen. Kann/muss man das Script optimieren?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-02-2008, 20:54   #7 (permalink)
CodeGecko
 
Benutzerbild von hellslawyer
 
Registriert seit: Aug 2007
Ort: Hagen
Beiträge: 1.242
Dein Problem dürfte der onEnterFrame-Event sein, denn der fragt in Deiner Version 30 mal (oder ähnliches, je nach eingestellter Framerate) die Mausposition ab. Weniger Performancelastig wäre die Lösung, einfach einen unsichtbaren Button in Größe der "Abfragefläche" zu bauen und den mouseMove-Event in den RollOver-Event dieses Buttons zu packen. Ist aber nur ein Quick-And-Dirty-Ansatz, da ich den Rest Deiner Programmierung und den Aufbau der Datei nicht kenne.
__________________
Grütze Reinhart

XING || Simple Flash-Filter-Generator || DateChooser (AS3)
MovieClipLoader-Example (AS2) || PreloaderClass (AS2) || Framechecker-Component (AS2)

Bitte keine Flashfragen per PN oder ICQ. Dafür ist das Forum da.
hellslawyer ist offline   Mit Zitat antworten
Alt 25-02-2008, 18:57   #8 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Zitat:
Zitat von hellslawyer Beitrag anzeigen
Weniger Performancelastig wäre die Lösung, einfach einen unsichtbaren Button in Größe der "Abfragefläche" zu bauen und den mouseMove-Event in den RollOver-Event dieses Buttons zu packen.

Das hatte ich ja vorher und ging wunderbar. Nur konnte ich dann die Inhalte des gescrollten MCs nicht mehr klicken, weil der "unsichtbare Button" die Mausaktionen für sich alleine beanspruchte (vgl. vorhergehender Beitrag). Deshalb jetzt die performancelastige onEnterFrame-Geschichte.

Alternativen? Danke!
__________________
Mediendesign-Student
johanness 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 06:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele