Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-11-2004, 20:11   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 6
Question draw

also ich bin neu hier im forum und hoffe, dass jemand eine lösung hat für mein problem.
ich habe eine einfache zeichnungsfunktion erstellt, der mauszeiger verwandelt sich in eine kreide und zeichnet weiss auf schwarzem grund.
der schwamm ist ein button mit clear funktion.
jetzt wollte ich aus dem schwamm ein mc machen, der sich ziehen lässt und mit schwarzer farbe zeichnet.
mein problem ist, dass ich zwar den schwamm bewegen kann, aber die kreide befindet sich immer noch hinter dem schwamm.
wie kann ich die draw funktion mit verschiedenen farbwerten sowohl dem mc kreide als auch dem mc schwamm zuordnen.
thanks for helping
bassline
hier der code auf der timeline für mc kreide:
this.onMouseMove=function(){
if(draw){
_root.lineStyle(4,0xFFFFFF,100);
_root.lineTo(_root._xmouse,_root._ymouse);
}
};
this.onMouseDown=function(){
draw=true;
_root.moveTo(_root._xmouse,_root._ymouse);
};
this.onMouseUp=function(){
draw=false;
};
clear_btn.onRelease=function(){
_root.clear();
}
function augezeigen (){
Mouse.hide();
kreide._visible=true;
kreide.startDrag(true);
}

// Alle Werte wieder rückgängig machen:
function normalerPfeil (){
Mouse.show();
kreide._visible=false;
MCstopDrag();
}

Geändert von bassline (06-11-2004 um 20:25 Uhr)
bassline ist offline   Mit Zitat antworten
Alt 06-11-2004, 20:38   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wenn du den MC "kreide" nach oben schieben willst, kannst du ihn beispielsweise in der augezeigen-Funktion mit swapDepths verschieben, bspw.
ActionScript:
  1. function augezeigen (){
  2.    Mouse.hide();
  3.    tiefenmerker = kreide.getDepth();//aktuelle Tiefe merken und nach stopDrag evtl. wieder zuweisen
  4.    kreide.swapDepths(1000);//bspw. auf Tiefe 1000 hochschieben
  5.    kreide._visible=true;
  6.    kreide.startDrag(true);
  7. }

Wenn du dem MC kreide auch Zeichenfunktionen zuweisen willst, solltest du es mal statt mit this.onMouseMove etc mit kreide.onMouseMove testen (ohne Gewähr, nur so eine Idee...).
  Mit Zitat antworten
Alt 08-11-2004, 21:23   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 6
next try

danke mal für deine schnelle antwort.
ich habe mal das swf angehängt um das problem zu zeigen.
kreide ist jetzt ein mc der sich bewegt und weiss malt, schwamm ist jetzt auch ein mc der sich zu mousedown bewegt und schwarz zeichnen sollte um das weisse zu übermalen( resp. auszuwischen).
irgenwie malt er aber nicht, eine funktion scheint die andere zu behindern.
eventuell kannst du mir einen tipp geben.
hier der neue code auf der timeline:
kreide.onMouseMove=function(){
draw=true;
_root.lineStyle(4,0xFFFFFF,100);
_root.lineTo(_root._xmouse,_root._ymouse);
_root.moveTo(_root._xmouse,_root._ymouse);
};

kreide.onMouseDown=function(){
draw=false;
};

schwamm.onMouseDown=function() {
schwamm.startDrag (true);
draw=true;
_root.lineStyle(4,0x070707,100);
_root.lineTo(_root._xmouse,_root._ymouse);
};
schwamm.onMouseUp=function(){
draw=false;
schwamm.stopDrag();
}



function augezeigen (){
Mouse.hide();
kreide._visible=true;
kreide.startDrag(true);
}

// Alle Werte wieder rückgängig machen:
function normalerPfeil (){
Mouse.show();
kreide._visible=false;
MCstopDrag();
}
thanks for thinking
bassline
Angehängte Dateien
Dateityp: zip test.z_04.swf.zip (2,5 KB, 13x aufgerufen)
bassline ist offline   Mit Zitat antworten
Alt 08-11-2004, 23:03   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich würde die Drag- und Drop-Aktionen über einen onPress-Event starten und über einen onRelease-Event beenden und die mouseMove-Events als eigene Funktionen bspw. in einem onEnterFrame-laufen lassen.
  Mit Zitat antworten
Alt 10-11-2004, 09:18   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 6
draw

thanks
werde das versuchen.
carpe diem
bassline
bassline ist offline   Mit Zitat antworten
Alt 10-11-2004, 20:57   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 6
draw_new.try

anbei das neue testflash mit der geänderten as.
es klappt eigentlich alles, nur muss ich im code bei lineto und moveto den _root angeben, damit der strich vom mc aus läuft und nicht versetzt ( passierte bei allen versuchen ausser _root).
mein problem ist jetzt aber, dass mit _root beide mc angesprochen werden und ich sie daher nicht unabhängig bewegen und programmieren kann.
wahrscheinlich ist die lösung ziemlich simpel, aber ich weiss im augenblick nicht weiter.
thanks for helping
bassline
Angehängte Dateien
Dateityp: zip test.fla.zip (4,8 KB, 8x aufgerufen)

Geändert von bassline (10-11-2004 um 20:58 Uhr)
bassline ist offline   Mit Zitat antworten
Alt 10-11-2004, 21:52   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich hab es mal ein wenig angepasst:
ActionScript:
  1. _global.dZ = this;
  2. _level0.createEmptyMovieClip("con1",1);
  3. _level0.createEmptyMovieClip("con2",2);
  4.  
  5. this.onMouseMove = function() {//es reicht natürlich eine einzige MouseMove-Funktion
  6.     if(_global.dZ.draw == true) {
  7.         if(_global.dZ.a == true){
  8.            
  9.             _level0.con1.lineStyle(4,0x070707,100);
  10.             _level0.con1.lineTo(_root._xmouse,_root._ymouse);
  11.         }
  12.         else{
  13.            
  14.             _level0.con2.lineStyle(4,0x0000FF,100);
  15.             _level0.con2.lineTo(_root._xmouse,_root._ymouse);
  16.         }
  17.        
  18.         updateAfterEvent();//Frame-Refresh erzwingen, dadurch sieht die Bewegung flüssiger aus
  19.     }
  20. };
  21.  
  22. this.a.onPress=function(){
  23.     startDrag(this),
  24.     _global.dZ.draw=true;
  25.     _global.dZ.a=true;
  26.     //_level0.con1.moveTo(_root._xmouse,_root._ymouse);
  27.     //_level0.con1.clear();
  28. };
  29. this.a.onRelease = function() {
  30.     _global.dZ.draw=false;
  31.     _global.dZ.a=false;
  32.     stopDrag();
  33. }
  34.  
  35.  
  36.  
  37.  
  38. this.b.onPress=function(){
  39.     startDrag(this),
  40.     _global.dZ.draw=true;
  41.     _global.dZ.b = true;
  42.     //_level0.con2.moveTo(_root._xmouse,_root._ymouse);
  43.     //_level0.con2.clear();
  44. };
  45. this.b.onRelease = function() {
  46.     _global.dZ.draw=false;
  47.     _global.dZ.b=false;
  48.     stopDrag();
  49. }
Du musst jetzt nur noch den "Startstrich" abfangen, indem du die Startposition des Striches beim ersten Bewegen bpsw. auf auf die Position des MCs stellst. Bei jeder weiteren Bewegung kann das natürlich übergangen werden.

Geändert von agedoubleju (10-11-2004 um 21:54 Uhr)
  Mit Zitat antworten
Alt 10-11-2004, 22:01   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 6
draw_thanks

wow
werde daran arbeiten.
danke für die prompte hilfe.
bassline
bassline 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 04:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele