Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-09-2005, 11:29   #1 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
setInterval und Parameterübergabe

Hallo

Folgendes Problem:
Ich frage in einer Funktion die per setInterval aufgerufen wird die jeweilige x Position eines Movieclips der gedraggt wird ab.

Dies funktioniert auch solange ich in meiner Funktion direkt die x-Position abfrage.

Übergebe ich allerdings die x Position als Paramter gibt er mir immer nur den Startwert aus und nicht den aktuellen Wert.

Es kommt mir so vor, als ob der Parameter nur einmal zu Beginn übergeben wird und nicht bei jedem setInterval Aufruf erneut.

Hier mal ein Beispielcodeschnipsel der das Problem trifft:
ActionScript:
  1. test_mc.onPress = function() {
  2.     testerli = setInterval(testfunktion, 100, test_mc._x);
  3.     startDrag(this);
  4. };
  5. test_mc.onRelease = function() {
  6.     clearInterval(testerli);
  7.     stopDrag();
  8. };
  9.  
  10. testfunktion = function (x) {
  11.     trace("per parameter: "+x);
  12.    
  13.     trace("direkt: "+test_mc._x);
  14. };
Seventy6 ist offline   Mit Zitat antworten
Alt 09-09-2005, 11:44   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Ja der wird nur einmal übergeben und nicht bei jedem Aufruf neu, da du ja das Intervall damit gestartet hast.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 09-09-2005, 11:46   #3 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
So gehts.
ActionScript:
  1. test_mc.onPress = function()
  2. {
  3.     testerli = setInterval(testfunktion, 100, [B]this[/B]);
  4.     startDrag(this);
  5. };
  6. test_mc.onRelease = function()
  7. {
  8.     clearInterval(testerli);
  9.     stopDrag();
  10. };
  11. testfunktion = function (_mc)
  12. {
  13.     trace("per parameter: "+[B]_mc._x[/B]);
  14.     trace("direkt: "+test_mc._x);
  15. };
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::

Geändert von psyk (09-09-2005 um 11:47 Uhr)
psyk ist offline   Mit Zitat antworten
Alt 09-09-2005, 11:57   #4 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
Cool, danke funktioniert...
Aber kriege ich es auch hin, auf das "._x" zu verzichten.

Das Problem liegt darin, das der Parameter bei einem Aufruf einen absoluten Wert übergebe und beim nächsten Aufruf eben die jeweils aktuelle x Position.

Sprich einmal:
ActionScript:
  1. testerli = setInterval(testfunktion, 100, 200);
Und beim nächsten Aufruf die x Position:
ActionScript:
  1. testerli = setInterval(testfunktion, 100, this);

Hoffe ich brings verständlich rüber
Seventy6 ist offline   Mit Zitat antworten
Alt 09-09-2005, 12:09   #5 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Kannst ja ne Abfrage starten, um was für ein Objekt es sich handelt.
ActionScript:
  1. function testfunktion (Obj)
  2. {
  3. var x;
  4. // : wenn obj eine Nummer ?  übergib gleich : sonst übergib die Eigenschaft  _x von von Obj
  5. Obj instanceof Number ? x=Obj : x=Obj._x
  6.         trace("per parameter: "+ x);
  7.         trace("direkt: "+test_mc._x);
  8. };
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 09-09-2005, 12:30   #6 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
Gute Idee ...
Aber leider wird die Bedingung nicht erfüllt, wenn ich eine Zahl übergebe, bei "this" funktioniert es wunderbar

Hab auch mal
ActionScript:
  1. trace(Obj);
  2. if (Obj instanceof Number == true)trace("zahl");
probiert, bekomme aber nur die Ausgabe von Obj ...
Seventy6 ist offline   Mit Zitat antworten
Alt 09-09-2005, 12:37   #7 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
So, hab es jetzt mit isNaN gelöst, keine Ahnung ob das praktikabel ist, aber zumindest funktioniert es
ActionScript:
  1. isNaN(Obj) ? x=Obj._x : x=Obj
Vielen Dank für die Hilfe
Seventy6 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:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele