Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Erreignis auf Taste mit attachmovie

  1. #1
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134

    Erreignis auf Taste mit attachmovie

    Hallo Flasher,
    ich habe ein Problem Erreignisse auf eine Taste, die ich mit der Methode attachmovie(...) von der Bibliothek auf der Bühne gesetzt habe.
    Hier ist der Quellcode, falls jemand eine Idee hätte.

    Danke an Allen


    PHP-Code:
    // AS Code

    function line(endx:Number)
    {
       
    this.createEmptyMovieClip("a_mc",0);
       
       
    with(a_mc)
       {
          
    lineStyle(2,0x000000,100);
          
    moveTo(10,100);
          
    this.onEnterFrame = function():Void
          
    {
             if(
    endx<500)
             {
                
    lineTo(endx+=15,100);
             }
             
             else
             {
                
    delete this.onEnterFrame;
                
    attachMovie("weiter_mc","w_mc",2, {_x:300,_y:300});
                
    //w_mc.onPress = function()
    //            {
    //               trace("pressed");
    //            }
                //trace(w_mc);
                //trace("gezeichnet");
             
    }
          }
       }
    }

    // Methodenaufruf
    line(0);

    // Erreigniss auf der Taste
    a_mc.w_mc.onRelease = function()
    {
       
    trace("pressed");

    L&Fdesign

  2. #2
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    versuchs mal so
    PHP-Code:
    function line(endx:Number) {
        
    this.createEmptyMovieClip("a_mc",0);

        
    with (a_mc) {
            
    lineStyle(2,0x000000,100);
            
    moveTo(10,100);
            
    a_mc.onEnterFrame = function():Void  {
                
    trace(this);
                if (
    endx<500) {
                    
    this.lineTo(endx += 15,100);
                } else {
                    
    delete this.onEnterFrame;
                    
    this.attachMovie("weiter_mc","w_mc",2,{_x:300_y:300});
                    
    // Erreigniss auf der Taste
                    
    this.w_mc.onRelease = function() {
                        
    trace("pressed");
                    };
                    
    //w_mc.onPress = function()
                    //            {
                    //               trace("pressed");
                    //            }
                    //trace(w_mc);
                    //trace("gezeichnet");
                
    }
            };
        }
    }

    // Methodenaufruf
    line(0); 
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  3. #3
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hallo Wanderratte,
    danke für die schnelle Antwort.
    Es funktioniert soweit gut, aber ich würde gerne wissen, welche Möglickeit es gibt, wenn die Ereignis auf der Taste in einer anderen Methode oder sogar in einer anderen .as-Datei, liegt.

    Danke
    L&Fdesign

  4. #4
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    Du musst erst die Methode defenieren, wenn das Object auf der Bühne ist, eher gehts nicht.
    Also:
    PHP-Code:
    function setzeButton(obj:MovieClip) {
        switch (
    obj) {
            case 
    _level0.a_mc.w_mc :
                
    obj.onRelease = function() {
                    
    trace("pressed");
                };
                break;
            case 
    _level0.a_mc.g_mc :
                
    obj.onRelease = function() {
                    
    trace("pressed");
                };
                break;
                
    //usw..
        
    }
    }
    function 
    line(endx:Number) {
        
    this.createEmptyMovieClip("a_mc",0);

        
    with (a_mc) {
            
    lineStyle(2,0x000000,100);
            
    moveTo(10,100);
            
    a_mc.onEnterFrame = function():Void  {
                if (
    endx<10) {
                    
    this.lineTo(endx += 15,100);
                } else {

                    
    delete this.onEnterFrame;
                    
    btn_obj this.attachMovie("weiter_mc""w_mc"2, {_x:300_y:300});

                    
    _root.setzeButton(btn_obj);

                }
            };
        }
    }

    // Methodenaufruf
    line(0); 
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  5. #5
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hi,
    hat super funktioniert, danke noch. Leider solbald ich es in einer Klasse einbaue wird die Methode setzeButton(...) nicht meht aufgerufen. Weiss nicht, was falsch gemacht wurde.

    Hier ein Abschnitt des Codes, falls was zu finden wäre.

    Danke

    PHP-Code:

    class net.GUI extends MovieClip // Klasse erbt von der Klasse MovieClip
    {
            
        public function 
    GUI() // Konstruktor
        
    {}    
        
    //
        //Schraegekennlinie zeichnen
        
    public function schraegeKennlinie(startX:NumberstartY:NumberendX:NumberendY:NumberlineInstance:StringlineColor:NumberlineSize:NumbermyAlpha:Numbercount:NumberplusX:NumberplusY:NumbermyDepth:Numberziel:MovieClipmask:MovieClipbtn:MovieClip):MovieClip{
            
    // Linie zeichnen .......................
            
    trace("WARNING: SCHRAEGEKENNLINIE(...)");
            
    //
            
    ziel.createEmptyMovieClip(lineInstancemyDepth); // ziel = diagramm_mc.graphEbene_mc.
            
            
    ziel[lineInstance].setMask(mask); // die Linie wird maskiert, so dass sie nur in einem bestimmten Bereich sichtbar ist.

            
    with(ziel[lineInstance]){
                
    lineStyle(lineSize,lineColor,myAlpha);
                
    moveTo(startX,startY);
                
    //lineTo(endX,endY);
                
                // lassen wir die Linie sich aufzeichnen
                
    onEnterFrame = function():Void{
                    if(
    startX endX && startY endY){
                        
    lineTo(startX+=plusX,startY-=plusY);
                    }
                    else{    
                        
    delete this.onEnterFrame;
                        
    btn_obj this.attachMovie("weiter_mc","w1_mc"this.getNextHighestDepth(), {_x:950_y:600});
                        
    trace("w1_mc: " this.w1_mc);
                        
    trace("btn_obj: " btn_obj);
                        
    _root.setzeButton(btn_obj);    // => hier passiert nichts            
                    
    }
                }
            };    
            return 
    ziel[lineInstance];
        }
        
    //
        // setze MC-Button aus Bibliothe
        
    public function setzeButton(obj:MovieClip):Void    {
            
    trace("WARNING: SETZEBUTTON: " obj);
            switch(
    obj){
                case 
    _level0.w1_mc:
                    
    obj.onRelease = function(){
                        
    trace("_level0.w1_mc pressed");
                    };
                    break;
            }
        }
        
    //

    L&Fdesign

  6. #6
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    Hallo,

    hmmm auf den ersten Blick würde ich mal sagen, lass das _root hier weg
    _root.setzeButton(btn_obj);

    Ansonsten packe mal dein fla samt der Klasse und hänge sie hier mal dran
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  7. #7
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hallo,
    leider geht es nicht auch ohne _root.

    Ich habe die Dateien angehängt.

    Danke
    Angehängte Dateien Angehängte Dateien
    • Dateityp: zip gui.zip (12,0 KB, 13x aufgerufen)
    L&Fdesign

  8. #8
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    sodele
    weiß zwar jetzt nicht ob das die Ideale Lösung ist, da ich im OOP - Bereich nicht gerade fit bin. Aber so gehts auf jedenfall
    Also in der Fla kommt das hier rein:
    PHP-Code:
    import net.gui;
    var 
    gui:gui = new gui();
    var 
    target:MovieClip this.createEmptyMovieClip("mc"this.getNextHighestDepth());

    //Object Gui hinzugefügt 
    gui.schraegeKennlinie(10,400,400,10,"line",0x000000,2,100,1,10,10.18,0,target,gui); 
    dein AS-Datei ersetzt du mit diesem Script
    PHP-Code:
    class net.gui extends MovieClip // Klasse erbt von der Klasse MovieClip
    {
            
        public function 
    gui() // Konstruktor
        
    {
            
    trace("gui");
        }    
        
    //
        //Schraegekennlinie zeichnen
        
    public function schraegeKennlinie(startX:NumberstartY:NumberendX:NumberendY:NumberlineInstance:StringlineColor:NumberlineSize:NumbermyAlpha:Numbercount:NumberplusX:NumberplusY:NumbermyDepth:Numberziel:MovieClipgui:Object):MovieClip{
            
    // Linie zeichnen .......................
            
    trace("WARNING: SCHRAEGEKENNLINIE(...)");
            
    //
            
    ziel.createEmptyMovieClip(lineInstancemyDepth); // ziel = diagramm_mc.graphEbene_mc.
            
            
    with(ziel[lineInstance]){
                
    lineStyle(lineSize,lineColor,myAlpha);
                
    moveTo(startX,startY);
                
    //lineTo(endX,endY);
                
                // lassen wir die Linie sich aufzeichnen
                
    onEnterFrame = function():Void{
                    if(
    startX endX && startY endY){
                        
    lineTo(startX+=plusX,startY-=plusY);
                    }
                    else{    
                        
    delete this.onEnterFrame;
                        
    btn_obj this.attachMovie("weiter_mc","w1_mc"this.getNextHighestDepth(), {_x:300_y:300});
                        
    trace("w1_mc: " this.w1_mc);
                        
    trace("btn_obj: " btn_obj);
                        
    gui.setzeButton(btn_obj);    // => hier passiert nichts            
                    
    }
                }
            };    
            return 
    ziel[lineInstance];
        }
        
    //
        // setze MC-Button aus Bibliothek
        
    public function setzeButton(obj:MovieClip):Void {
            
    trace("WARNING: SETZEBUTTON: " obj);
            switch(
    obj){
                case 
    _level0.w1_mc:
                    
    obj.onRelease = function(){
                        
    trace("_level0.w1_mc pressed");
                    };
                    break;
            }
        }
        
    //

    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  9. #9
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hallo Wanderatte,
    SCHÖNEN DANK.
    Hat mir viel geholfen und das funktioniert auch super. Die Lösung reicht mir für die Aufgabe vollkommen und damit komme ich endlich weiter.

    Danke noch
    L&Fdesign

  10. #10
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hallo W.
    Ich hätte noch eine Frage!

    Ich möchte gern, dass beim Drücken der Taste, eine Methode von einer anderen as-Datei (keine Klasse) aufgerufen wird.
    Geht das überhaupt? oder muss ich eher versuchen aus dieser Datei das "Signal" zu bekommen dass die Taste gedrukt wird?

    Habe da eine Variable in der Klasse erstellt und eine get- und eine set-Funktion erstellt, aber leider geht es nicht.
    L&Fdesign

  11. #11
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    Hallo P

    na sicher geht das, wenn du die .as auf der Timeline includest, dann ist ist im _root vorhanden.

    PHP-Code:
    function aufRufAusKlasse()
    {
        
        
    trace("guckguck");

    PHP-Code:
     public function setzeButton(obj:MovieClip):Void {
            
    trace("WARNING: SETZEBUTTON: " obj);
            switch(
    obj){
                case 
    _level0.w1_mc:
                    
    obj.onRelease = function(){
                        
    _root.aufRufAusKlasse()
                        
                    };
                    break;
            }
        } 
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  12. #12
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Es klappt. Bin überrascht, wie manchen Sachen eigentlich einfach sind

    Wenn ich gut verstanden habe, ist es also besser die externen as-Datei (keine Klassen) direkt im ersten Timeline im _level0 einzubinden, sodass ich überral Zugriff auf die Methoden habe und die jeweilligen Klassen wenn nötig in einzelne as-Datei wo es nötig ist?

    Schönen Gruß
    L&Fdesign

  13. #13
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    Die normalen Functionen würde ich immer in _root einladen, dann weiß ich wo sie stecken
    Alternativ kannst du dir auch mal die prototype ansehen, bei denen ist es eigentlich egal wo du sie einbindest

    Wie schon gesagt: ich bin nun nicht dieser OOP - Freak und habe mich mit dem Thema Klassen noch nicht richtig auseinander gesetzt. Wird aber mal langsam Zeit das ich es tue
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

  14. #14
    TP-Senior Avatar von punisher
    Registriert seit
    Jul 2005
    Beiträge
    134
    Hi W. ,
    hättest du vielleicht ein gutest Tutorial über Prototype zu empfehlen?
    Ich denke es ist vielleicht der bessere Weg, da die Movie, in der ich jetzt arbeite in eine Hauptmovie mit loadMovie(...) geladen wird, funktionieren die _root in der geladene Movie nicht mehr und die Methoden werden nicht mehr aufgerufen.

    Gruß
    L&Fdesign

  15. #15
    TP-Moderator Avatar von Wanderratte
    Registriert seit
    Mar 2002
    Beiträge
    5.487
    Hallo,

    mach das doch anders und schreibe dein eigenes Root.

    var ROOT = this;
    und ersetzt alle _root mit ROOT.
    Ansonsten solltest du mal f1 nehmen und die dir Protoypes anschauen
    einfaches Beispiel:
    PHP-Code:
    var gesch:Number 1;
    MovieClip.prototype.drehen = function() {
        
    this._rotation += gesch;
    };

    //einfacher aufruf
    dreh_mc.drehen();
    //Als onEnterFrame;
    //dreh_mc.onEnterFrame = drehen; 
    Gruß

    Wanderratte
    Gebildet ist,
    wer weiß,
    wo er findet,
    was er nicht weiß.

    4bugs
    Home
    Amazon Wunschzettel

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. attachmovie - Ladereihenfolge umdrehen?
    Von Elli im Forum Flash & Multimedia
    Antworten: 2
    Letzter Beitrag: 23.06.2009, 21:16
  2. attachMovie will nicht klappen
    Von Rikibu im Forum Flash & Multimedia
    Antworten: 2
    Letzter Beitrag: 22.10.2007, 18:03
  3. attachMovie: Soll nur im Hintergrund erscheinen
    Von Flupp im Forum Flash & Multimedia
    Antworten: 3
    Letzter Beitrag: 04.07.2007, 19:22
  4. Navigieren nach attachMovie
    Von Elli im Forum Flash & Multimedia
    Antworten: 8
    Letzter Beitrag: 20.01.2007, 12:40
  5. attachMovie - ab bestimmtem MC = undefined
    Von Halbwissender im Forum Flash & Multimedia
    Antworten: 3
    Letzter Beitrag: 10.10.2006, 18:11

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51