Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-04-2004, 10:01   #1 (permalink)
Trace it Baby
 
Benutzerbild von maddy
 
Registriert seit: Dec 2001
Beiträge: 416
Problem mit Funktion, findet wer den Unterschied..?

Ich habe ein kleines Problem mit einer Funktion....


ActionScript:
  1. MovieClip.prototype.wabber = function(multiplikator, xskal, yskal, ratio) {
  2.     this.onEnterFrame = function() {
  3.         this.sX = Number(this.sX*multiplikator)+Number((xskal-this._xscale)*ratio);
  4.         this.sY = Number(this.sY*multiplikator)+Number((yskal-this._yscale)*ratio);
  5.         this._xscale += this.sX;
  6.         this._yscale += this.sY;
  7.     };
  8. };
  9.  
  10. for (i=1; i<=24; i++) {
  11.         this["btn_mc"+i].onMouseMove = function() {
  12.             if (this.hitTest(_root._xmouse, _root._ymouse)) {
  13.                 MouseHit = true;
  14.                 this.wabber(.8, 140, 140, .9);
  15.                 }
  16.             else if (this.hitTest(_root._xmouse, _root._ymouse) == false && MouseHit == true) {
  17.                 rollOutTimer = getTimer() +2000;
  18.                 MouseHit = false;
  19.                 }
  20.             else if (rollOutTimer >= getTimer()) {
  21.                 this.wabber(.8, 100, 100, .9);
  22.                 }
  23.         };
  24. }

Wozu der Timer? Nunja, die Else Bedingung ist ja im Leerlauf immer erfüllt und so wird die Funktion auch immer aufgerufen. Der Timer soll die verhindern. Eigentlich klappt es ja auch, allerdings nur in meiner Test-fla... Nach einfügen in die Entwicklungs-fla steigt die CPU Auslastung wieder auf 100% sobald die funktion das erste mal aufgerufen wurde...

Ich hänge beide FLAs mal im Anhang an, hoffe irgendjemand kann mir weiterhelfen....
Angehängte Dateien
Dateityp: zip function.zip (41,8 KB, 2x aufgerufen)
maddy ist offline   Mit Zitat antworten
Alt 07-04-2004, 10:30   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Warum benutzt du nicht einfach onRollOver und onRollOut ? Das ist viel effizienter als bei jeder Mausbewegung zu testen, ob die Maus über dem Button ist.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 07-04-2004, 10:39   #3 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
sehe ich genauso....

du lässt da ja auch ganz schön was rattern... in ner for schleife die zig fach läuft noch ein onMouseMove und darin jeweils noch hittests die wiederrum den prototyp mit ner onEnterFrame schleife laufen lassen... das ist zu heftig und umständlich gedacht

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 07-04-2004, 11:04   #4 (permalink)
Trace it Baby
 
Benutzerbild von maddy
 
Registriert seit: Dec 2001
Beiträge: 416
@bokel: Du meinst so:
ActionScript:
  1. for (i=1; i<=24; i++) {
  2.         this["mc"+i].onRollOver = function() {
  3.                 this.wabber(.8, 140, 140, .9);
  4.         };
  5.         this["mc"+i].onRollOut = function() {
  6.                 this.wabber(.8, 100, 100, .9);
  7.         };
  8. }
Das deaktiviert die Button Funktion des verschachtelten Buttons (er ist nicht mehr ansprechbar)

@ salazar: Jede onEnterFrame Aktion benötig Rechenleistung um das auszuschalten weisst die For-Schleife jedem der 24 MCs den entsprechenden Code zu. Die Obige Lösung mit rollOver ist zB Optimal, nur überdecken die MCs irgendwie das AS das auf den Buttons liegt. Wenn ich prototype weglasse muss ich jedersmal der Funktion mit übergeben in welchem MC sie ausgeführt werden soll...

Wie gesagt, prinzipiell funktioniert das ja mit dem Timer... aber irgendwie nur in der erstellten test-fla...
maddy ist offline   Mit Zitat antworten
Alt 07-04-2004, 11:12   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Brauchst du den Button überhaupt ?
Du könntest dem äußeren Mc auch einen onRelease-handler verpassen.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 07-04-2004, 11:32   #6 (permalink)
Trace it Baby
 
Benutzerbild von maddy
 
Registriert seit: Dec 2001
Beiträge: 416
Nein, prinzipiell eigentlich nicht zwingend. Ich hatte das auch schonmal versucht, hat aber mit der For-Schleife nicht so ganz geklappt :/ Die Variante kam dann in etwas anderer Form (ohne timer, usw) von Crusty...

Hab grad mal gestestet:

ActionScript:
  1. for (i=1; i<=22; i++) {
  2.         this["btn_mc"+i].onRollOver = function() {
  3.                 this.onRelease = function() {
  4.                     trace("hit");
  5.                 }
  6.                 this.wabber(.8, 140, 140, .9);
  7.         };
  8.         this["btn_mc"+i].onRollOut = function() {
  9.                 this.wabber(.8, 100, 100, .9);
  10.         };
  11. }

So funzt es. Aber irgendwie das selbe Problem.... Geht man über alle Buttons geht die CPU nicht mehr auf runter :/
Hatte es schonmal mit round in der funktion aber dann wabbert es kaum noch.
Jetzt ist die Lösung schon eleganter aber das Problem ist immernoch da...

EDIT: Also der rechnet sich dumm und dämlich! Werd also irgendwie runden müssen!

Vielen Dank aber für die Hilfe!! Komme jetzt endlich mal weiter

Wenn mir noch jemand nen Tip zum Runden geben kann, gerne. AS ist noch ziemlich neu für mich...

Geändert von maddy (07-04-2004 um 11:39 Uhr)
maddy 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 04:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele