Grazie per la disponibilità!
Lo so che non si possono fare due discussioni uguali in due forum infatti le ho inpostate in due modi differenti.
Il tutto perchè all'inizio pensavo di riuscire a sviluppare questa sfera con qualche trucco ed effetti ottici.inutile!
Invece qua sto cercando di riuscire a capire per bene il problema avendo intrapreso la via dell' actionscript.
Ti posto il tutto:
Nella prima scena ho il simbolo filmato "Simbolo 7".
all' interno di questo filmato ho il mio menu che mi rimanda con dei collegamenti ai frame successivi nei quali ho dei simboli filmato che tengono come base la mia "home" ma che cambia di aspetto come se fossero diverse pagine.
Nel frame 74 in particolare devo fare una nuova "pagina" e quindi ho creato un simbolo filmato (centrato per bene), nel quale ho copiato i frame del mio progetto per fare la sfera di loghini.
Questi sono i frames.
Nel primo frame ho un simbolo con questo script:
onClipEvent(enterFrame){
_root.riposizionamento();
}
e questo è lo script del frame (tieni conto che ci sono alcune indicazioni del tipo che l'ha scritto all'inizio, che non centrano niente con la mia sfera ma che parlano del cubo iniziale) :
//crea una matrice degli otto punti del cubo
function creaPunti(){
punti = new Array();
punti[0] = {x:90,y:90,z:90};
punti[1] = {x:-90,y:90,z:90};
punti[2] = {x:-90,y:-90,z:90};
punti[3] = {x:90,y:-90,z:90};
punti[4] = {x:90,y:-90,z:-90};
punti[5] = {x:90,y:90,z:-90};
punti[6] = {x:-90,y:90,z:-90};
punti[7] = {x:-90,y:-90,z:-90};
punti[8] = {x:-30,y:-120,z:-90};
punti[9] = {x:30,y:-120,z:-90};
punti[10] = {x:30,y:-120,z:90};
punti[11] = {x:-30,y:-120,z:90};
punti[12] = {x:-30,y:120,z:-90};
punti[13] = {x:30,y:120,z:-90};
punti[14] = {x:30,y:120,z:90};
punti[15] = {x:-30,y:120,z:90};
punti[16] = {x:-30,y:-150,z:-30};
punti[17] = {x:30,y:-150,z:-30};
punti[18] = {x:30,y:-150,z:30};
punti[19] = {x:-30,y:-150,z:30};
punti[20] = {x:-30,y:150,z:-30};
punti[21] = {x:30,y:150,z:-30};
punti[22] = {x:30,y:150,z:30};
punti[23] = {x:-30,y:150,z:30};
punti[24] = {x:90,y:120,z:30};
punti[25] = {x:-90,y:120,z:30};
punti[26] = {x:-90,y:-120,z:30};
punti[27] = {x:90,y:-120,z:30};
punti[28] = {x:90,y:-120,z:-30};
punti[29] = {x:90,y:120,z:-30};
punti[30] = {x:-90,y:120,z:-30};
punti[31] = {x:-90,y:-120,z:-30};
punti[32] = {x:-120,y:30,z:-90};
punti[33] = {x:-120,y:30,z:90};
punti[34] = {x:-120,y:-30,z:90};
punti[35] = {x:-120,y:-30,z:-90};
punti[36] = {x:120,y:-30,z:-90};
punti[37] = {x:120,y:30,z:-90};
punti[38] = {x:120,y:30,z:90};
punti[39] = {x:120,y:-30,z:90};
punti[40] = {x:-150,y:-30,z:-30};
punti[41] = {x:-150,y:30,z:-30};
punti[42] = {x:-150,y:30,z:30};
punti[43] = {x:-150,y:-30,z:30};
punti[44] = {x:150,y:-30,z:-30};
punti[45] = {x:150,y:30,z:-30};
punti[46] = {x:150,y:30,z:30};
punti[47] = {x:150,y:-30,z:30};
punti[48] = {x:120,y:90,z:30};
punti[49] = {x:120,y:-90,z:30};
punti[50] = {x:-120,y:-90,z:30};
punti[51] = {x:-120,y:90,z:30};
punti[52] = {x:-120,y:90,z:-30};
punti[53] = {x:120,y:90,z:-30};
punti[54] = {x:120,y:-90,z:-30};
punti[55] = {x:-120,y:-90,z:-30};
punti[56] = {x:-30,y:-30,z:-150};
punti[57] = {x:-30,y:30,z:-150};
punti[58] = {x:-30,y:30,z:150};
punti[59] = {x:-30,y:-30,z:150};
punti[60] = {x:30,y:-30,z:-150};
punti[61] = {x:30,y:30,z:-150};
punti[62] = {x:30,y:30,z:150};
punti[63] = {x:30,y:-30,z:150};
punti[64] = {x:30,y:90,z:120};
punti[65] = {x:30,y:-90,z:120};
punti[66] = {x:-30,y:-90,z:120};
punti[67] = {x:-30,y:90,z:120};
punti[68] = {x:-30,y:90,z:-120};
punti[69] = {x:30,y:90,z:-120};
punti[70] = {x:30,y:-90,z:-120};
punti[71] = {x:-30,y:-90,z:-120};
punti[72] = {x:90,y:30,z:120};
punti[73] = {x:90,y:-30,z:120};
punti[74] = {x:-90,y:-30,z:120};
punti[75] = {x:-90,y:30,z:120};
punti[76] = {x:-90,y:30,z:-120};
punti[77] = {x:90,y:30,z:-120};
punti[78] = {x:90,y:-30,z:-120};
punti[79] = {x:-90,y:-30,z:-120};
//crea otto clip filmato per gli angoli del cubo
for(i=0;i<punti.length;i++){
attachMovie ("punti","punti"+i,i)
}
}
//prende le coordinate 3d e le converte in una posizione su schermo
function plotPoint(oggetto){
//ottiene le coordinate dell'oggetto
//le coordinate 3D sono inserite in x, y e z
x = oggetto.x;
y = oggetto.y;
z = oggetto.z;
//determina la distanza dal centro
//viene determinata la distanza dal centro all'oggetto sul piano xy
distCentro = Math.sqrt(x*x+y*y);
//calcola il primo angolo
//Math.atan converte una linea in un angolo misurato in radianti.
if (x==0) angolo = Math.atan(1000000);
else angolo = Math.atan(y/x);
if (x<0) angolo += Math.PI;
//aggiunge la rotazione
//la quantità di rotazione è sommata all'angolo
angolo += rotazione;
//calcola le nuove coordinate che tengono in considerazione che l'angolo è cambiato
realex = distCentro*Math.cos(angolo);
realez = distCentro*Math.sin(angolo);
realey = z;
//determina la nuova distanza dal centro all'oggetto sul piano yz
distCentro = Math.sqrt(realey*realey+realez*realez);
//calcola il secondo angolo
//viene determinato l'angolo sul piano yz
if (realez == 0) angolo = Math.atan(1000000);
else angolo = Math.atan(realey/realez);
if (realez<0) angolo += Math.PI;
//aggiunge l'angolo del piano
//l'inclinazione del piano è sonmmata all'angolo
angolo += piano;
//calcola le coordinate sullo schermo
//sono calcolate le coordinate nuove che tengono in considerazione l'inclinazione
schermox = realex;
schermoy = distCentro*Math.sin(angolo);
schermoz = distCentro*Math.cos(angolo);
//centra l'oggetto sullo schermo
//le nuove coordinate presumono che 0,0 sia il centro dello schermo.
//Quindi, il reale centro dello schermo(275,200) viene sommato a tali coordinate per correggerle
schermox += 180;
schermoy += 300;
//restituisce l'oggetto
return({x:schermox,y:schermoy,z:schermoz});
}
//esegue un cliclo tra i punti e imposta gli angoli del cubo
function disegnaPunti(){
for(i=0;i<punti.length;i++){
loc = plotPoint(punti[i]);
this["punti"+i]._x = loc.x;
this["punti"+i]._y = loc.y;
this["punti"+i]._alpha = loc.z+150;
}
}
//riposiziona il cubo a ogni fotogramma
function riposizionamento(){
rotazione += (180-_xmouse)/1000;
piano = -(300-_ymouse)/100;
disegnaPunti();
disegnaLinee();
}
//esegue la chiamata alle funzioni iniziali e interrompe la piproduzione su questo fotogramma
rotazione = 0;
creaPunti();
creaLinee();
stop();
Ovviamente nella libreria ho il mio simbolo grafico chiamato "punto" che è il loghino che andrà a formare la mia sfera di loghini.
Spero di essere stato abbastanza capibile.
Grazie mille!
![]()