This is a discussion on DuplicateMovieClip - rimosso within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Permettetemi di dire che sono contento che il metodo DuplicateMovieClip sia stato rimosso.
Personalmente ho avuto grossi problemi con le ...
Permettetemi di dire che sono contento che il metodo DuplicateMovieClip sia stato rimosso.
Personalmente ho avuto grossi problemi con le gestioni delle profondità utilizzando DuplicateMovieclip con Flash8 ed Actionscript 2.0, tanto da accantonarlo a priori e non utilizzarlo mai.
Con Flash CS3, basta utilizzare la keyword new per istanziare una nuova MovieClip.
In questo articolo mostrerò come duplicare delle MovieClips utilizzando il linkage ( identificatore per chi ha Flash versione italiana ) come ho fatto in questo articolo
Saltiamo dentro il vivo dell' articolo...
Creo un FLA che salvo con nome ' duplicate.fla ' al cui interno creo una MovieClip ( senza istanziarla ma lasciandola in Libreria ) con nome mc_clip.
Creo al Document Class, un file As che salvo con nome ' Duplicate.as ', implementata in questo modo:
Code:
package
{
import flash.display.MovieClip;
public class Duplicate extends MovieClip
{
private const numero_clips:int=100;
private var clips_array:Array;
public function Duplicate()
{
duplica();
}
private function duplica():void
{
clips_array=new Array();
for(var i:int=0;i < numero_clips;i++)
{
var clip:MyClip=new MyClip();
addChild(clip);
clip.x=Math.random()*stage.stageWidth;
clip.y=Math.random()*stage.stageHeight;
clip.scaleX=.1+Math.random();
clip.scaleY=.1+Math.random();
clip.alpha=.2+Math.random();
clip.rotation=Math.random()*360;
clips_array.push(clip);
}
}
}
}
Adesso creo una Classe e la associo a mc_clip che ho in libreria di duplicate.fla.
Creo un file AS che salvo con nome ' MyClip.as ', implementata in questo modo:
Code:
package
{
import flash.display.MovieClip;
public class MyClip extends MovieClip
{
public function MyClip()
{}
}
}
Torno su duplicate.fla , e assegno come identificatore ' MyClip ' a mc_clip che ho in libreria.
Ecco il risultato:
Analizziamo il codice.
Proprietà:
una costante con il numero di clip che voglio duplicare/attaccare
private const numero_clips:int=100;
un Array in cui inserire ogni clip duplicata, è buona regola tenere traccia di ogni clip creata in modo che sipossa recuperare in ogni momento ( anche se non è questo il caso )
private var clips_array:Array;
Metodi:
duplica();
inizializzo l' array
clips_array=new Array();
creo un ciclo con massima iterazione pari al valore della costante numero_clips
for(var i:int=0;i < numero_clips;i++)
{
quì creo una nuova clip ( non è altro che mc_clip della libreria di duplicate.fla )
var clip:MyClip=new MyClip();
dato che MyClip estende la classe MovieClip in quanto mc_clip in libreria è una MovieClip, eredita tutti i metodi e tutte le proprietà della classe MovieClip e quindi la aggiungo al DisplayObject ( altrimenti non sarebbe visibile )
addChild(clip);
assegno un valore random tra lo zero e la larghezza dello stage alla x della clip
clip.x=Math.random()*stage.stageWidth;
assegno un valore random tra lo zero e l' altezza dello stage alla y della clip
clip.y=Math.random()*stage.stageHeight;
assegno un valore random tra 0.1 e 1 alla proprietà scaleX della clip
clip.scaleX=.1+Math.random();
assegno un valore random tra 0.1 e 1 alla proprietà scaleY della clip
clip.scaleY=.1+Math.random();
assegno un valore random tra 0.2 e 1 alla proprietà alpha della clip
clip.alpha=.2+Math.random();
assegno un valore random tra 0 e 360 alla proprietà rotation della clip
clip.rotation=Math.random()*360;
inserisco la clip nell' array
clips_array.push(clip);
}