Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2005, 12:37   #1 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
Arrayproblem (oder was anderes?)

Hi,

Vielleicht liegt's an der Konzentration - aber ich blick nimmer durch
Hab folgenden Code und will bei gedrückter Maus die x/y Koordinaten des Mauszeigers in jeweils ein Array speichern:
ActionScript:
  1. onMouseDown = function(){
  2.     var clickX:Array = new Array();
  3.     var clickY:Array = new Array();
  4.     var clickID:Number = 0;
  5.     setClick = function(){
  6.         var cx:Number = _xmouse;
  7.         var cy:Number = _ymouse;
  8.         clickX.push(cx);
  9.         clickY.push(cy);
  10.     }
  11.     setClickID = setInterval(setClick,100);
  12.     trace(clickX[clickID]);
  13. }
  14. onMouseUp = function(){
  15.     clearInterval(setClickID);
  16. }

Aber alles was Flash mir da ausgibt ist undefined

typeof clickX/Y gibt mir object und clickID number

Please Flashforum - pimp my Script
XLR8R ist offline   Mit Zitat antworten
Alt 22-09-2005, 12:44   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi.

Stopfe mal das trace in die Funktion,
dann siehst Du den Wert.
ActionScript:
  1. onMouseDown = function () {
  2.     var clickX:Array = new Array();
  3.     var clickY:Array = new Array();
  4.     var clickID:Number = 0;
  5.     function setClick() {
  6.         var cx:Number = _root._xmouse;
  7.         var cy:Number = _root._ymouse;
  8.         clickX.push(cx);
  9.         clickY.push(cy);
  10.         trace(clickX[clickID]);
  11.     }
  12.     setClickID = setInterval(setClick, 100);
  13. };
  14. onMouseUp = function () {
  15.     clearInterval(setClickID);
  16. };
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-09-2005, 12:47   #3 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
tatsächlich

aber wie kann ich dann außerhalb der funktion auf clickX[clickID] zugreifen?

Geändert von XLR8R (22-09-2005 um 12:52 Uhr)
XLR8R ist offline   Mit Zitat antworten
Alt 22-09-2005, 12:53   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Joa stimmt.
Variablen in einer Funktion, dei mit var gekennzeichnet sind,
sind nur innerhalb der Funktion gültig.
Kannst auch einfach nur das var weglassen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-09-2005, 12:54   #5 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
argh ich bin ein heini

hatte den trace einfach in der funktion gelassen...
--> _global. bringt auch nichts
XLR8R ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:01   #6 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Naja das funktioniert so halt nicht.
Wenn trace außerhalb der Funktion aufgerufen
wird, ist noch nichts ins Array ge-pushed worden.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:22   #7 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
Hab eine Lösung gefunden - aber einleuchten tut sie mir noch nicht
ActionScript:
  1. onMouseDown = function(){
  2.     var _clickX:Array = new Array();
  3.     var _clickY:Array = new Array();
  4.     var _clickID:Number = 0;
  5.     setClick = function(){
  6.         var cx:Number = _xmouse;
  7.         var cy:Number = _ymouse;
  8.         _clickX.push(cx);
  9.         _clickY.push(cy);
  10.         clickX = _clickX;
  11.         clickY = _clickX;
  12.         clickID = _clickID;
  13.     }
  14.     setClick();
  15.     setClickID = setInterval(setClick,100);
  16.    
  17. }
  18. onMouseUp = function(){
  19.     clearInterval(setClickID);
  20.     trace(clickX[clickID]);
  21. }

Hab also einfach alle Werte, die ich global benutzen will in neue Variablen kopiert und diese können dann seltsamerweise ausgelesen werden

Anders geht's auch, wenn ich die Arrays und Vars außerhalb des onMouseDown definiere. Ist etwas eleganter als das mit den ZwischenspeicherVars

Geändert von XLR8R (22-09-2005 um 13:35 Uhr)
XLR8R ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:37   #8 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Lasse mal das setClick() weg
und behalte die Maustaste etwas gedrückt, bevor
Du sie loslässt.

Durch das setInterval mit 100ms, dauert es
ein wenig, bis das Array gefüllt wird.

Nur zum Verständnis.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:40   #9 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
jo des is schon klar - gerade deswegen ist ja das setClick() da
XLR8R ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:45   #10 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Ei die alte Variante funktioniert doch auch.

ActionScript:
  1. onMouseDown = function () {
  2.     var clickX:Array = new Array();
  3.     var clickY:Array = new Array();
  4.     var clickID:Number = 0;
  5.     function setClick() {
  6.         var cx:Number = _xmouse;
  7.         var cy:Number = _ymouse;
  8.         clickX.push(cx);
  9.         clickY.push(cy);
  10.     }
  11.     setClick(); // wenn das hier dabei steht, damit es rasch genug geht
  12.     setClickID = setInterval(setClick, 100);
  13.     trace(clickX[clickID]);
  14. };
  15. onMouseUp = function () {
  16.     clearInterval(setClickID);
  17. };
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:49   #11 (permalink)
Benjamin Bojko
 
Benutzerbild von XLR8R
 
Registriert seit: Jan 2003
Ort: Berlin
Beiträge: 59
hoplla - damit hätten wir ja schon drei lösungen - klasse
danke dir!
XLR8R 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 12:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele