This is a discussion on attachMovie - rimosso anche quello within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; zzup :P
Come abbiamo visto le differenze tra AS 2 e AS 3 non sono poche , anzi direi che sono ...
zzup :P
Come abbiamo visto le differenze tra AS 2 e AS 3 non sono poche , anzi direi che sono molte e profonde.
Il metodo attachMovie è stato rimosso per cui spiegherò come 'attaccare' una MovieClip tramite linkage dalla libreria e vedremo che sarà semplice ma soprattutto la bellezza della Object Oriented Programming.
Creo il mio FLA e lo chiamo 'attach_me'.
Creo una MovieClip e la chiamo 'mc_clip'.
Creo una MovieClip all'interno di mc_clip e la chiamo 'mc_dot'.
Ora creo la Document Class (la Main Class):
Code:
package
{
import flash.display.MovieClip;
public class AttachMe extends MovieClip
{
public function AttachMe()
{
stage.frameRate=24;
var clip:Clip=new Clip();
this.addChild(clip);
}
}
}
e salvo il file AS con nome 'AttachMe' (sempre come il nome della Classe...sempre!).
Non spaventiamoci della riga var clip:Clip=new Clip(); , ora vedremo chi è Clip.
Mi creo un'altra Classe chiamata 'Clip' e la salvo sempre nella stessa direcory di attach_me.fla e di AttachMe.as:
Code:
package
{
import flash.display.MovieClip;
import flash.events.*;
public class Clip extends MovieClip
{
private var spring:Number=.1;
private var center:Number;
private var vel_x:Number=0;
public function Clip()
{
this.center=this.width/2;
this.initEvent();
}
public function initEvent():void
{
this.dot_mc.x=this.vel_x;
this.dot_mc.y=this.height/2;
this.dot_mc.addEventListener(Event.ENTER_FRAME,bounding);
}
public function bounding(event:Event):void
{
var acc_x:Number=(this.center-this.dot_mc.x)*this.spring;
this.vel_x+=acc_x;
this.dot_mc.x+=this.vel_x;
}
}
}
Adesso torno nel mio FLA e:
click col destro su mc_clip in libreria, seguo linkage e si apre la famosa finestrella dove con Flash 8 si metteva il nome di riferimento per l'esportazione con Actionscript della MovieClip.
Attivando l'opzione ' Export for Actionscript ' mi si attivano 2 campi di testo:
- Class
- Base class
In Class scrivo : Clip ( poi vedremo il perchè ) mentre Base class lo lascio com'è.
A questo punto all'interno della classe Clip, il' this' è riferito esattamente alla MovieClip 'mc_clip' che viene istanziata ( per dire in volgare 'attaccata' ) dalla libreria.
Lancio l'swf: Risultato:
Come possiamo vedere, all'interno della classe Clip, chiamo this.dot_mc, è esattamente dot_mc che sta dentro mc_clip in libreria..
Questo dimostra che, anche chi ha poco distemichezza col codice, una volta istanziata la MovieClip da libreria attraverso il linkage ( identificatore ), possiamo avere al suo interno tutto quello che vogliamo e sarà facilmente accessibile.
Alla prossima !
Come viene sostituito l'attachMovie? L'esmpio funziona, ma devo trascinare il clip nello stage. Qual'è la parte di codice in cui utilizzo AttachMe.as e importo mc_clip nello stage tramite AS?
CORREGGO ANCORA: nessun problema se al campo di testo dinamico non assegno nessun nome... certo però che se non gli do un nome come capperi lo richiamo? :)
Ho aggirato il problema rinunciando ad attaccare il movieclip dalla libreria... l'ho messo fuori dallo stage e continuo il mio lavoro... ma se qualcuno scoprisse se è possibile attaccare dalla libreria un MC che contiene un campo di testo dinamico faccia sapere...
ciao
Ok, continua la ricerca...
Allora ho continuato le mie prove e ho capito questo:
Il movieclip con dentro un campo di testo dinamico di nome "pippo" lo posso attaccare dalla libreria senza problemi se risiede sul fla "madre"
se invece io ho un fla "nonna" che carica un fla "madre" e il movieclip risiede nella libreria di questultimo non posso attaccarlo se il campo di testo dinamico ha un nome...
Spero di non essere stato confusionario...
Se qualcuno può aiutarmi....
Thanks