An-Cadsolutions      Imgsystems

Kirjoittaja Aihe: APUA actionscript 2  (Luettu 1122 kertaa)

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
APUA actionscript 2
« : Syyskuu 24, 2007, 09:30:43 pm »
Tiiän et tää on 3dfoorumi, mut tarviin pikasta apua ja ajattelin et ehkä te koodarit niinku xcx ja mathatan (nimenperusteella) osaisitte auttaa.

Mä yritän koodata tällasta juttua että scripti piirtää 2 janaa, ja sitten vielä kolmannen niin että sen alku- ja päätepiste sijatsevat 1 ja 2 janalla. Vaikee ny nopeesti selittää mut liitän koko koodin tietenkin tähän ni jos joku neromies vois ehkä nopeasti yhdellä vilkasulla tajuta et mikä helvetti tässä mättää ja olenko vain tyhmä kuin käki.

ongelmana on että toinen piste osuu aina oikeaan, mutta toinen ei, vaikka molemmat määrittyvät samasta funktiosta (matkapiste)

olisin hyvin kiitollinen avusta

eli: koodi


this._highquality=0;

//vaakaviivat
this.createEmptyMovieClip("vaaka1", 0);
this.createEmptyMovieClip("vaaka2", 1);
this.createEmptyMovieClip("vaaka3", 2);
this.createEmptyMovieClip("vaaka4", 3);
this.createEmptyMovieClip("vaaka5", 4);
this.createEmptyMovieClip("vaaka6", 5);

//vauhtiviivat
this.createEmptyMovieClip("vauhti1", 6);



//vaaka-koordinaatit
vaaka1_alku_x=200;
vaaka1_alku_y=300;
vaaka1_loppu_x=300;
vaaka1_loppu_y=230;

vaaka2_alku_x=300;
vaaka2_alku_y=300;
vaaka2_loppu_x=200;
vaaka2_loppu_y=350;

//vauhti-koordinaatit (joita ei oo)
vauhti1_alku_x;
vauhti1_alku_y;
vauhti1_loppu_x;
vauhti1_loppu_y;

//vauhtiviivojen paikka
paikka=0;

//vauhtikontrolli
kiippari = new Object();
Key.addListener(kiippari);

kiippari.onKeyDown = function() {
   
   if(Key.getCode() == Key.LEFT) {
   paikka=paikka+0.05
   }
   
   if(Key.getCode() == Key.RIGHT) {
   paikka=paikka-0.05
   }
}

//viivojen piirto
this.onEnterFrame = function() {
   
   //vaakaviivat
   vaaka1.clear();
   vaaka1.lineStyle(1, 0x000000, 100);
   vaaka1.moveTo(vaaka1_alku_x, vaaka1_alku_y);
   vaaka1.lineTo(vaaka1_loppu_x, vaaka1_loppu_y);
   
   vaaka2.clear();
   vaaka2.lineStyle(1, 0x000000, 100);
   vaaka2.moveTo(vaaka2_alku_x, vaaka2_alku_y);
   vaaka2.lineTo(vaaka2_loppu_x, vaaka2_loppu_y);
   
   //vauhtiviivat

   vauhti1.clear();
   vauhti1.lineStyle(1, 0xFF0000, 100);
   
   paikka_2=matkapiste(vaaka1_alku_x, vaaka1_alku_y, vaaka1_loppu_x, vaaka1_loppu_y);
   vauhti1.moveTo(paikka_2[0], paikka_2[1]);
   
   paikka_2=matkapiste(vaaka2_alku_x, vaaka2_alku_y, vaaka2_loppu_x, vaaka2_loppu_y);
   vauhti1.lineTo(paikka_2[0], paikka_2[1]);
   
   delete paikka_2;
   
   trace(paikka)
}



// trigonometria vauhtiviivoille
function matkapiste(ax, ay, lx, ly) {
   
   //lasketaan viivan pituus
   h=Math.sqrt((Math.pow(lx-ax, 2))+(Math.pow(ly-ay, 2)));
   

   
   //lasketaan kulma
   a=Math.atan((ly-ay)/(lx-ay));
   
   //lasketaan koordinaatit
   xx=(Math.cos(a)*(paikka*h)+ax);
   yy=(Math.sin(a)*(paikka*h)+ay);

   trace (yy)

tulos = new Array(xx,yy);
return tulos;   
   
}

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: APUA actionscript 2
« Vastaus #1 : Syyskuu 25, 2007, 11:06:15 am »
ei tarvi apuu enää,tajusin ettei tarvi mitää trigonometriaa.

xcx

  • Administrator
  • *****
  • Viestejä: 2278
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: APUA actionscript 2
« Vastaus #2 : Syyskuu 25, 2007, 01:53:28 pm »
Sait tehtyä jo, mutta vastataan kuitenkin.

Enpä nyt ihan ehkä pysynyt mukana mikä oli ajatuksena, mutta jos haluat että kolmas viivaa liikkuu kahden muun viivan välissä ja päätepisteet ovat koko ajan viivoilla 1 ja 2.

Esimerkki http://www.verajankorva.com/temp/lines.swf
Ja sorsat http://www.verajankorva.com/temp/lines.fla

Ja koodi vielä suoraan sivuillekin.

Koodia: [Valitse]
var oLine1:Object = {x1:50, y1:50, x2:500, y2:100};
var oLine2:Object = {x1:100, y1:300, x2:400, y2:200};
var oLine3:Object = {x1:oLine1.x1, y1:oLine1.y1, x2:oLine2.x1, y2:oLine2.y1};

var iFrameCount:Number = 0;
var iMoveFrames:Number = 100;

function onEnterFrame()
{
_root.clear();
_root.lineStyle(2, 0x0000FF, 100);
_root.moveTo(oLine1.x1, oLine1.y1);
_root.lineTo(oLine1.x2, oLine1.y2);
_root.moveTo(oLine2.x1, oLine2.y1);
_root.lineTo(oLine2.x2, oLine2.y2);
_root.lineStyle(1, 0xFF0000, 100);
_root.moveTo(oLine3.x1, oLine3.y1);
_root.lineTo(oLine3.x2, oLine3.y2);

if (iFrameCount < iMoveFrames+1)
{
oLine3.x1 = interpolate (oLine1.x1, oLine1.x2, (iFrameCount/iMoveFrames));
oLine3.y1 = interpolate (oLine1.y1, oLine1.y2, (iFrameCount/iMoveFrames));
oLine3.x2 = interpolate (oLine2.x1, oLine2.x2, (iFrameCount/iMoveFrames));
oLine3.y2 = interpolate (oLine2.y1, oLine2.y2, (iFrameCount/iMoveFrames));
iFrameCount += 1;
}
}

function interpolate(_a:Number, _b:Number, _m:Number)
{
return(_a*(1-_m)+_b*_m);
}
Technical Artist - Remedy Games
http://www.verajankorva.com

fossa

  • Hero Member
  • *****
  • Viestejä: 791
  • Sukupuoli: Mies
  • Digital Arts / Taideakatemia / Turkuamk
    • Profiili
    • valtteri.digitalartsturku.net
    • Sähköposti
Vs: APUA actionscript 2
« Vastaus #3 : Syyskuu 25, 2007, 05:33:30 pm »
kiitos silti.
näköjään en osaa ajatella vtarpeeks yksinkertasesti ku rupesin heti aluks keksii jotai järjettömiä trigonometrisia funktioita ton ratkasuun