Anzeige

Was bedeutet eigentlich this?

Was bedeutet eigentlich this? | PSD-Tutorials.de

Erstellt von shadow_eye, 27.06.2006.

  1. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    Ich habe ein Problem...
    Die Hitze macht mir zu schaffen.
    Das ist aber egal.
    :?

    Viel interessanter ist Flash. Dazu habe ich mir ein Buch geleistet, so schön mit Beispielen, etc.

    Nun komme ich aber nicht weiter.
    Da ist ständig von "this" die Rede, aber was bedeutet dieses Wörtchen eigentlich?
    Ich kann nur
    finden.
    Außerdem würde mich auch der Unterschied zu _root sehr interessieren.

    Konkretes Beispiel:

    möchte eine Funktion schreiben, die einen MC Punkt einsetzt.
    Ich fand hier ein tutorial zu attachMovie, aber mit this kann ich trotzdem nichts anfangen.
    Danach soll dieser neue "Punkt" verschoben werden.

    Wie geht das?

    @schinki: Habe Version MX 2004, mit den titeln muss ich dir voll und ganz zustimmen, die sind teilweise echt gräßlich, wenn man versucht, etwas in der Forensuche zu finden, deshalb habe ich dies hier auch geschrieben, weil ich echt kaum Zeit zu suchen habe.
     
    #1      
  2. CHALOC

    CHALOC Nicht mehr ganz neu hier

    Dabei seit:
    30.11.2005
    Beiträge:
    65
    Was bedeutet eigentlich this?
    Das ist doch ganz einfach.

    Mit "this" sprichst du immer den mc an in dem dein AS liegt.
    this ist dann eben das oder der.
    Hat mit _root nichts zu tun.

    zB. du hast einen mc punkt und in diesen willst du kopieren.
    Dann schreibst du auf den mc punkt ein AS mit duplicatMovieclip und spricht den mc punkt mit this an. Noch ein paar Koordinaten dazu und bei enterFrame wird der Punkt (eben "this") an die gewünschte Stelle kopiert.

    Hoffe das ist verständlich, mir macht die Hitze auch zu schaffen.

    Sonst hilft dir sicher Schinki weiter.

    Gruss
    CHALOC

    PS: Ich weiss schon warum ich keine TUT´s schreibe. Würde keiner verstehen.
     
    #2      
  3. heLL84

    heLL84 Nicht mehr ganz neu hier

    Dabei seit:
    23.05.2005
    Beiträge:
    157
    Geschlecht:
    männlich
    Ort:
    Obertraubling
    Software:
    Photoshop, Illustrator, InDesign, Dreamweaver, Flash, Cinema 4D
    Kameratyp:
    Canon EOS 600D
    Was bedeutet eigentlich this?
    Hi Shadow_eye,

    Ein kleines Bsp. für _root
    Du hast einen neuen Flash film erstellt mit dem Namen Intro. Jetzt hast du einen MovieClip auf deinem Arbeitsbereich platziert mit dem Instanznamen "Intro1". Im Intro1 hast du wieder einen MovieClip mit dem Instanznamen "Intro2". Nachdem er Intro 1 abgespielt hat willst du ins Intro2 springen und dieses weiterlaufen lassen , dies erfolgt dann mit folgendem Befehl.

    _root.intro1.intro2.gotoAndPlay();

    Ich hoffe du hast verstanden was ich meine .

    _root heisst dass er am Anfang deines Hauptfilmes springt und danach kommt deine Pfadangabe (instanzen)
     
    #3      
  4. schinki

    schinki Aktives Mitglied

    Dabei seit:
    29.03.2006
    Beiträge:
    398
    Geschlecht:
    männlich
    Ort:
    Berlin
    Was bedeutet eigentlich this?
    Hallo,


    zum Thema _root.:
    Stell dir Flash und seine Ebenen einfach wie die Ordnerstruktur unter Windows vor.
    Nur das anstelle von dem Slash (/) ein Punkt für die Pfadangabe in Flashbenutzt wird.

    Windows = C:\Dokumente und Einstellungen\All Users\Dokumente
    Flash = _root.Dokumente_und_Einstellungen.All_Users.Dokumente

    Mit _root. verweisst du in FLash auf die Hauptebene, sowie C: unter Windows.

    In Flash haben wir natürlich keine Ordner. Dafür aber MovieClips.
    Diese kann man ja auch ineinander verschachteln so wie du in einem Ordner einen neuen Ordner erstellen kannst.

    Wenn du nun also einen deiner MovieClips per AS ansprechen möchtest
    dann kannst du das direkt über so einen Pfad machen.

    Merke:
    Mit Ebenen sind nicht die Ebenen in der Zeitleiste gemeint.
    Die Ebenen in der Zeitleiste nennen sich "tiefe". Zu englisch depth.


    Zum Thema this.:

    [php:1:48cf22d0d0]
    dein_Clip.onPress = function(){
    this.gotoAndPlay(2);
    }
    [/php:1:48cf22d0d0]

    In diesem fall sprechen wir unseren MovieClip in der Funktion mit this an.
    Wir könnten aber auch "dein_Clip.gotoAndPlay(2);" schreiben.
    Das macht kein Unterschied ist aber länger.
    This bezieht sich in diesem Fall nur auf unseren MovieClip.


    Ich hoffe du hast das verstanden.
    Wenn du noch fragen hast dann schiess los.


    LG Schinki
     
    #4      
  5. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    ist ja wunderbar hier

    Also, erstmal, danke für die Hilfe.

    Aber ja, ich habe noch Fragen...

    @CHALOC: Kannst du mir mal konkret aufschreiben, wie ich den MC Punkt kopieren soll?
    Ich dachte, das macht man mit attachMovie, so einen neuen reinsetzen. Was macht dann DuplicateMovieClip? Und wie soll ich auf den zur Laufzeit erstellten MC Punkt etwas "enterFrame" reinschreiben, um ihn an die gewünschte Position zu schieben?
    Du kannst natürlich zu dem Thema auch ein tutorial schreiben, wenn du willst, dein Erklärstil geht eigentlich. Kann dir ja mal das gesamte Beispiel zusenden-->PM!

    @alle: Mal eine andere, unwichtige Frage: Findet ihr nicht auch die Schreibweise von Befehlen in Flash grauenhaft, in der mitte mAl wAS gRoß, kAnn maN jA gaR nIcH lesen!
     
    #5      
  6. schinki

    schinki Aktives Mitglied

    Dabei seit:
    29.03.2006
    Beiträge:
    398
    Geschlecht:
    männlich
    Ort:
    Berlin
    Was bedeutet eigentlich this?
    Re: ist ja wunderbar hier


    Der unterscheid zwischen attachMovieClip und DuplicateMovieClip ist folgender:

    Bei attach holst du dir einen MovieCLip aus deiner Bibliothek.
    Bei Duplicate kannst du einen auf der Bühne vorhandenen MovieClip Duplizieren.
    Mehr ist es nicht.


    @alle
    Also ich komme mit der Scheibweise klar. Übung übung übung. :wink:
    Schlimmer wirds erst mit AS 3


    LG Schinki
     
    #6      
  7. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    wie duplizieren?

    Was meinst du mit duplizieren?

    Außerdem dachte ich, dass sich auf der Bühe nur Instanzen befinden.
    Wenn ich jetzt einen MC habe mit zwei Instazen, den ich dubliziere, habe ich dann vier Instanzen übereinander, oder wie?

    Tut mir Leid, wenn ich etwas mit Unverständnis nerve, aber mein Buch schweigt nunmal!
     
    #7      
  8. schinki

    schinki Aktives Mitglied

    Dabei seit:
    29.03.2006
    Beiträge:
    398
    Geschlecht:
    männlich
    Ort:
    Berlin
    Was bedeutet eigentlich this?
    Ein MovieClip ist eine Instance!
    Es ist beides das selbe!

    Wenn du einen MovieClip nun duplizierst dann hast du zwei auf der Bühne.
    Zwillinge!

    Beim attachen hast du nur einen auf der Bühne.
    Denn du kopierst ihn dir ja aus der Bibliothek.
    Es ist im Prinzip das selbe wie Duplicate, nur dass das Original in der Bibliothek bleibt.


    LG Schinki
     
    #8      
  9. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    jaaa, klingt unlogisch

    jaaa, klingt unlogisch!

    Was will ich mit zwei Funktionen, die dasgleiche bewirken, aber unterschiedlich heißen?
    Aber, naja, kann man nicht ändern.

    Hauptsache, ab AS 3 wirds noch schlimmer!!

    :lol:
     
    #9      
  10. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Was bedeutet eigentlich this?
    Hallo,

    attachMovie und duplicateMovieClip sind nicht ganz identisch. Da duplicateMovieClip eine bereits existierende Instanz auf der Bühne dupliziert, besitzt das Duplikat die Eigenschaften der bestehenden Instanz, unabhängig davon, wie das Original in der Bibliothek aussieht. Beispiel: in der Bibliothek liegt ein Rechteck (MovieClip, Breite und Höhe 50 Pixel), das auf der Bühne händisch eingefügt und auf 100 Pixel Höhe und Breite skaliert wurde. Beim Duplizieren per Skripting ist das Duplikat natürlich genau so groß wie die Instanz und damit doppelt so groß wie das Original.

    AttachMovie dagegen erstellt immer eine Instanz (vereinfacht ausgedrückt: Kopie) des Originals in der Bibliothek und übernimmt dabei dessen Eigenschaften, nicht aber die von irgendwelchen Instanzen, die bereits auf der Bühne liegen.

    Das mag jetzt pedantisch klingen, macht aber durchaus einen großen Unterschied, etwa wenn die Instanz auf der Bühne bereits per Skripting geändert wurde, man aber die Originaleigenschaften bei einer Kopie benötigt. AttachMovie ist zudem flexibler da man den zeitpunkt, zu dem man die kopie benötigt, exakt per Skripting definieren kann, während bei duplicateMovieClip in jedem Fall eine Instanz auf der Bühne liegen muß. Z.B. wenn man per Mausklick 10 Kopien erstellen möchte, aber nicht weiß, wann der User klickt, dann müsste man bei duplicateMovieClip in jedem Fall eine Instanz auf die Bühne legen (_visible = false oder auf -1000,-1000), während man mit attachMovie eben so lange warten kann, bis tatsächlich ein Klick erfolgt.

    Nachtrag zu this: irgendwo in einem Beitrag steht drin, es sei länger, mit Instanznamen zu arbeiten als mit this. Damit diese Aussage nicht mißverstanden wird: die Länge spielt keine Rolle. Der entscheidende Punkt ist die Objektreferenz über this. AS ermittelt über this selbständig die Instanz, auf den dieser Bezeichner verweist, und zwar auch dann, wenn sich der Instanzname oder der Pfad des zugeordneten Objekts ändert. Das verrringert die Fehleranfälligkeit beim Skripten enorm. Beispiel: wenn wir einem mc namens kreis ein enterFrame zuweisen und innerhalb des Befehlsblocks this verwenden, weiß Flash, um wen es sich handelt, auch wenn sich der Name des Objekts in roterKreis oder wie auch immer ändert. Das gilt auch dann, wenn wir den kreis in einen anderen mc einfügen, also verschachteln, und die Instanz jetzt beispielsweise rechteck.kreis heißt.


    Viel Spaß
     
    #10      
  11. schinki

    schinki Aktives Mitglied

    Dabei seit:
    29.03.2006
    Beiträge:
    398
    Geschlecht:
    männlich
    Ort:
    Berlin
    Was bedeutet eigentlich this?
    Das war ausführlich.....danke für die Mühe!
    Weiter so.....


    LG Schinki
     
    #11      
  12. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    Danke, ich glaub jetzt hab ichs verstanden!

    Super, eine solch ausführliche Antwort!

    Nur noch eine klitzekleine Frage und dann ist mein Projekt so gut wie fertig:

    Wo definiere ich am besten Funktionen?

    a) Auf Bildern (Zeitleiste)
    b) Auf MCs
    c) woanders?

    Ich weiß, es geht überall, aber ich kann z.B. nicht eine auf einem Bild definierte Funktion mit einer Schaltfläche zugreifen.
     
    #12      
  13. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Was bedeutet eigentlich this?
    Hallo,

    von Macromedia (und jetzt: Adobe) offiziell empfohlen wird die Verwendung von Bildskripten anstelle von Objektskripten. Im Idealfall hat man nur ein einziges Bildskript (im ersten oder zweiten Frame von _root bzw. des ersten aus html heraus geladenen swf), so daß man bei eventuellen Änderungen auch nur an einer einzigen Stelle suchen muß. Näheres dazu findet man in einem pdf auf der Herstellerseite: as_best_practices.pdf, herausgegeben schon kurz nach dem Erscheinen von Flash MX.

    Allerdings: das gilt nicht nur für die Funktionsdefinitionen, sondern komplett für alle Skripte. Es werden also sowohl die Ereigniszuweisungen, die Eigenschaftsdefinitionen, Variableninitialisierungen und was sonst noch so in einem Skript auftaucht direkt in ein Bildskript geschrieben.

    Beispiel: Du hast einen Button namens b_start, der bei Mausklick eine Funktion spiel() aufruft. Dann lautet das Bildskript in _root:

    b_start.onPress = function(){
    spiel();
    }

    (Ok, ginge noch kürzer, da man einzeilige Anweisungen direkt dem Ereignis zuweisen kann, aber muß ja nicht sein).

    Der Button selbst erhält kein Skript, weder als Objektskript noch als Bildskript im ersten Frame (falls man einen MovieClip als Button verwendet).

    Diese Vorgehensweise entspricht dem, was man bei höheren Programmiersprachen gewohnt ist und die Strategie der Flashwentwickler war zumindest bisher immer, Flash näher an eine höhere Programmiersprache heranzurücken. Von der Idee her eigentlich gar nicht so schlecht: man stelle sich eine Programmiersprache von der Mächtigkeit von Java vor mit den grafischen Möglichkeiten eines Flash. Mal sehen, was noch alles kommt ...

    Viel Spaß
     
    #13      
  14. schinki

    schinki Aktives Mitglied

    Dabei seit:
    29.03.2006
    Beiträge:
    398
    Geschlecht:
    männlich
    Ort:
    Berlin
    Was bedeutet eigentlich this?
    Das ist auch heute schon Standard in der Flasher Szene.
    Schließlich macht es seit MX auch Sinn, seine Codes im ersten Frame zu setzten.
    Funktionen, Klassen und _global Variablen sind von überall her auf- und abrufbar.

    Seit der localConnection gibt es nicht einmal mehr Probleme über die eigene Domain
    hinaus mit anderen Filmen zu komunizieren.
    Optimal für Präsentationen mit Userschnittstelle auf Messen zum Beispiel.

    Danke für den Beitrag h_seldon!



    LG Schinki
     
    #14      
  15. shadow_eye

    shadow_eye Guest

    Was bedeutet eigentlich this?
    Danke vielmals!

    Mensch, das macht echt Sinn,
    ein Script,
    einen Ort um Fehler zu suchen!

    Endlich Schluss mit der dämlichen Verwirrung in meinem Kopf!
    :oops:

    Jetzt kann ich endlich mein Projekt beenden.
    Vielleicht stelle ich es dann mal hier vor.

    :D
     
    #15      
Seobility SEO Tool
x
×
×