Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-11-2005, 19:00   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Eine Funktion für mehrere Objekte

Aloha!
Ich habe ein Verständnisproblem bezüglich globaler Funktionen und hoffe jemand hat hier vielleicht einen Rat für mich.

Auf Bild 1 meiner Hauptzeitleiste habe ich mehrere Objekte, auf die ich eine Funktion anwenden möchte. Jedes Objekt bekommt folgenden Funktionsaufruf:
Code:
onClipEvent(enterFrame){moveit(_root.x1 , _root.y1); }
x1 und y1 stehen für die Koordinaten des Objektes. Beim zweiten Objekt würde ich also auf x2 bzw. y2 zugreifen. Die Koordinaten kommen aus einem Textdokument.

Die Funktion selber liegt ebenfalls im 1 Bild der Hauptzeitleiste und könnte z.B. so aussehen:
Code:
_global.moveit = function(x,y) {
		_x += x - _x;
		_y += y - _y;
}
Mein Problem ist, dass die Funktion nicht auf das Objekt angewendet wird, sondern auf den Hauptfilm - obwohl sie vom Objekt aufgerufen wird. Wie kann ich eine globale Funktion erstellen, die sich auf das aufrufende Objekt auswirkt?

Vielen Dank schonmal!
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 28-11-2005, 19:03   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Übergebe doch noch den MovieClip
als Argument. moveit(wer,x,y).... usw.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 28-11-2005, 19:16   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Das macht Sinn, nur bekomme ich es nicht hin ;-) Ich habe jetzt testweise einer Instanz den Instanznamen obj1 gegeben und Funktionsaufruf + Funktion um diese Parameter erweitert. Allerdings verstehe ich nicht wie ich jetzt darauf zugreifen soll. Der Instanzname ist als in der Funktion als String erhalten und lässt sich auch mittels trace(obj); ausgeben, aber wie greife ich darauf zu? Z.B. _root.obj._visible = false; funktioniert nicht, denn obj ist ja kein Objekt, sondern eine Variable, die den Objektnamen als String enthält.

Gruß
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 28-11-2005, 19:39   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
ahhh, natürlich... der objektname darf nicht in Anführungszeichen stehen! Jetzt klappt's! Vielen Dank!
Benjamecho ist offline   Mit Zitat antworten
Alt 28-11-2005, 20:31   #5 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Noch eine nette Lösung geht mit prototype

PHP-Code:
MovieClip.prototype.moveit = function(x,y) {
    
_x += _x;
    
_y += _y;

movieclip.moveit()
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 28-11-2005, 22:10   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Die Lösung hätte mir noch besser gefallen, allerdings funktioniert es bei mir nicht. Anstelle des Objektes wird wieder der Hauptfilm/ die gesamte Bühne bewegt.

movieclip.moveit()

"movieclip" steht hier für den Instanznamen, oder? Kann man sonst noch etwas falsch machen?

Mein Film hat momentan 12 Objekte, deren Koordinaten 50x/Sekunde aus einem Textdokument gelesen werden. Ein externes Java-Programm schreibt die Koordinaten (in Prozentwerten) in das Dokument. Ich denke selbst mit einem Leistungsstarken Rechner komme ich hier schon fast an die Grenzen von Flash, daher ist es mir wichtig, dass das Script so schnell wie möglich ist, leider sind meine ActionScript Kentnisse etwas begrenzt ;-) Die Fla wird später als Vorlage in einem Kurs der Uni-Freiburg verwendet werden - ich mache dort als freiwilliger Teilnehmer mit. Die aktuelle Version lade ich hier mal hoch und würde mich sehr über Verbesserungsvorschläge freuen!
Angehängte Dateien
Dateityp: zip multiobject.zip (6,1 KB, 6x aufgerufen)

Geändert von Benjamecho (28-11-2005 um 22:16 Uhr)
Benjamecho ist offline   Mit Zitat antworten
Alt 29-11-2005, 06:27   #7 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Ich habe nicht in Deine Datei geschaut,
aber Du musst mit 'this' den scope auf
den jeweiligen MC setzen.

PHP-Code:
MovieClip.prototype.moveit = function(xy) {
    
this._x x;
    
this._y y;
};

_root.bild.moveit(2010); 
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 29-11-2005, 07:22   #8 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
Du schreibst mit java in eine datei und liest gleichzeitig mit flash diese datei aus?
Nicht so ganz die wirtschaftlichste Lösung...

es gibt sowas wie XMLSockets, Local Connections, FSCommands, ...

Damit kannst du Schnelle Datenverbindungen aufbauen, ohne Die Festplatten-Wartezeiten miteinzubeziehen.

XMLSocket: Netzwerkverbindung, ala Server/Client (auch lokal)
Local Connection: Datenaustausch zwischen 2 SWFs die am gleichen System laufen (vl. lässt sich das tweaken von Flash-Flash auf Java-Flash)
FSCommands: Wenn Flash als ActiveX eingebunden wird, ...
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 29-11-2005, 12:21   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
Da hast Du recht. Ein XMLSocket dürfte hier wohl die beste Lösung sein, allerings habe ich sowas noch nie gemacht. Dem Programmierer des Java-Programms kann ich schon Vorgaben machen (Port, Struktur + Format des Dokumentes), hier muss ich mir erstmal Gedanken machen, wie so ein XML-File aussehen müsste und wie ich es einlesen kann. Ich werde mich mal damit beschäftigen. Danke Euch!

Gruß
Ben
Benjamecho ist offline   Mit Zitat antworten
Alt 29-11-2005, 13:19   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Freiburg
Beiträge: 74
@thebiz: Danke, jetzt funktioniert's auch mit prototype!
Benjamecho 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 07:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele