Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

This is a discussion on chiamate dalla timeline verso la Document Class e viceversa con Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Salve a tutti, quanto andrò a mostrare non fa sicuramente parte delle buone norme di programmazione Actionscript, ma data la ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  2 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 21-09-07, 08:50
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

Salve a tutti,
quanto andrò a mostrare non fa sicuramente parte delle buone norme di programmazione Actionscript, ma data la numerosa comunità di Flash Designers, sarà sicuramente utile.
Mi è capitato spesso di ricevere richieste di aiuto su come gestire le timeline delle MovieClip sullo stage o di MovieClip annidate una dentro l' altra. Soprattutto di come poter riferirsi alla Document Class dalle MovieClips sullo stage e da quelle annidate in loro.
Spero con questo esempio di aiutare a comprendere questa comunicazione tra timeline e Document Class sempre però ricordando che*è meglio scrivere codice solo sulla Document Class oppure,*se proprio*non ne potete fare a meno, di scriverlo nella timeline principale senza spargerlo per tutta l' applicazione.

Entriamo nel sodo...

Creo un FLA che salvo con nome ' main.fla '.

Al suointerno creo una MovieClip e la istanzio sullo stage con nome clip_mc.
Questa MovieClip ha al suo interno un' animazione composta da circa 30 frames che la sposta da sinistra verso destra.

Adesso creo la Document Class, un file AS che salvo con nome ' Main.as ', implementata in questo modo:
Code:
package
{
	import flash.display.MovieClip;
	
	public class Main extends MovieClip
	{
		public function Main()
		{
			clip_mc.stop();
		}
		
		public function PlayClip():void
		{
			clip_mc.play();
		}
		
		public function aumentaY():void
		{
			clip_mc.y+=60;
		}
	}
}
Come possiamo notare, abbiamo la funzione costruttrice ( public function Main ) che ferma la timeline di clip_mc che abbiamo sullo stage.
Inoltre abbiamo due metodi ( o funzioni ) pubblici ( così riachiamabili anche dall' esterno della classe ) di cui :

PlayClip, se chiamato, farà partire la timeline di clip_mc che è sullo stage

aumentaY, se chiamato, incrementerà la proprietà y di clip_mc che è sullo stage

A questo punto andiamo a vedere come chiamare questi 2 metodi dalla timeline:

sul primo e unico keyframe della timeline principale scrivo PlayClip(); e lanciando l' SWF mi accorgerò che clip_mc sta andando verso destra, ciò significa che la sua timeline è stata fatta partire... da chi ? Appunto dalla chiamata al metodo PlayClip(). La cosa davverobella è che in questo modo ho chiamato una funzione che è implementata nella Document Class. Questo dovrebbe far capire a chi ancora ha dubbi sulla Document Class che scrivere sulla Document Class è come se stessimo scrivendo sulla timeline, infatti la chiamata PlayClip dalla timeline sembra che sia verso una funzione implementata nella timeline stessa.

Detto questo, supponiamoora che avessimo bisogno di chiamare un metodo sempre della Document Class dall'ultimo keyframe dell' animazione nella timeline di clip_mc. Come fare ?
Ho fatto diverse prove e ora ve le illustro:

ho provato a scrivere appunto sull' ultimo keyframe di clip_mc : trace (this.parent); e l' output ottenuto è stato: [object Main]. Questo significa che la timeline principale stessa del nostro main.fla è una istanza della classe Main che abbiamo creato. Per cui, a rigor di logica se io chiamassi:
this.parent.avanzaY(); flash dovrebbe chiamare il metodo avanzaY che è nella Document Class... ma non è così... infatti se proviamo Flash ci dice con un errore che this.parent non ha un metodo che si chiama avanzaY ( che strano eh )...
Allora sono ricorso alla 'variabile universale ':
var m:*=this.parent;
m.aumentaY();

creo una variabile che possa ospitare qualsiasi tipo di dato/valore e gli assegno this.parent. Poi chiamo avanzaY con la variabile m.
Allego i files sorgente:
Attached Files
File Type: zip dalla_timeline_alla_documentclass.zip (7.6 KB, 59 views)

__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 05-06-08 at 00:23..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 01-10-07, 14:06
Eugene's Avatar
Member
 
Join Date: Sep 2007
Location: Dagobah
Posts: 97
Rep Power: 2
Eugene is on a distinguished road
Send a message via MSN to Eugene Send a message via Skype™ to Eugene
Illuminante!

Grazie.
__________________
<-- Fare o non fare, non c'è provare -->

http://www.yodastudio.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 14-11-07, 10:23
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: chiamate dalla timeline verso la Document Class e viceversa con Flash CS

this.parent dovrebbe indicare il percorso necessario per poter chiamare la funzione aumentaY() della classe Main..

tutto chiaro.. solo che non ho capito cosa singolarmente fanno this e parent"

spero di non aver fatto idiota
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 14-11-07, 10:36
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

Ciao ehijon e benvenuto

this è riferito a clip_mc
parent è il padre, cioè chi la contiene.
Quindi this.parent è la timeline principale.
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 14-11-07, 11:01
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: chiamate dalla timeline verso la Document Class e viceversa con Flash CS

grazie x il benvenuto e la risposta immediata !!

mmm... ho capito.. ma è buffo perchè mi sembra di scriverlo al contrario e mi verrebbe da scrivere seguendo una logica ad albero (considerando clip_mc come la mela finale), cioè prima parent.this.funzione();

forse ti so chiedendo troppo, ma potresti fare un esempio con un moveClip annidato in un altro moveClip? cioè abbiamo sempre il Main.as

Code:
package
{
	import flash.display.MovieClip;
	
	public class Main extends MovieClip
	{
		public function Main()
		{
			clip_mc.stop();
		}
		
		public function PlayClip():void
		{
			clip_mc.play();
		}
		
		public function aumentaY():void
		{
			clip_mc.y+=60;
		}
	}
}
ma, in questo caso, nella Timeline abbiamo un moveClip (per esempio con istanza) contenitore_mc, al cui interno abbiamo il nostro moveClip con istanza clip_mc.
in questo caso che posso fare in modo che clip_mc (che sta all'interno di contenitore_mc) possa usufruire della funzione aumentaY(); ?
cioè, esattamente, dove inserisco il codice sulla Timeline? e (principalmente) come ordino il codice? cosi? perchè?

Code:
var m:*=this.contenitore_mc.parent;
m.aumentaY();


Ho fatto troppe domande? ahh!!.. ne ho fatta un altra!!...ops.. grazie mille!!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 14-11-07, 11:06
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: chiamate dalla timeline verso la Document Class e viceversa con Flash CS3



La gerarchia di Flash, parte sempre dalla MovieClip alla quale ti vuoi riferire.
Quindi, ricapitolando:
this è clip_mc
this.parent è contenitore_mc
this.parent.parent è la timeline principale.

In sostanza per risalire alla funzione aumentaY, in questo caso:
Code:
var m:*=this.parent.parent;
m.aumentaY();
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 14-11-07, 11:11
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: chiamate dalla timeline verso la Document Class e viceversa con Flash CS

cristallino!

thanks
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #8 (permalink)  
Old 30-03-08, 13:25
Junior Member
 
Join Date: Mar 2008
Posts: 4
Rep Power: 0
sashone is on a distinguished road
Re: chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

se io volessi gestire dalla stessa classe "Main" 2 movie clip,
come faccio?

io ho provato a creare un'altra istanza
in un altro file FLA dando allo stage la stessa
chiamata alla classe Main, ma non li gestisce
come mai?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #9 (permalink)  
Old 01-04-08, 09:16
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

Ciao sashone,
se crei un FLA che continene una MovieClip col nome istanza uguale a quello del FLA precedente e poi gli assegni la Document Class deve andare bene per forza.
Forse c'è qualche altro errorio ?
Ti da degli errori Flash ?
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #10 (permalink)  
Old 01-04-08, 16:12
Junior Member
 
Join Date: Mar 2008
Posts: 4
Rep Power: 0
sashone is on a distinguished road
Re: chiamate dalla timeline verso la Document Class e viceversa con Flash CS3

adesso non sono a casa, cmq
se non ho capito male, io devo creare un altro
file FLA ed istanziarlo con lo stesso
nome del precedente??

Praticamente io ho questo FLA con un document class associata,
lo stesso identico esempio che hai fatto sopra.
Poi creo un altro file FLA che mi deve partire quando
finisce la prima MovieClip, io l'ho creato e gli ho dato
un altro nome, la prima si chiamava Index, la secondo
MovieClip si chiama vecchietto, e l'ho istanziata come vecchietto.

Io ho fatto una semplice cosa,
al tuo codice ho inserito questo:

package
{
import flash.display.MovieClip;

public class Main extends MovieClip
{
public function Main()
{
clip_mc.stop();
}

public function PlayClip():void
{
clip_mc.play();
vecchio.play();
}

public function aumentaY():void
{
clip_mc.y+=60;
}
}
}

poi ho creato la viariabile per chiamare la funzione dall'ultimo
frame del primo movieclip, ma mi dà errore.

A questo punto la domanda è:
qual'è il modo più semplice per far sì che io riesca
a far pertire le movie clip in cascata?
grazie
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Come chiamare un'altra Classe dalla Document Class Flep Articoli e tutorials 37 24-10-08 11:53
richiamare un movieclip annidato dalla document class chaosmonger Actionscript 3.0 base 1 21-05-08 10:25
Call from the timeline to the Document Class and vice versa with Flash CS3 Flep Tutorials 4 24-11-07 17:46
percorrere la timeline in verso opposto salserooo Flash CS3 generale 15 22-10-07 16:31
How to call another class from the Document Class with Flash CS3 Flep Tutorials 0 09-10-07 19:50


All times are GMT. The time now is 11:17.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406