Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-04-2004, 18:57   #1 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
LocalConnection nervt mich :(

ActionScript:
  1. //Swf1
  2. receiver = new LocalConnection();
  3. receiver.getDataGrid = function(x:Array){
  4. for(i in x){
  5. traceSWF("Data [" + i + "] = " + x[i]);
  6. }
  7. }
  8. receiver.connect("DatG");
  9.  
  10.  
  11. //Swf2
  12. sender = new LocalConnection();
  13. sender.send("DatG","getDataGrid",[1,2,3]);
  14. sender.close();

Code:
<embed src="blablablbla.swf" ....... allowScriptAccess="sameDomain" ....... />
es kommen keine Daten an, wieso? Läuft auf der selben Domain
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 27-04-2004, 23:21   #2 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
Hallo L4M4R,

versuchs mal so:

ActionScript:
  1. //Swf1
  2. receiver = new LocalConnection();
  3. receiver.getDataGrid = function(x){ // nicht x: Array
  4.         for(i in x){
  5.                 traceSWF("Data [" + i + "] = " + x[i]);
  6.         }
  7. }
  8. receiver.connect("DatG");
  9.  
  10.  
  11. //Swf2
  12. sender = new LocalConnection();
  13. sender.send("DatG","getDataGrid","1,2,3"); // nicht []
  14. sender.close();

Array's sind als Kommatext zu senden und ggf. mit "split(",")" zu trennen.

Viele Grüße
Holli-K
Holli-K ist offline   Mit Zitat antworten
Alt 01-05-2004, 16:56   #3 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
also arrays kann man direkt verschicken, die müssen nicht zum string gemacht werden. wenn ich statt x:Array nur x schreibe, klappt das auch in flashmx, leider kein mx2004 griffbereit.
michael ist offline   Mit Zitat antworten
Alt 01-05-2004, 18:40   #4 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
das mit dem String war mir klar, find ich aber sehr unelegant gelöst, meine Frage ist was localConnection den bringt wenn man nicht mal Array's verschicken kann?!?! Könnte man ja gleich den Movie in ein Frame packen und per getURL an PHP die Variablen anhängen o.O

*ein verwirrtert und unzufriedener L4M4R*
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 01-05-2004, 19:24   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
Hallo L4M4R,

wieso kannst Du keine Arrays verschicken? Mit "toString()"und "split(",")" ist das doch möglich. Betrachte die Strings als Roh-Daten; - nach dem Empfang sind alle Möglichkeiten offen. Ob LocalConnection oder ServerScript hängt vom Anwendungszweck ab. Immer wenn es um die reine (Fern)Steuerung getrennter MovieClips geht, ist die LocalConnection eine Alternative zum ServerScript.

Viele Grüße
Holli-K
Holli-K ist offline   Mit Zitat antworten
Alt 01-05-2004, 19:28   #6 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
das es anders geht weiss ich wie oben steht, ich will nur wissen warum die Array's net gehen, weil mir das nicht einleuchtet
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 01-05-2004, 20:57   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
Hallo L4M4R,

ich gehe davon aus, dass Dich folgende Scheibweise irritiert:

ActionScript:
  1. sendende_lc.send (verbindungsName, methode [, p1,...,pN])
Wobei p1 ... pN eine Kette von Parametern ist.

Wenn einer Funktion Variablen als Parameter übergeben werden, werden nur die Zeiger auf diese übergeben. Wenn p1 ein Array ist, so wird ein Zeiger von diesem Array übergeben. Dieser Zeiger referenziert den zusammenhängenden Inhalt von 1,2,3 (Dein Bsp.). Wenn als Parameter Array[0] übergeben werden soll, so ist dieser auch so zu übergeben.

Viele Grüße
Holli-K
Holli-K ist offline   Mit Zitat antworten
Alt 01-05-2004, 21:02   #8 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
hallo?

es geht mit arrays, es läuft hier
michael ist offline   Mit Zitat antworten
Alt 01-05-2004, 21:06   #9 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
also doof bin ich nicht, ausserdem übergeb ich params lieber gleich über arguments, geht schneller und effektiver, für private Zwecke, OS ist da ausgeschlossen! Meine Frage ist nicht wie ich das Problem anderst lösen kann, dass weiss ich nämlich, ich will wissen warum der die Parameter übergabe so nicht akzeptiert! Geht schliesslich bei allen Funktionen, nur LC stellt sich quer


[edit]
ok jetzt raff ich gar nix mehr, warum geht das auf einmal?

ActionScript:
  1. receiver = new LocalConnection();
  2. receiver.getDataGrid = function(__arg__){
  3.         for(i in arguments){
  4.                 traceSWF("Data [" + i + "] = " + arguments[i]);
  5.         }
  6. }
  7. receiver.connect("DatG");
  8.  
  9.  
  10. //Swf2
  11. sender = new LocalConnection();
  12. sender.send("DatG","getDataGrid",[1,2,3]);
  13. sender.close();

ich glaub da muss die LC Class mal gehörig umgescriptet werden o.O
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 01-05-2004, 23:13   #10 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
Hallo,

ActionScript:
  1. arguments
an diese Möglichkeit von split bei Funktionen habe ich überhaupt nicht gedacht. Sorry!
Zitat:
also doof bin ich nicht, ...
bist Du natürlich nicht!!

Selbstverständlich kannst Du an Functionen Arrays übergeben und innerhalb dieser mit variable[i] zugreifen. Ich bin davon ausgegangen, dass Du die Parameterübergabe p1 .. pN per Array nachbilden willst. Da hast Du auch mit "arguments[i]" ein Problem.

Zu Deinem Problem:

Ich glaube nicht, dass Du per "arguments[i]" auf das Array zugreifen kannst. Eher auf "arguments[0]" und hier ist der String "1,2,3" (zumindest bei der LocalConnection).

Ich habe Deinen Script kompiliert und im FlashAssembler anzeigen lassen. Der Code der Localconnection unterscheiden sich nicht von anderen Funktionen.
Zitat:
ich glaub da muss die LC Class mal gehörig umgescriptet werden o.O
diesbezüglich hast Du wohl Recht.

@gutknut
Zitat:
..., klappt das auch in flashmx
Bei MX konnte ich leider nur das selbe Problem feststellen.


Viele Grüße
Holli-K
Holli-K ist offline   Mit Zitat antworten
Alt 01-05-2004, 23:39   #11 (permalink)
::: codeslinger :::
 
Benutzerbild von L4M4R
 
Registriert seit: Apr 2003
Ort: schweiz
Beiträge: 725
ne da liegst Du leider falsch wie das folgende Beispiel beweisst
ActionScript:
  1. argumentsCaller = function(__arg__){
  2.     for(i in arguments){
  3.         switch(typeof(arguments[i])){
  4.         case "string" : trace("VAR string[" + i + "] = " + arguments[i]); break;
  5.         case "number" : trace("VAR number[" + i + "] = " + arguments[i]); break;
  6.         case "object" : for(var x in arguments[i]){trace("VAR object[" + x + "] = " + arguments[i][x]);}; break;
  7.         }
  8.     }
  9. }
  10. argumentsCaller(1,2,3,[4,5,6],{x:"ich bin X", y:"ich bin Y"});
  11.  
  12. //VAR object[x] = ich bin X
  13. //VAR object[y] = ich bin Y
  14. //VAR object[2] = 6
  15. //VAR object[1] = 5
  16. //VAR object[0] = 4
  17. //VAR number[2] = 3
  18. //VAR number[1] = 2
  19. //VAR number[0] = 1
  20.  
wie Du sieht werden Array's als Objekte übergeben, von daher würde arguments[0] nur den 1. Parameter der Funktion argumentsCaller ausgeben, nicht aber p1 - pN. Das ganze kann sogar noch mehrdimensional aufgebaut sein, warum aber die Funktion LC die übergabe von Array's strikt verweigert ist mir nicht logisch, aber dank prototype Funktionen kann man sich ja die Klasse umschreiben, dann geht's vielleicht
__________________
Am Anfang schuf Gott das Advanced Research Projects Agent Network, dass auf den Namen ARPAnet getauft wurde, und das ARPAnet wuchs und gedieh und zeugte das Milnet, und das ARPAnet und das Milnet zeugten das Internet, und das Internet und seine Nachkommen, USENET Newsgroups und das World Wide Web, wurden zu einer Dreifaltigkeit, die das Leben seines Volkes für alle Zeiten grundlegend veränderte. L4M4R
L4M4R ist offline   Mit Zitat antworten
Alt 02-05-2004, 00:13   #12 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
@gutknut: Unter 2004 klappts prima mit dem Code aus dem ersten Posting.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 02-05-2004, 00:18   #13 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
Hallo L4M4R,

sorry, ich bin davon ausgegangen:
ActionScript:
  1. argumentsCaller = function(__arg__){
  2.     trace(arguments[6])
  3.         for(i in arguments){
  4.                 switch(typeof(arguments[i])){
  5.                         case "string" : trace("VAR string[" + i + "] = " + arguments[i]); break;
  6.                         case "number" : trace("VAR number[" + i + "] = " + arguments[i]); break;
  7.                         case "object" : for(var x in arguments[i]){trace("VAR object[" + x + "] = " + arguments[i][x]);}; break;
  8.                 }
  9.         }
  10. }
  11. a =Array(Parameter1,Parameter2,Parameter3);
  12. argumentsCaller(a);
  13. //als Arsatz für argumentsCaller(Parameter1,Parameter2,Parameter3);
  14.  

Zitat:
Eher auf "arguments[0]" und hier ist der String "1,2,3" (zumindest bei der LocalConnection).
Damit habe ich gemeint, dass die folgende Funktion nur auf arguments[0] zugreift, da arguments.length = 1 ist.
ActionScript:
  1. receiver = new LocalConnection();
  2. receiver.getDataGrid = function(__arg__){
  3.         for(i in arguments){
  4.                 traceSWF("Data [" + i + "] = " + arguments[i]);
  5.         }
  6. }
  7. receiver.connect("DatG");
  8.  
  9.  
  10. //Swf2
  11. sender = new LocalConnection();
  12. sender.send("DatG","getDataGrid",[1,2,3]);
  13. sender.close();

Desshalb kann ich mir nicht vorstellen, dass das plötzlich geht und wenn ja wie.

Viele Grüße
Holli-K
Holli-K ist offline   Mit Zitat antworten
Alt 02-05-2004, 01:20   #14 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 49
so sollte es funktionieren:

ActionScript:
  1. //Swf1
  2. receiver = new LocalConnection();
  3. receiver.getDataGrid = function(__arg__){
  4.     trace(arguments.length);        // = 1
  5.     trace(arguments[0].length)    // = 3
  6.     for(i in arguments[0]){
  7.         trace(arguments[0][i]);  
  8.     }
  9. }
  10. receiver.connect("DatG");
  11.  
  12.  
  13. //Swf2
  14. a1 = new Array(1,2,3);
  15. sender = new LocalConnection();
  16. sender.send("DatG","getDataGrid", a1); // oder auch sender.send("DatG","getDataGrid", [1,2,3])
  17. sender.close();

PS: Ich glaube bokel und gutknut haben Recht, Du solltest beim Script aus dem ersten Posting bleiben.

Viele Grüße
Holli-K

Geändert von Holli-K (02-05-2004 um 01:43 Uhr)
Holli-K 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 18:57 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele