- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- invocare una funzione in un oggetto istanziato
-
ok, può andar bene.
la mia reale esigenza è però richiamare dalla movieclip principale una funzione della movieclip istanziata (con attachMovie), dove poi tale funzione fà quello che ci siamo detti.
ovviamente deve esserci un modo per identificare a quale istanza richiamare tale funzione, perchè potrei avere 100 istanze dello stesso clip ma vorrei invocare la funzione solo per l'instanza n. x.
è possibile?
-
Devi utilizzare un Array in questo modo:
var clips_array:Array=new Array(); var maninaCheSaluta:Number=2; var maninaAperta:Number=3; var maninaChiusa:Number=4; for(var i:Number=0;i<50;i++) { var clip:MovieClip=_root.attachMovie('nomeclip','clip_'+_root.getNextHighestDepth()+'_mc',_root.getNextHighestDepth()); clips_array.push(clip); } for(var i:Number=0;i<clips_array.length;i++) { clips_array*.onPress=function() { changeStatement(this,maninaCheSaluta); } } function changeStatement(m:MovieClip,n:Number):Void { m.gotoAndStop(n); }
-
quindi non posso avere una movieclip con le sue funzioni in un'altra movie clip e da questa usare le funzioni della movieclip incorporata?
-
@bubbolo said:
quindi non posso avere una movieclip con le sue funzioni in un'altra movie clip e da questa usare le funzioni della movieclip incorporata?
Adesso non ti seguo...
-
lo so potrebbe sembrare strano.
mi spiego meglio, magari con un esempio:
poniamo di avere un cane che, in qualità di OGGETTO, ha dei metodi che potrebbero essere SEDUTO, CORRI, FERMO, etc.etc.
poniamo ora di farne un clone e "consegnarlo" ad un padrone, che sarà abituato a impartire i comandi di cui sopra.
se facessimo 1000 cloni tutti utilizzerebbero gli stessi comandi.
quindi se il cane è l'oggetto che vorrei creare esso dovrebbe avere da qualche parte incorporato il codice per eseguire i comandi (diciamo delle funzioni).
la clip che lo ospiterà dovrà semplicemente inviargli questi comandi; scrivendo del codice (ma probabilmente sbagliando):
ponendo "aaa" l'oggetto origine e pensando che questo abbia una funzione, diciamo, myFunc()
nella clip principale se faccio
_root.attachMovie("aaa","mynewmovie1",1);
quello che vorrei ottenere è qualcosa del genere
mynewmovie1.myFunc();è possibile?
-
Stai parlando di Object Oriented Programming.
Certo che è possibile ma devi lavorare con le Classi di Flash e sfruttare l' Ereditarietà.
Crei i tuoi Oggetti (Classi) e li implementi con i propri metodi (funzioni) e proprietà.
-
mi faresti un esempio in tal senso?
-
E' difficile fare un esempio di Object Oriented Programming.
E' come dire ad un geometra se ti fa un esempio su come si costruisce una casa...Hai già delle basi di OOP ?
-
si, capisco.
ho gia' delle basi di OOP, ma con flash sono agli albori.
-
Questo potrebbe essere un primo esempio:
class Manina { private var clip:MovieClip; public function Manina() { this.init(); } private function init(Void):Void { this.clip=_root.attachMovie('ma_manina','manina_mc',_root.getNextHighestDepth()); } public function saluta(Void):Void { this.clip.gotoAndPlay(3); } }
Salvi il file come Manina.as
Dalla timeline istanzi l'oggetto Manina in questo modo:
var my_manina:Manina=new Manina();
e chiami i suoi metodi in questo modo:
my_manina.saluta();
-
ok grazie
proverò...
ciao