Antworten auf deine Fragen:
Neues Thema erstellen

MovieClip wird übermalt von Sprite/MovieClip

noob69

Noch nicht viel geschrieben

Hallo Flashheads,

ich habe da ein kleines Problem bei dem ich eure brauche.

und zwar habe ich für meine MovieClip 'Tix_Ava' eine Funktion gebaut mit der ich kurvige Strecken etc 'abdraggen' kann, und die eine Zielzone besitzt (der 'Zielmovie'-MovieClip), wo der MovieClip (Tix_Ava) 'einrasten' kann.

Das ganze funktioniert auch wirklich super wenn ich diese Zielzone vorher als festen MovieClip definiere.
PHP:
function onMouseUp_stage(event:MouseEvent):void
{                                    
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);
    
if (Math.abs(Tix_Ava.x-zielmovie.x)<zielbereich&&Math.abs(Tix_Ava.y-zielmovie.y)<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+15;
        Tix_Ava.y=zielmovie.y+15;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}
möchte ich in diesen 'Zielmovie'-MovieClip für diesen Moment aber einen anderen MovieClip füllen, übermalt er mir plötzlich den 'Zielmovie'-MovieClip und 'rastet' auch nicht mehr auf dem 'Zielmovie'-MovieClip ein.
Das ganze passiert auch wenn ich den 'Zielmovie'-MovieClip als Sprite behandle.

also wenn die funktion so
PHP:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);

    //var zielmovie:MovieClip = new MovieClip();
    var zielmovie:Sprite = new Sprite();
    zielmovie.addChild(HomepageMC_2);
    
if (Math.abs(Tix_Ava.x-zielmovie.x)<zielbereich&&Math.abs(Tix_Ava.y-zielmovie.y)<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+15;
        Tix_Ava.y=zielmovie.y+15;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}
oder so
PHP:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);

    var zielmovie:MovieClip = new MovieClip();
    //var zielmovie:Sprite = new Sprite();
    zielmovie.addChild(HomepageMC_2);
    
if (Math.abs(Tix_Ava.x-zielmovie.x)<zielbereich&&Math.abs(Tix_Ava.y-zielmovie.y)<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+15;
        Tix_Ava.y=zielmovie.y+15;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}
aussieht

ansonsten funktionierts einwandfrei....

woran kann das liegen?


Gruß

Noob69
 
Zuletzt bearbeitet:

noob69

Noch nicht viel geschrieben

AW: MovieClip wird übermalt von Sprite/MovieClip

mit
PHP:
zielmovie.contains(HomepageMC_2);
statt
PHP:
zielmovie.addChild(HomepageMC_2);
übermalt er es wenigstens nicht mehr

einrasten will er aber immer noch nicht :(
 
A

ADcosmos

Guest

AW: MovieClip wird übermalt von Sprite/MovieClip

Hi,

Code:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);

    var zielmovie:MovieClip = [COLOR="SeaGreen"]new MovieClip();[/COLOR]
    zielmovie.addChild(HomepageMC_2);
    
if (Math.abs(Tix_Ava.x-[COLOR="Red"]zielmovie.x[/COLOR])<zielbereich&&Math.abs(Tix_Ava.y-[COLOR="red"]zielmovie.y[/COLOR])<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+15;
        Tix_Ava.y=zielmovie.y+15;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}

Das Problem an den rotmarkierten Stellen ist, dass Du bei der grünen Stelle einen neuen MC erstellst. D.h. x=0 und y=0. Zudem liegt dann zielmovie nicht auf der Bühne. Du hast ihn ja nur erstellt.

Der Rest vom Code wäre auch nicht schlecht, um es eigenhändisch einmal zu testen.

MFG ADcosmos
 

noob69

Noch nicht viel geschrieben

AW: MovieClip wird übermalt von Sprite/MovieClip

Hi,

Code:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);

    var zielmovie:MovieClip = [COLOR=SeaGreen]new MovieClip();[/COLOR]
    zielmovie.addChild(HomepageMC_2);
    
if (Math.abs(Tix_Ava.x-[COLOR=Red]zielmovie.x[/COLOR])<zielbereich&&Math.abs(Tix_Ava.y-[COLOR=red]zielmovie.y[/COLOR])<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+15;
        Tix_Ava.y=zielmovie.y+15;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}
Das Problem an den rotmarkierten Stellen ist, dass Du bei der grünen Stelle einen neuen MC erstellst. D.h. x=0 und y=0. Zudem liegt dann zielmovie nicht auf der Bühne. Du hast ihn ja nur erstellt.

Der Rest vom Code wäre auch nicht schlecht, um es eigenhändisch einmal zu testen.

MFG ADcosmos

natürlich *vor die stirn hau* habs dann angepasst
Code:
zielmovie=HomepageMC_2;
so simpel :p

der gesamte code würde wohl den rahmen sprengen

hier aufs relevante gekürzt

man brauch dafür die 2 MC's 'Tix_Ava' und 'HomepageMC_2' auf der Bühne

PHP:
Tix_Ava.buttonMode=true;
var zielbereich:Number=80;                                                //Toleranz-Bereich definieren: Wo Einrasten rund um Ziel_MC erlaubt?
var ausgangsPosX:Number=Tix_Ava.x;                                        //Ausgangsposition des Tix_Avas für das "Zurückschnappen" der x-Koordinate merken
var ausgangsPosY:Number=Tix_Ava.y
init();
/////////////////////////////////////////////////////////////////////////////////
function init():void
{
    addChild(this.Tix_Ava);                                                //Tix_Ava Sprite
    Tix_Ava.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);            //eventlistener
    stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp_stage);        //eventlistener
}
/////////////////////////////////////////////////////////////////////////////////
function MouseDown(e:MouseEvent):void
{
    stage.addEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);        //eventlistener 
}
/////////////////////////////////////////////////////////////////////////////////
function MausBuehneMove(e:MouseEvent):void
{
    if(Tix_Ava.x>200)
    {
        Tix_Ava.x = (mouseX);                                            //live-koordinaten der x-achse
        Tix_Ava.y = lineFunc1(mouseX);    
    }
    else
    {
        Tix_Ava.x = (mouseX);                                            //live-koordinaten der x-achse
        Tix_Ava.y = lineFunc2(mouseX);    
    }    
    trace(Tix_Ava.x,Tix_Ava.y);
}
/////////////////////////////////////////////////////////////////////////////////
function lineFunc1(Number)
{
    return 266;                                                            //geraden linie -> wert
}
/////////////////////////////////////////////////////////////////////////////////
function lineFunc2(xPos:Number)
{
    return 70+xPos;                                                     //hier schräge linien -> wert
}
/////////////////////////////////////////////////////////////////////////////////
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, MausBuehneMove);
    var zielmovie:Sprite = new Sprite();
    zielmovie=HomepageMC_2;

    if (Math.abs(Tix_Ava.x-zielmovie.x)<zielbereich&&Math.abs(Tix_Ava.y-zielmovie.y)<zielbereich)
    {
        Tix_Ava.buttonMode=false;
        Tix_Ava.x=zielmovie.x+14;
        Tix_Ava.y=zielmovie.y+13;
        Tix_Ava.removeEventListener(MouseEvent.MOUSE_DOWN, MouseDown);

    } else
    {
        Tix_Ava.x=ausgangsPosX;
        Tix_Ava.y=ausgangsPosY;
    }    
}
 
Zuletzt bearbeitet:

keul3

3dsMax | 3D-Contest

AW: MovieClip wird übermalt von Sprite/MovieClip

mit
PHP:
zielmovie.contains(HomepageMC_2);
statt
PHP:
zielmovie.addChild(HomepageMC_2);
übermalt er es wenigstens nicht mehr

einrasten will er aber immer noch nicht :(

ein paar Randnotizen:

könntest auch beides weglassen und hättest den gleichen Effekt, die contains-Methode dient nur als Abfrage ob das DisplayObject im MC enthalten ist oder nicht.

Und das es keinen Unterschied im Ergebnis gibt, wenn du die Sprite-Klasse benutzt, liegt daran dass die MC-Klasse von dieser erbt, und du keine MC-speziefischen Methoden/Eigenschaften verwendest. Erstelle lieber gleich Sprites, wenn du keine Timeline-Geschichten vorhast.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben