Zurück   PSD-Tutorials.de > Webbereich > Flash > Flash - ActionScript


Antwort
 
Themen-Optionen
Alt 04.06.2012, 12:58   #1 Nach oben scrollen
Newbie
Newbie
 

Registriert seit: 27.03.2012
Beiträge: 24

MovieClip wird übermalt von Sprite/MovieClip

Hallo Flashheads,

ich habe da ein kleines Problem bei dem ich eure erfahrung 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-Code:
function onMouseUp_stage(event:MouseEvent):void
{                                    
    
stage.removeEventListener(MouseEvent.MOUSE_MOVEMausBuehneMove);
    
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_DOWNMouseDown);

    } 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-Code:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    
stage.removeEventListener(MouseEvent.MOUSE_MOVEMausBuehneMove);

    
//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_DOWNMouseDown);

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

oder so
PHP-Code:
function onMouseUp_stage(event:MouseEvent):void
{                                                                        //wenn maustaste=up wird eventlistener entfernt
    
    
stage.removeEventListener(MouseEvent.MOUSE_MOVEMausBuehneMove);

    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_DOWNMouseDown);

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

aussieht

ansonsten funktionierts einwandfrei....

woran kann das liegen?


Gruß

Noob69

Geändert von noob69 (04.06.2012 um 13:06 Uhr).
  Mit Zitat antworten


Alt 04.06.2012, 13:18   #2 Nach oben scrollen
Newbie
Newbie
Themenstarter
 

Registriert seit: 27.03.2012
Beiträge: 24
AW: MovieClip wird übermalt von Sprite/MovieClip
mit
PHP-Code:
zielmovie.contains(HomepageMC_2); 
statt
PHP-Code:
zielmovie.addChild(HomepageMC_2); 
übermalt er es wenigstens nicht mehr

einrasten will er aber immer noch nicht
  Mit Zitat antworten
Alt 04.06.2012, 22:59   #3 Nach oben scrollen
Member
MemberMember
 
Benutzerbild von ADcosmos
 

Registriert seit: 25.01.2012
Beiträge: 179
Kamera: Canon EOS 60D
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 = new MovieClip();
    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;
    }    
}
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
  Mit Zitat antworten
Alt 05.06.2012, 11:41   #4 Nach oben scrollen
Newbie
Newbie
Themenstarter
 

Registriert seit: 27.03.2012
Beiträge: 24
AW: MovieClip wird übermalt von Sprite/MovieClip
Zitat:
Zitat von ADcosmos Beitrag anzeigen
Hi,

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

    var zielmovie:MovieClip = new MovieClip();
    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;
    }    
}
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-Code:
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_DOWNMouseDown);            //eventlistener
    
stage.addEventListener(MouseEvent.MOUSE_UPonMouseUp_stage);        //eventlistener
}
/////////////////////////////////////////////////////////////////////////////////
function MouseDown(e:MouseEvent):void
{
    
stage.addEventListener(MouseEvent.MOUSE_MOVEMausBuehneMove);        //eventlistener 
}
/////////////////////////////////////////////////////////////////////////////////
function MausBuehneMove(e:MouseEvent):void
{
    if(
Tix_Ava.x>200)
    {
        
Tix_Ava.= (mouseX);                                            //live-koordinaten der x-achse
        
Tix_Ava.lineFunc1(mouseX);    
    }
    else
    {
        
Tix_Ava.= (mouseX);                                            //live-koordinaten der x-achse
        
Tix_Ava.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_MOVEMausBuehneMove);
    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_DOWNMouseDown);

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


Geändert von noob69 (05.06.2012 um 11:48 Uhr).
  Mit Zitat antworten
Alt 05.06.2012, 19:44   #5 Nach oben scrollen
Mod | 3dsmax
ModeratorModeratorModeratorModeratorModeratorModerator
 
Benutzerbild von keul3
 

Registriert seit: 25.10.2006
Beiträge: 3.682
AW: MovieClip wird übermalt von Sprite/MovieClip
Zitat:
Zitat von noob69 Beitrag anzeigen
mit
PHP-Code:
zielmovie.contains(HomepageMC_2); 
statt
PHP-Code:
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.
  Mit Zitat antworten
Antwort


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