Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31-07-2003, 14:04   #1 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
onEnterFrame wird nicht gelöscht ...

hoi,

ich hab voll des problem. mit nachfolgender function fade ich beliebige MCs. wenn nun der alphawert >=100 ist soll das onEnterFrame gelöscht werden um die resource wieder freizugeben. bisjetzt sorgt das nur für unnötig rechenauslastung. eieiei.
ActionScript:
  1. function alphafade(mc, alpha) {
  2.     this.mc = mc;
  3.     this.alpha = alpha;
  4.     this.delay = 10;
  5.     this[mc].onEnterFrame = function() {
  6.         newAlpha = alpha-this._alpha;
  7.         this._alpha += newAlpha/delay;
  8.         trace(this._alpha);
  9.         if (this._alpha>=100) {
  10.             trace("alpha bla!");
  11.             delete this.onEnterFrame;
  12.         }
  13.     };
  14. }
  15. MovieClip.prototype.fade = alphafade;

mfg
pixel
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:14   #2 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
habe dir doch gestern schon geantwortet

du must darauf achten das der wert von newAlpha/delay nicht
kleiner wird als 0.4 . der wird sonst als 0 gewertet .
und somit kommst du nicht auf deine alpha 100.

(newAlpha/delay)+.5
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:16   #3 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
hi hay,

das prob hab ich gelößt, danke hab gerade nur festgestellt, das dieses script der reinster performance killer ist. die if-abfrage wird ja ausgeführt,nur das onEnterFrame wird eben nicht gelöscht - und das kostet rechenleistung.
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:25   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 518
hi

if (this._alpha>=100)

wird this._alpha überhaupt > 100??

schon mal tracen lassen??

Grütze
hnes
hnes ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:39   #5 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
Re: onEnterFrame wird nicht gelöscht ...

Zitat:
Geschrieben von piXeLfanatiker
hoi,

ich hab voll des problem. mit nachfolgender function fade ich beliebige MCs. wenn nun der alphawert >=100 ist soll das onEnterFrame gelöscht werden um die resource wieder freizugeben. bisjetzt sorgt das nur für unnötig rechenauslastung. eieiei.
ActionScript:
  1. function alphafade(mc, alpha) {
  2.     this.mc = mc;
  3.     this.alpha = alpha;
  4.     this.delay = 10;
  5.     this[mc].onEnterFrame = function() {
  6.         newAlpha = alpha-this._alpha;
  7.         this._alpha += newAlpha/delay;
  8.     ----->  trace(this._alpha);   <--------
  9.         if (this._alpha>=100) {
  10.             trace("alpha bla!");
  11.             delete this.onEnterFrame;
  12.         }
  13.     };
  14. }
  15. MovieClip.prototype.fade = alphafade;

mfg
pixel
ja, ist im script drin. mit diesem script wird das onEnterFrame gelöscht! Nur das ist damit MCs zoome.
ActionScript:
  1. function balken(mc, scale) {
  2.     this[mc]._visible = true;
  3.     this.mc = mc;
  4.     this.scale = scale;
  5.     this.delay = 8;
  6.     this[mc].onEnterFrame = function() {
  7.         zoom = scale-this._xscale;
  8.         this._xscale += (zoom/delay)+0.1;
  9.         //trace(this._xscale);
  10.         if (this._xscale>=99) {
  11.             trace("x bla!");
  12.             delete this.onEnterFrame;
  13.         }
  14.     };
  15. }
  16. MovieClip.prototype._zoomx = balken;
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:52   #6 (permalink)
-------------------------
 
Benutzerbild von Marpfei
 
Registriert seit: Jul 2002
Ort: Zürich
Beiträge: 159
Hier ist eine Version mit setInterval...
Als MovieClip-Prototype und du kannst die Geschwindigkeit mitgeben...

ActionScript:
  1. MovieClip.prototype.fade = function (alpha, tempo) {
  2.     var mc = this;
  3.     var delay = 10;
  4.    function changeAlpha() {
  5.         if (alpha < mc._alpha) {           
  6.             var newAlpha = alpha-mc._alpha;
  7.             mc._alpha += newAlpha/delay;
  8.         } else {
  9.             clearInterval(iv);
  10.         }
  11.     }
  12.     var iv = setInterval(changeAlpha, tempo);
  13. }
  14. // Anwendung...
  15. _root.createEmptyMovieClip ("bitte", 10);
  16. bitte.lineStyle (100, 0xFF0000, 100);
  17. bitte.moveTo (100, 100);
  18. bitte.lineTo (100, 100.15);
  19. bitte.fade(20, 50);

Marpfei
Marpfei ist offline   Mit Zitat antworten
Alt 31-07-2003, 14:54   #7 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
hi pixel,

hast du schonmal...
ActionScript:
  1. delete (this.onEnterFrame);
...probiert?
M!ch! ist offline   Mit Zitat antworten
Alt 31-07-2003, 15:08   #8 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
ne, kannte ich gar net. bringt aber auch nix - hab es jetzt über einen kleinen kniff gelöst, indem ich einfach einen frame in der zeitleite weiter geh.
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker ist offline   Mit Zitat antworten
Alt 31-07-2003, 15:11   #9 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hier wird das onenterfrane gelöscht.
ActionScript:
  1. function alphafade(mc, alpha) {
  2.         this.mc = mc;
  3.         this.alpha = alpha;
  4.         this.delay = 10;
  5.         this[mc].onEnterFrame = function() {
  6.                 newAlpha = alpha-this._alpha;
  7.                 this._alpha += ((newAlpha/delay)+.5)
  8.                 trace( this._alpha )
  9.                 if (this._alpha>=100) {
  10.                     delete this.onEnterFrame;
  11.                 }
  12.         };
  13. }
  14. MovieClip.prototype.fade = alphafade;
  15. fade("mc1", 100);
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 31-07-2003, 18:04   #10 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
jetzt klappt auf jedenfall - auch ohne kniff mit nextFrame(). Hab eigentlich nix geändert seltsame welt. ich danke euch jedenfall für die beiträge.

mfg
pixel
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker ist offline   Mit Zitat antworten
Alt 31-07-2003, 21:24   #11 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
guck mal hier, das ist eine etwas umfassender Lösung:

property Fader prototypes
Janoscharlipp ist offline   Mit Zitat antworten
Alt 01-08-2003, 07:23   #12 (permalink)
aus dem FF
 
Registriert seit: Jun 2001
Ort: Munich
Beiträge: 1.306
@ Janoscharlipp: wow. die ist wirklich umfassend. danke für den tipp.
__________________
Erfolg hat nur der, der etwas tut während er auf den Erfolg wartet.

Nicht klicken!
piXeLfanatiker 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 23:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele