Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-05-2005, 14:44   #1 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
Question Laserfiguren...

Servus...,
ich bastele hier gerade an einer Geschichte die mir nicht gelingen will. Während ich weiterschinde kann mir vielleicht jemand einen Tipp geben zu folgendem Problem:

Ich möchte eine Linie so bewegen, das ein Endpunkt der Linie fix ist, und das andere Ende per Actionscript beweglich ist.

Rauskommen soll so was wie ein Laserstrahl der eine Figur zeichnet!?

Ein Objekt bewegen kein Problem, aber ein Objekt bewegen bei dem sich nur eine Seite verändern darf und bei einer Figur wie einem einfachen Quadrat auch noch die Länge geändert werden muss ist mir gerade eben zu mathematisch...

Also Hiiiillllfeeee
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 15:32   #2 (permalink)
subfiler
 
Registriert seit: Jul 2004
Beiträge: 175
wenn es dir nur um eine linie geht, so kannst du einen mc erstellen der eine linie auf 45° enthält. setzt du nun den registration point (registrierung, nullpunkt) auf das eine ende der linie, so kannst du mit normalen transformationen eben nur das andere ende der linie beeinflussen.
hakre ist offline   Mit Zitat antworten
Alt 14-05-2005, 16:15   #3 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
Nehmen wir mal an der Laser soll eine senkrechte Linie zeichnen. Dann fängt der Laser in einer Stellung von 45° an. Ist er dann in der Mitte der senkrechten Linie angekommen dann hat der Laserstrahl seinen kürzesten Zusatnd erreicht und wird dann wieder länger bis er auf 135° steht.

Das Problem ist die Längenänderung des Laserstrahls. Auch wenn du den Registrierungspunkt auf den "Austrittspunkt" des Lasers stellst wird der mc bei einem tween nicht so transformiert das ne senkrechte Linie rauskommt!

Mach ich das mit Actionscript bewege ich den ganzen mc. Bin mir aber sicher dass es aus einer Kombination aus rotate und xscale bzw yscale Befehelen funzen muss......, wie gesagt, mathematisches Problem...., denk ich.

Der Vorteil an Actionscript wäre eben noch, das ich den Laser je nach Situation verschieden Große Quadrate zeichnen lassen kann!

Meine Birne explodiert gleich..., aber ich wälze weiterhin das Tafelwerk...., kotz..., Geometrie..., bäää
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 16:21   #4 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Zitat von hakre
wenn es dir nur um eine linie geht, so kannst du einen mc erstellen der eine linie auf 45° enthält. setzt du nun den registration point (registrierung, nullpunkt) auf das eine ende der linie, so kannst du mit normalen transformationen eben nur das andere ende der linie beeinflussen.
...das war bis flash5 eine Linie zu zeichnen, seit flashMX gibts ja die wunderbare ZeichenAPI mit der sowas ja geschenkt ist...
@harry-m, insgesamt verstehe ich noch nicht wirklich was Du willst (hab allerdings Dein letztes posting noch nicht richtig durchgelesen), aber das hier sollte Dir schon mal helfen:
Linie einem Punkt nach ziehen

Gruß

Alois

Edit: ...nach Lesen Deines letzten postings.. einfach so:
ActionScript:
  1. this.createEmptyMovieClip("laser",1);
  2. this.laser.onEnterFrame=function(){
  3.     this.clear();
  4.     this.lineStyle(1,0xff0000,100);
  5.     this.moveTo(0,0);
  6.     this.lineTo(this._xmouse,this._ymouse);//z.B. Mausposition
  7. }
  8. //...und wenn Du jetzt noch den Startpunkt versetzen willst
  9. this.laser._x=275;
  10. this.laser._y=200;
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (14-05-2005 um 16:29 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 14-05-2005, 16:37   #5 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
@Alois,
******e..., wenn das funktioniert zerschlag ich meinen Schreibtisch mit meinem Kopf!

Ich versuch hier 4 Stunden lang die verrücktesten Dinger und dann sind das nicht mal 10 Zeilen AS.

Ich teste mal kurz aber schon vielen Dank für die ERLÖSUNG @ Alois

ICH LIEBE DIESES FORUM
__________________
machs lieber heute..., wer weiß was morgen kommt...

Geändert von harry-m (14-05-2005 um 16:42 Uhr)
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 16:40   #6 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
hmmm..., mit meinem Edit???
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 14-05-2005, 16:42   #7 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
ja ich weiß..., wir beide haben zeitgleich getippt!
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 17:13   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
nit so schnell, da kommt ein alter mann nicht mehr mit ;-)

ja, um "nur eine linie" gehts nicht. das wurde doch deutlich geschrieben. und das mit den 45 grad ist ziemlich veraltet.

hier mein vorschlag:
Angehängte Dateien
Dateityp: zip lasershow.zip (11,6 KB, 42x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 14-05-2005, 17:19   #9 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
@hgseib

Hätte mir einer gesagt das es ne Sache Namens Führungsebene gibt wäre ich schon fertig!

Hab vielen Dank! Super Sache das!
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 17:24   #10 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
ach hgseib sei mir nicht böse aber,
sein Rechteck zeichnen kann er mit der funktion die boreker in dem von mir verlinkten thread gepostet hat.... und den laserstrahl simuliert er dann halt mit meinem script im Edit....

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 14-05-2005, 17:36   #11 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
Ähm..., nur noch eine kurze Frage...

wie kann ich aus der "Spur" ne Linie machen? So daß nach einem durchlauf halt ein Rechteck steht?!
Angehängte Dateien
Dateityp: rar lasershow.rar (8,7 KB, 18x aufgerufen)
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m ist offline   Mit Zitat antworten
Alt 14-05-2005, 18:27   #12 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..ach hgseib sei mir nicht böse aber.."
doch, ich guck dich jetzt nicht mehr an ;-)

also in 0 sekunden hab selbst ich das nicht erstellt. das hatte ich angefangen, da gab es deinen beitrag noch nicht.
ausserdem mach ich das nicht für euch -sorry- bin ständig auf der suche nach neuen ideen und beiträge für meine eigene homepage.

@harry-m
z.b.
letzte x/y koordinate merken und linie von der zur aktuellen linie ziehen
bzw. z.b. rechteck
selbst ausrechnen, wieviel % das rechteck fertig zu zeichnen wäre und dann entsprechend zeichnen
oder dito
entsprechend per animierter maske aufdecken.
oder
siehe Alois

würde ja was programmieren. da wird man aber dafür geschümpft ;-)

-----
p.s.
weil ich es gerade sehe:
hör auf, deine experimente mit meinem copyright zu veröffentlichen!
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (14-05-2005 um 18:48 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 15-05-2005, 00:20   #13 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
das hat mich mal gerade nicht in Ruhe gelassen und ich bin das Basteln angefangen mit dem ziel, das alles zu automatisieren, jetzt bin ich allerdings zu müde das abzuschliessen, den bisherigen Spaghetticode will ich Euch aber mal nicht vorenthalten (von der gezielten Objektorientierung ist ja noch nix zu sehen):
ActionScript:
  1. laser=new Object();
  2. laser.lS=[0,0x00ff00,100];
  3. laser.centerx=275;
  4. laser.centery=200;
  5. _globalDepth=0;
  6. laser.laserAline=function(instance,startpos,endpos,style,steps){
  7.     if(steps==1){
  8.         trace(steps+"...."+laser.pointer);
  9.         laser.pointer++;
  10. laser.nextLine(instance);
  11. return;
  12.     }
  13.     if(!instance){
  14.         instance=this;
  15.     }
  16.     if(!instance.linnmbr){
  17.         instance.linnmbr=1;
  18.     }else{
  19.         instance.linnmbr++;
  20.     }
  21.     instance=instance.createEmptyMovieClip("line"+instance.linnmbr,instance.linnmbr);
  22.     instance.counter=0;
  23.     las=instance.createEmptyMovieClip("laser",1);
  24.      las.steps=steps;
  25.      las.startpos=startpos;
  26.      las.endpos=endpos;
  27.     instance.onEnterFrame=function(){
  28.         this.counter++;
  29.         this.clear();
  30.         var stepx=(las.endpos.x-las.startpos.x)/las.steps*this.counter+las.startpos.x;
  31.         var stepy=(las.endpos.y-las.startpos.y)/las.steps*this.counter+las.startpos.y;
  32.         this.clear();
  33.         this.lineStyle(style[0],style[1],style[2]);
  34.         this.moveTo(las.startpos.x,las.startpos.y);
  35.         this.lineTo(stepx,stepy);
  36.         las.clear();
  37.         las.lineStyle(laser.ls[0],laser.ls[1],laser.ls[2]);
  38.         las.moveTo(laser.centerx,laser.centery);
  39.         las.lineTo(stepx,stepy);
  40.         if(this.counter==las.steps){
  41.             las.removeMovieClip();
  42.             delete this.onEnterFrame;
  43.             laser.pointer++;
  44. laser.nextLine(instance._parent);
  45.         }
  46.     }
  47. }
  48. laser.nextLine=function(instance){
  49.     trace(this.pointer);
  50.     if(this.pointer<laser.points.steps.length){
  51.         laser.laserAline(instance,{x:laser.points.x[laser.pointer],y:laser.points.y[laser.pointer]},{x:laser.points.x[laser.pointer+1],y:laser.points.y[laser.pointer+1]},[0,0xff0000,100],laser.points.steps[laser.pointer]);
  52.    
  53.     }else{
  54.         trace("Ende");
  55.     }
  56.    
  57.        
  58. }
  59. laser.points={x:[],y:[],steps:[]}
  60. laser.pointer=0;
  61. laser.laserAbox=function(x,y,w,h,steps){
  62.     if(laser.points.steps.length>1){
  63.         laser.points.steps.push(1);
  64.     }
  65.     laser.points.x.push(x,x+w,x+w,x,x);
  66.     laser.points.y.push(y,y,y+h,y+h,y);
  67.     var sth=Math.floor(w/(w+h)*steps/2);
  68.     var stv=steps/2-sth;
  69.     laser.points.steps.push(sth,stv,sth,stv);
  70.    
  71. }
  72. //..und das ist dann alles was an action nötig ist
  73. laser.laserAbox(10,10,100,50,30);
  74. laser.laserAbox(120,10,100,50,30);
  75. laser.laserAbox(230,10,100,50,30);
  76. laser.laserAbox(340,10,100,50,30);
  77. laser.laserAbox(10,70,430,200,100);
  78. ziel=this.createEmptyMovieClip("myBox",1);
  79.  
  80. laser.nextLine(myBox);

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (15-05-2005 um 00:22 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 15-05-2005, 13:25   #14 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Wenn es Nacht wird und Alois Langeweile hat...


...kommt meistens was Feines bei raus.

Damit wird die Lasershow perfekt!
Gruss
23012
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 15-05-2005, 14:06   #15 (permalink)
TheHarrySolution
 
Benutzerbild von harry-m
 
Registriert seit: Aug 2002
Ort: Cottbus/Berlin
Beiträge: 82
Thumbs up feine Sachen gedeihen nur im Forum....

Moin allerseits...,
@Alois ziehe mal den Hut vor dir...

leider wirken solche Geschichten schnell demotivierend , wenn ich mir alois quellcode anschaue ist mir jeder Schritt sofort klar..., aber solch komplexe Lösungen mal schnell in 1-2 h basteln fällt mir echt schwer..., gibts da nen Tipp für die richtige Herangehensweise?!
__________________
machs lieber heute..., wer weiß was morgen kommt...
harry-m 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 19:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele