Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-11-2003, 06:55   #1 (permalink)
Kreativer Kopf
 
Benutzerbild von FlasherTyp
 
Registriert seit: Mar 2002
Ort: Darmstadt / Hessen
Beiträge: 1.120
HILFE warum 100% Prozessorauslastung bei diesem Code???

Also das ganze befindet sich in bild 2 von 2 in dem Movie. Und das Problem liegt auf jeden Fall in diesem Stück, da sobald dieser Teil entfernt wird das Problem nicht mehr auftaucht.

Ich hoffe jmd. kann mir helfen den Code so umzustricken das es "normal" läuft.

ActionScript:
  1. firststart = false;
  2. movieclip.prototype.drehscheibeInit = function(elast, ratio) {
  3.     rotate = false;
  4.     this.elast = elast;
  5.     this.ratio = ratio;
  6.     winkel = _rotation;
  7.     ziel = winkel;
  8. };
  9. movieclip.prototype.drehscheibe = function() {
  10.     with (this) {
  11.         if (startrotate) {
  12.             startrotate = false;
  13.             rotate = true;
  14.             offset = 180*Math.atan2(_parent._ymouse-_y, _parent._xmouse-_X)/Math.PI-ziel;
  15.         }
  16.         if (rotate) {
  17.             ziel = 180*Math.atan2(_parent._ymouse-_y, _parent._xmouse-_X)/Math.PI-offset;
  18.         }
  19.         if (ziel>360) {
  20.             ziel -= 360;
  21.         }
  22.         if (ziel<-360) {
  23.             ziel += 360;
  24.         }
  25.         diff = ziel-winkel;
  26.         while (diff>180) {
  27.             diff -= 360;
  28.         }
  29.         while (diff<-180) {
  30.             diff += 360;
  31.         }
  32.         drehung = drehung*elast+diff*ratio;
  33.         winkel += drehung;
  34.         if (winkel>360) {
  35.             winkel -= 360;
  36.         }
  37.         if (winkel<0) {
  38.             winkel += 360;
  39.         }
  40.         _rotation = winkel;
  41.         _root.topics._rotation=winkel;
  42.         _root.content._rotation=winkel;
  43.     }
  44. };
  45. stop();
__________________
Life is Pain
FlasherTyp ist offline   Mit Zitat antworten
Alt 18-11-2003, 07:20   #2 (permalink)
Kreativer Kopf
 
Benutzerbild von FlasherTyp
 
Registriert seit: Mar 2002
Ort: Darmstadt / Hessen
Beiträge: 1.120
Also das Problem ist das er Winkel dann immer wieder _rotate zuweist auch wenn es sich nichts ändert.

Aber wenn ich eine Anfrage reinmache:

ActionScript:
  1. if (winkel != _rotation) {
  2.                 _rotation = winkel;
  3.                 _root.topics._rotation=winkel;
  4.                 _root.content._rotation=winkel;
  5.                 }

Gehts auch nicht, sobald ich dann einmal angefangen habe zu drehen bleibt die Prozessorauslastung auf 95%-100%
__________________
Life is Pain
FlasherTyp ist offline   Mit Zitat antworten
Alt 18-11-2003, 07:25   #3 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Re: HILFE warum 100% Prozessorauslastung bei diesem Code???

Zitat:
Geschrieben von FlasherTyp
.... Und das Problem liegt auf jeden Fall in diesem Stück, da sobald dieser Teil entfernt wird das Problem nicht mehr auftaucht.
...
Das ist so schon mal definiv falsch, was Du da gepostet hast belastet den Prozessor erstmal gar nicht, setz es doch mal in einen leeren Flashfilm und teste es dann die Prozessorauslastung.
"Ja, und warum..." höre ich Dich jetzt fragen...
tja, das liegt wohl am Rest des scripts (wo auch immer Du ihn her hast), wie oft werden denn die Funktionen 'drehscheibeInit' und 'drehscheibe' in enterFrame-Events aufgerufen????
Zeig doch mal ein Beispiel in dem die beiden Funktionen aufgerufen werden...so macht das keinen Sinn...


Gruß

Alois

P.S.:... ich hab hier im Forum auch mal nach 'drehscheibeInit' gesucht der einzige thread den ich gefunden habe ist auch von Dir und auch in diesem zeigst Du nicht wie Du die Funktion aufrufst, sorry aber ich glaube nicht, daß Du annähernd weisst was Du da tust....
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (18-11-2003 um 07:27 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 18-11-2003, 07:32   #4 (permalink)
Kreativer Kopf
 
Benutzerbild von FlasherTyp
 
Registriert seit: Mar 2002
Ort: Darmstadt / Hessen
Beiträge: 1.120
ähm ja klar

aufrufen tu ich die funktion auf nem movieclip in diesem frame:

onClipEvent (enterFrame) {
drehscheibe();
}

habs mal auf mouseDown und mouseMove umgestellt, so klappts besser, aber die Lösung kommt mir irgendwie *******e vor???
__________________
Life is Pain

Geändert von FlasherTyp (18-11-2003 um 07:37 Uhr)
FlasherTyp ist offline   Mit Zitat antworten
Alt 18-11-2003, 09:20   #5 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Also, nachdem ich selbst herausgetüftelt habe was vermutlich unter onClipEvent(load) steht (mann mann, sowas musst Du mitposten...), kann ich Dir vielleicht helfen:
so sollte die Funktion drehscheibe aussehen:
ActionScript:
  1. movieclip.prototype.drehscheibe = function() {
  2.         with (this) {
  3.                 if (startrotate) {
  4.                         startrotate = false;
  5.                         rotate = true;
  6.                         offset = 180*Math.atan2(_parent._ymouse-_y, _parent._xmouse-_X)/Math.PI-ziel;
  7.                 }
  8.                 if (rotate) {
  9.                         ziel = 180*Math.atan2(_parent._ymouse-_y, _parent._xmouse-_X)/Math.PI-offset;
  10.                 }
  11.                 if (ziel>360) {
  12.                         ziel -= 360;
  13.                 }
  14.                 if (ziel<-360) {
  15.                         ziel += 360;
  16.                 }
  17.                 diff = ziel-winkel;
  18.                 while (diff>180) {
  19.                         diff -= 360;
  20.                 }
  21.                 while (diff<-180) {
  22.                         diff += 360;
  23.                 }
  24.                 drehung = drehung*elast+diff*ratio;
  25.                
  26.                 winkel += drehung;
  27.                 if (winkel>360) {
  28.                         winkel -= 360;
  29.                 }
  30.                 if (winkel<0) {
  31.                         winkel += 360;
  32.                 }
  33.                 _rotation = winkel;
  34.                 _root.topics._rotation=winkel;
  35.                 _root.content._rotation=winkel;
  36.                 if(Math.abs(drehung)<0.1){
  37.                             delete(this.onEnterFrame);
  38.                             }
  39.         }
  40. };

Hinweis: Die with-Funktion funktioniert so eigentlich nicht richtig (alle variablen, die innerhalb einer with-Funktion liegen müssen vorher definiert sein), das sollte aber in diesem Fall egal sein

Und auf den mc:
ActionScript:
  1. onClipEvent(load){
  2.     drehscheibeInit(0,1);
  3.     startrotate=true;
  4. //oder wie das sonst da steht
  5. }
  6. onClipEvent(mouseMove){
  7.     this.onEnterFrame=function(){
  8.     drehscheibe();
  9.     }
  10. }


Gruß

Alois
__________________
-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 16:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele