Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    [as3] Rotazione gradiente in un rettangolo

    Salve a tutti
    Ecco il mio problema: io in uno sprite disegno un rettangolo arrotondato con gradiente. Se lo disegno con rotazione=0 tutto va bene, ma se metto ad esempio rotazione=90 (poi lo trasformo in radianti) il gradiente diventa storto in diagonale e non a 90 gradi. Posto il codice:

    Codice PHP:
    var X:int=0;
    var 
    Y:int=0;
    var 
    Width:int=50;
    var 
    Height:int=30;
    var 
    RotationGradi:int=90;
    var 
    Rotation:int=RotationGradi*3.14/180;//in radianti
    var OffsetX:int=0;
    var 
    OffsetY:int=0;
    var 
    colori:Array=[0x000000,0x00ff00,0x000000];
    var 
    alphas:Array=[0.5,1,0.5];
    var 
    ratios:Array=[0,15,30];
    var 
    RoundW:int=5;
    var 
    RoundH:int=5;

    var 
    gradType=GradientType.LINEAR;
    var 
    matrix:Matrix=new Matrix();
    var 
    spreadMethod:String=SpreadMethod.PAD;

        
    //DISEGNO///////////////////////////////////////
    matrix.createGradientBox(WidthHeightRotationOffsetXOffsetY);
    target.graphics.beginGradientFill(gradTypecolorialphasratiosmatrixspreadMethod);
    target.graphics.drawRoundRect(XYWidthHeightRoundWRoundH);
    target.graphics.endFill(); 
    Spero si capisca e mi possiate dare una mano

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ciao, con questo codice mi viene un rettangolo grigio con una striscia verde in mezzo, cosa dovrebbe uscire esattamente?

  3. #3
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Se guardi la striscia verde, questa non è in orizzontale come dovrebbe essere (almeno nel mio filmato...)

    Prendi RotationGradi: se è 0 la striscia viene in verticale, quindi a 90 dovrebbe essere orizzontale, invece no...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se non ricordo male il valore da passare è in radianti e per ottenere 90 gradi devi usare π/2.
    In flash il π è conservato in una proprietà matematica (Math.PI), quindi

    var Rotation:int = Math.PI/2;

  5. #5
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    si l'ho trasformato in radianti (la riga con il commento, non ho usato Math.PI ma ho scritto 3.14...) quindi non è quello il problema...

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Vero, non avevo notato nel tuo codice che istanzi l'oggetto come "int" ossia come numero intero, per questo ottieni un valore fittizzio sbagliato.
    Se invece lo valorizzi come Number, ottieni il valore corretto per la rotazione.

    Codice PHP:
    var Rotation:Number RotationGradi*Math.PI/180//in radianti 

  7. #7
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Ah ok... ma cosa cambia da int a number? come faccio a capire quando è meglio usare uno e quando l'altro??

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Quando ti servono numeri con la virgola usi Number (con la n maiuscola), se ti servono numeri interi con segno (positivi e negativi) usi int, e quando ti servono solo numeri interi senza segno usi uint. Oppure usa sempre Number, così non ti sbagli

  9. #9
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    ok grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.