Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-02-2004, 08:51   #1 (permalink)
pipi
Gast
 
Beiträge: n/a
"Zahlen runden" bremst Flash aus

Hallo Leutz,

Möchte einen abgebremsten Textsprung in meine Seite einbinden. Das klappt soweit ganz gut, allerdings bremst das alle anderen SWFs tierisch aus, sobald man auf eine andere Textstelle gesprungen ist.
Hier der AS-Teil:

onClipEvent (load) {
targetX = 259;
delay=2;
}
onClipEvent (enterFrame) {

//hier wird die Distanz der Ziel-X-Position zur momentanen ermittelt
abstandX=targetX-_x;

//Addiert zur aktuellen X-Position den durch 'delay' geteilten
// Abstandswert 'distx' hinzu und verringert somit langsam den
// Abstand zur Zielkoordinate

_X+=abstandX/delay;
_X=Math.round(_X);
}

Die kritische Zeile ist nach diversen Tests die letzte in der der Wert _X gerundet wird. Lasse ich diese weg, gehts.

Da ich Pixelfonts verwende muss mit ganzen Zahlen die x-Position errechnet werden, um unerwünschte Anti-Aliasing-Effekte zu vemeiden.
Weiß jemand eine Lösung für mein Problem?
Grüße
  Mit Zitat antworten
Alt 26-02-2004, 09:03   #2 (permalink)
Neuer User
 
Benutzerbild von Lukin
 
Registriert seit: Jun 2001
Ort: mainz
Beiträge: 692
wusste garnich das auch groß x geht -> _X
hast dus im script auch groß?
__________________
Lukin Lin Satima
Lukin ist offline   Mit Zitat antworten
Alt 26-02-2004, 09:42   #3 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
hehe, hoffentlich nur n tip-fehler...

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 26-02-2004, 09:44   #4 (permalink)
pipi
Gast
 
Beiträge: n/a
Erstaunlicherweise hat Flash diese Schreibweise akzeptiert. Aber auch die Kleinschreibung hat mein Problem leider nicht gelöst.
Vielleicht möchtet ihr das mal live sehen.
Bei
www.ticket-international.com/test/ könnt ihr euch das Phänomen mal ansehen.

Sichtbar unter Produkte > Ticketing... > POS > rechts unten auf Features/Funktionen.
Rollt man nun zügig über die Navi, bewegen sich die Rollovers super langsam. Also irgendwas beschäftigt den Prozessor unnötig.

Vielen Dank für eure Hilfe.
  Mit Zitat antworten
Alt 26-02-2004, 09:49   #5 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
@Lukin
es geht auch _X....sollte man aber aus eventuellen (zukünftigen) Kompatibilitätsproblemen nicht machen...
@pipi
Dein Problem ist ja wohl weniger Math.round als onEnterFrame....den onEnterFrame kann man nämlich auch wieder löschen und nur bei Bedarf aktivieren, wie das geschehen soll hängt jetzt stark von dem ab wie der Rest gescriptet wurde, eine Möglichkeit:
ActionScript:
  1. onClipEvent (load) {
  2. delay=2;
  3. this.jumpTo=function(targetX){
  4. this.onEnterFrame=function(){
  5. if(Math.abs(this._x-targetX)/delay>1){
  6. abstandX=this.targetX-_x;
  7. this._x+=abstandX/delay;
  8. this._x=Math.round(this._x);
  9. }else{
  10. this._x=Math.round(targetX);
  11. delete (this.onEnterFrame);
  12. }
  13. }
  14. this.jumpTo(257);
  15. }
und dann halt bei 'Bedarf':
ActionScript:
  1. deinMC.jumpTo(400);

Gruß

alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (26-02-2004 um 09:55 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 26-02-2004, 10:25   #6 (permalink)
pipi
Gast
 
Beiträge: n/a
@alois
Danke, habs gleich ausprobiert.
Er meldet leider eine Endlosschleife.
Wenn ich die Zeile this.jumpTo(257); weglasse, dann macht er was. Aber was weiß ich nicht so recht.
Hier mal die Fla
Thx
Angehängte Dateien
Dateityp: zip content_pos_test.zip (10,1 KB, 2x aufgerufen)
  Mit Zitat antworten
Alt 26-02-2004, 10:45   #7 (permalink)
pipi
Gast
 
Beiträge: n/a
@alois
Das die onEnterFrame Geschichte den Prozessor ausbremst klingt absolut logisch.
Dennoch funktionieren alle Varianten NUR dann, wenn die math.round Berechnung fehlt.

Vielleicht weiß jemand wie man die Stellen hinterm Komma ohne den Befehl math.round runden kann?
  Mit Zitat antworten
Alt 26-02-2004, 10:50   #8 (permalink)
Neuer User
 
Benutzerbild von Lukin
 
Registriert seit: Jun 2001
Ort: mainz
Beiträge: 692
naja, kannst dir ne funktion dafür schreiben, und dann "manuell" aufrunden,... guck ob die letzte zahl kleiner oder größer 5 is erhöhe die nächste zahl oder ziehe ihr eins ab,.. und das solange bis de durch bist....
__________________
Lukin Lin Satima
Lukin ist offline   Mit Zitat antworten
Alt 26-02-2004, 10:51   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
zunächst einmal solltest du folgende zeile ändern:
ActionScript:
  1. if(prozent==100){

in:
ActionScript:
  1. if(prozent>=100){


rest gleich...muss mal kurz schauen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-02-2004, 11:01   #10 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
und !

in der else-bedingung gehört natürlich das
ActionScript:
  1. this._x = Math.round(targetX)

in :

ActionScript:
  1. this._x = targetX



geändert !!!

da 'targetX' bereits eine ganzzahl ist-...das verursacht immer fehler !...

dann fluppt`s auch...


also so muss das aussehen:

ActionScript:
  1. onClipEvent (load) {
  2.         delay=2;
  3.         this.jumpTo=function(targetX){
  4.                 this.onEnterFrame=function(){
  5.                         if(Math.abs(this._x-targetX)/delay>1){
  6.                                 abstandX=this.targetX-_x;
  7.                                 this._x+=abstandX/delay;
  8.                                 this._x=Math.round(this._x);
  9.                         }else{
  10.                                 this._x=targetX;
  11.                                 delete (this.onEnterFrame);
  12.                         }
  13.                 }
  14.         }
  15. }





greetz

kelor

Geändert von kelor (26-02-2004 um 11:03 Uhr)
kelor ist offline   Mit Zitat antworten
Alt 26-02-2004, 11:07   #11 (permalink)
pipi
Gast
 
Beiträge: n/a
@lukin
Manuell aufrufen ist ne gute Idee, aber die Berechnung kann ich nicht ganz nachvollziehen. Die letzte Zahl kann ja auch eine Ganzzahl sein.

@kelor
>= im Preloader ist korrigiert, danke
Deinen neuen Post schaue ich mir gerade an

Geändert von pipi (26-02-2004 um 11:11 Uhr)
  Mit Zitat antworten
Alt 26-02-2004, 11:12   #12 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
pipi...hast du meine 2.korrektur auch gesehen...?
wenn du die vornimmst läuft die kiste wieder...

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-02-2004, 11:25   #13 (permalink)
pipi
Gast
 
Beiträge: n/a
@kelor
Danke, habe die 2. Korrektur gelesen.
Dachte das wärs, aber es bremst immernoch.
Es bremst nur, wenn man nicht auf der Ursprungsposition ist. Wenn man wieder zurückgeht, ist der Effekt weg.

Auch beim Aufrufen der Funktion soll ja der Wert targetx übereben werde. Egal welche Zahl ich eingebe, er scrollt immer an die gleiche Stelle.
  Mit Zitat antworten
Alt 26-02-2004, 12:12   #14 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
pipi...

schau dir mal folgende zeile an:

ActionScript:
  1. abstandX=this.targetX-_x;

die MUSS NATÜRLICH so heißen...
ActionScript:
  1. abstandX=targetX-this._x;


dann klappt´s auch mit dem nachbarn...



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-02-2004, 12:40   #15 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
@kelor,
das waren speziell von mir mitgepostete Tippfehler, da kannste pipi nicht für verantwortlich machen...
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois 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 14:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele