Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-11-2003, 14:19   #1 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 36
Objekt ansprechen. Egal wo. "Eine Art Referenz/Verknüpfung setzen?!"

Ist es möglich für ein Objekt eine Art Referenz zu setzen?
Nehmen wir an, es wird zu irgendeinem Zeitpunkt auf irgendeiner Ebene/Movieclip ein bestimmtes Objekt "attached".

Dieses möchte ich von allen Ebenen/Movieclips ansprechen können. (Variablen, Eigenschaften wie _x, _y...)

Wie würdet ihr das lösen?

Gibt es soetwas, wie eine Art Referenz?
ungefähr in der Art:

in der Onload funktion des wiederzufindenden Objektes:
_root.Objektverknuepfung=this


später würde ich dann das Objekt, welches sich ja irgendwo befindet einfach mit zum Beispiel _root.Objektverknuepfung._y+=150 verschieben...

Kann man soetwas ähnliches machen?
steffenreu ist offline   Mit Zitat antworten
Alt 01-11-2003, 14:26   #2 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
hmm, also ich hab glaub ich nicht ganz verstanden was du meinst, aber vielleicht damit:

_root.attachMovie("deinClip");

with ("deinClip") {
_y = ...
_x = ...
_width = ...
}

und so weiter...

da kannste halt die ganzen Eigenschaften eingeben, meinste sowas?
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 01-11-2003, 14:34   #3 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 36
Nein. Dann wäre es ja einfach... Der Movie wäre dann ja definitiv auf der Rootebene zu finden und anzusprechen.

Das Problem ist, das der Movieclip (der attached wurde) irgendwo liegt... Er wird halt dynamisch zu irgendeinem Zeitpunkt irgendeiner Ebene zugeordnet. Und diesen möchte ich ansprechen, obwohl ich nicht weiss, wo er liegt.

Beim attachen weiss ich ja wo er liegt. Diese Information will ich irgendwo hinterlegen und dann später über diese Verknüpfung die Eigenschaften des Movieclips ändern.

...Mhmmm.
steffenreu ist offline   Mit Zitat antworten
Alt 01-11-2003, 14:37   #4 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. function my_Class()
  2. { 
  3. o=this
  4. }
  5.  
  6. Object.registerClass("mc",my_Class);
  7.  
  8.  
  9. bt.attachMovie('mc','mc1',0)
  10.  
  11.  
  12. o._x +=100

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 01-11-2003, 14:43   #5 (permalink)
-------------------------
 
Benutzerbild von Marpfei
 
Registriert seit: Jul 2002
Ort: Zürich
Beiträge: 159
Leg einfach die Referenz zu dem Movie schon beim Attachen in eine globale Variable,
dann kannst Du es von überall ansprechen, egal wo es liegt:

ActionScript:
  1. _global.movie01 = this.attachMovie("mc1", "clip1", 500);

Globale Variablen sind aber langsam....

lg, Marpfei
Marpfei ist offline   Mit Zitat antworten
Alt 01-11-2003, 15:19   #6 (permalink)
Neuer User
 
Registriert seit: May 2002
Beiträge: 36
Re.

@Marpfei:

okay. genau das wäre es. einfachste version wenn ich es aber auf _root oder _level0 lege. dann wäre es doch schneller?
apropos:
um wieviel nanosekunden handelt es sich hierbei? ;-)

@warrantmaster:
Danke. Auch eine Gute Lösung. Insbesondere Ausbaufähig...
Wie sieht es aus, wenn ich mehrere Instanzen instanziieren möchte?
o._x ist ja fixed...

wär klasse, wenn ich das noch erfahren könnte.
steffenreu ist offline   Mit Zitat antworten
Alt 01-11-2003, 15:51   #7 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
in dem fall brauchst du einen counter,
um die instanzen nicht zu überschreiben.


ActionScript:
  1. function my_Class()
  2. {        i ++;
  3.         _root['o'+i]=this
  4. }
  5.  
  6. Object.registerClass("mc",my_Class);
  7.  
  8.  
  9. bt.attachMovie('mc','mc1',0,{m:100})
  10. bt.attachMovie('mc','mc2',1,{m:300})
  11.  
  12. o1._x +=o1.m
  13. o2._x +=o2.m
  14. o1.onPress=function(){
  15.     trace(this.m)
  16. }
  17. o2.onPress=function(){
  18.     trace(this.m)
  19. }
warrantmaster ist offline   Mit Zitat antworten
Alt 02-11-2003, 11:58   #8 (permalink)
-------------------------
 
Benutzerbild von Marpfei
 
Registriert seit: Jul 2002
Ort: Zürich
Beiträge: 159
@ warrantmaster:
Dein Weg ist natürlich die eleganteste MX-konforme Lösung, die am ausbaufähigsten ist

@ steffenreu:
Um wieviel langsamer globale Variablen sind, weiss ich nicht. Kommt einfach
auf den Code an.
3D-Anwendungen würde ich nicht mit globalen Variablen programmieren

lg,
marpfei
Marpfei ist offline   Mit Zitat antworten
Alt 02-11-2003, 13:43   #9 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ich benutze oft sowas wie eine zentrale Registrierung für MovieClips.
Eigentlich ähnlich wie warrantmaster das macht, nur mit Namen anstatt Indices.

ActionScript:
  1. _level0.ClipRegister = new Object();
  2.  
  3. _level0.ClipRegister.registerClip = function( name, mc){
  4.        this[name] = mc;
  5. }
  6.  
  7. _level0.ClipRegister.getClipRef = function( name){
  8.        if( this[name] == null){
  9.               trace("Error: Clip undefined: " + name);
  10.               return null;
  11.        } 
  12.        return this[name];
  13. }

Damit kannst du dann von überall her deine Clips registrieren
und später darauf zugreifen:
ActionScript:
  1. // der MovieClip registriert sich selbst
  2. _level0.ClipRegister.registerClip("tollerClip", this);
  3.  
  4. // bei der Benutzung brauchen wir nur den Namen
  5. _level0.ClipRegister.getClipRef("tollerClip")._x += 30;

mfg .r
bokel 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 23:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele