Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Tutorial 5 - le logiche condizionali

This is a discussion on Tutorial 5 - le logiche condizionali within the Actioscript 3.0 base - tutorials forums, part of the Articoli e tutorials category; Ciao a tutti ! Proseguo con la serie di tutorials di Actionscript 3.0 base . Questa volta voglio introdurvi alle logiche ...


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

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 01-11-07, 06:44
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Tutorial 5 - le logiche condizionali

Ciao a tutti !
Proseguo con la serie di tutorials di Actionscript 3.0 base.
Questa volta voglio introdurvi alle logiche condizionali.
Come vi sarà di certo già capitato, alle volte necessitiamo di fare delle scelte su quale codice fare eseguire da Flash.
Actionscript 3.0 permette di fare queste scelte applicando delle condizioni che se verificate eseguono un blocco di codice, altrimenti ne eseguono un altro.
In questo modo possiamo indirizzare Flash in una sequenza di codice scelta dai differenti eventi che possono presentarsi.

Gli operatori di logiche condizionali più utilizzati sono i seguenti:
- if
- else
- else if
- switch

Vediamo quando e come utilizzarli...

if


Supponiamo di avere una variabile di tipo String
Code:
var my_name:String='filippo';
e che vogliamo fare eseguire del codice a Flash in base al suo valore.
In questo caso dobbiamo dire a Flash di controllare prima il valore di my_name e poi di eseguire il corrispettivo codice.
Quindi:
Code:
if(my_name=='filippo')
{
	trace('ok');
}
if lo dice la parola stessa che in inglese significa se. In questo modo diciamo a Flash di controllare un qualcosa. Cosa ? Quello che è scritto tra le parentesi tonde subito dopo la dichiarazione di if, infatti
(my_name=='filippo') dice a Flash il valore di my_name è uguale ( in Actionscript per usare l' operatore di uguaglianza all' interno di un if bisogna usare il simbolo == ) a 'filippo'
esegui il codice tra le parentesi graffe.
Quindi ottengo il seguente output:
ok
E se non fosse 'filippo' il valore di my_name, con il codice appena visto Flash non eseguirebbe alcun codice.
Come dire a Flash se il valore non è 'filippo' di eseguire dell' altro codice ?
Semplice ! Basta usare:

else


in questo modo:
Code:
var my_name:String='luca';

if(my_name=='filippo')
{
	trace('ok');
}
else
{
	trace('il valore di my_name non è filippo');
}
else, lo dice la parola stessa che in inglese significa ' altrimenti ', fa eseguire il codice tra le sue graffe se la condizione richiesta precedentemente con if non è vera.
Quindi in questo caso ottengo il seguente output:
il valore di my_name non è filippo
appunto perchè Flash prima verifica la condizione dell' if se è vera e non essendolo, salta il codice nelle graffe di if ed esegue il codice tra le graffe di else.

Vediamo un altro esempio con doppia condizione e l' operatore and logico &&.
Ho due variabili, una String ed una Boolean.
Ho una funzione che cambia il valore della variabile di tipo String e applico delle logiche condizionali if/else:
Code:
var your_name:String='philip';
var male:Boolean=true;

function cambiaNome():void
{
	your_name='johnny';
}

if(your_name=='philip'&&male==true)
{
	trace('la condizione è esatta');
}
else
{
	trace('la condizione NON è esatta');
}
Chiaramente, se non chiamo la funzione, Flash esegue l' if, in quanto la verifica è vera.
NB: l' operatore && dice a Flash che c'è una seconda condizione, per rimanere sul pratico è come scrivere e.
Quindi ottengo questo output
la condizione è esatta

Se invece chiamo la funzione cambiaNome
Code:
var your_name:String='philip';
var male:Boolean=true;

cambiaNome();

function cambiaNome():void
{
	your_name='johnny';
}

if(your_name=='philip'&&male==true)
{
	trace('la condizione è esatta');
}
else
{
	trace('la condizione NON è esatta');
}
ottengo questo output
la condizione NON è esatta
perchè Flash ha verificato come false la prima condizione contenuta tra le parentesi tonde dell' if e quindi esegue il codice di else.

Altro esempio con l' operatore or logico ||
Ho sempre 2 variabili, una di tipo String e l' altra di tipo Boolean
Code:
var fruit:String='apple';
var black:Boolean=false;

if(fruit=='banana'||black==false)
{
	trace('almeno una delle 2 condizioni è esatta');
}
else
{
	trace('nessuna delle 2 condizioni è esatta');
}
in questo caso, if si traduce così: se fruit è uguale a banana oppure black è uguale a false allora esegui il codice. Quindi basta che sia vera una delle 2 condizioni delntro alle parentesi tonde di if.
Infatti ottengo il seguente output
almeno una delle 2 condizioni è esatta

e se ad esempio cambiassi il valore di black da false a true, allora neanche una delle 2 condizioni risulta esatta ed otterrei il seguente output:
nessuna delle 2 condizioni è esatta

else if


Questo comando spiega se stesso dal significato delle sue stesse parole: altrimenti se...

Facciamo un esempio, siamo dentro ad un ciclo e controlliamo il valore della variabile di controllo ( in questo caso i )
Code:
var max:int=20;
for(var i:int=0;i < max;i++)
{
	if(i==0)
	{
		trace('la i ha valore '+i);
	}
	else if(i==3)
	{
		trace('la i ha valore '+i);
	}
	else
	{
		trace('la i non ha valore 0 e non ha valore 3');
	}
}
utilizzo if per controllare se i ha valore 0, else if per controllare se i ha valore 3, else per controllare se il valore di i non è ne 0 ne 3.
In sostanza, rimanendo sul pratico:
se i è uguale a zero fai una cosa, se i è uguale a 3 fane un' altra e se i non è ne 0 e ne 3 allora fanne un' altra ancora.
Ottengo il seguente output:
la i ha valore 0
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3
la i non ha valore 0 e non ha valore 3

switch


Questa istruzione, analogamente a if che abbiamo visto, crea una struttura ramificata e ne verifica le condizioni eseguendo solo quelle che risultano vere ( true ).
Code:
var new_name:String='filippo';
switch(new_name)
{
	case 'luca':
	trace(' la variabile new_name non ha valore luca');
	break;
	
	case 'filippo':
	trace('la variabile new_name ha valore filippo');
	break;
	
	case 'giacomo':
	trace('la variabile new_name non ha valore giacomo');
	break;
}
Ho creato una variabile di tipo String che ha valore 'filippo'.
switch(new_name) è come dire controlla(new_name)
case, se è il caso è 'luca'
trace.... esegui questo codice
break dice a Flash di ignorare il resto del codice una volta che sia stato trovato il caso true
Infatti ottengo il seguente output:
la variabile new_name ha valore filippo
gli altri comandi non vengono eseguiti.

Presto pubblicherò un tutorial su queste logiche condizionali applicato alla costruzione e gestione di un menu e della timeline.

Stay tuned !
__________________

 


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

  #2 (permalink)  
Old 17-05-08, 14:15
Junior Member
 
Join Date: Apr 2008
Posts: 25
Rep Power: 0
chaosmonger is on a distinguished road
Re: Tutorial 5 - le logiche condizionali

Ho un dubbio, magari è una cosa semplicissima...
Ho un MovieClip chiamato MENU, che contiene al suo interno altri 5 MovieClip relativi ad altrettanti Pulsanti dove nella timeline ci sono animazioni di assolvenza-dissolvenza per ogni tasto (con rollover, rollout e click).
Voglio in pratica assegnare una variabile numerica chiamata "on" per ogni tasto, in modo tale che usando la condizionale IF mi faccia partire l'animazione di chiusura qualora uno degli altri pulsanti fosse acceso. Mi spiego meglio, se clicco sul Pulsante1, mi appare un rettangolo che me lo evidenzia, se premo sul Pulsante2, voglio che mi appaia il relativo rettangolo ma si chiuda quello del Pulsante1 nell'apposita timeline.

In sostanza ho un MovieClip con istanza MENU, che contiene 5 MovieClip con istanza BUT1, BUT2, BUT3, BUT4, BUT5 (dove ci sono nella stessa timeline le animazioni di rollout-over e click, nonché i rispettivi Pulsanti chiamati BOT1, BOT2, BOT3, BOT4, BOT5).

Ho provato ad inserire nel primo frame del MovieClip Menu il seguente codice:

Code:
var on1:Number=0;
var on2:Number=0;
var on3:Number=0;
var on4:Number=0;
var on5:Number=0;
Dove assegno come "on1" (che sta per pulsante 1 acceso) il valore numerico 0, che diventerà pari a 1 quando il suddetto pulsante viene cliccato.

Il codice nel MovieClip che contiene il pulsante è il seguente:

Code:
stop()

import flash.events.MouseEvent;

BOT1.addEventListener(MouseEvent.CLICK, apri1);
BOT1.addEventListener(MouseEvent.MOUSE_OVER, over1);
BOT1.addEventListener(MouseEvent.MOUSE_OUT, out1);

function apri1(event:MouseEvent):void {
    gotoAndPlay(20);
}

function over1(event:MouseEvent):void {
    gotoAndPlay(2);
}

function out1(event:MouseEvent):void {
    gotoAndPlay(11);
}

Dove i vari gotoAndPlay si riferiscono alle varie animazioni.
Vorrei cambiare lo stato della variabile "on1" alla funzione "apri1", ma se scrivo "on1=1" non mi da' segni di vita. Allo stesso modo vorrei che se premo il Pulsante2, mi verifichi se il Pulsante1 è acceso e nel caso mi mandi in play l'animazione di chiusura. Scrivo il seguente codice...

Code:
function apri2(event:MouseEvent):void {
    if(on1==1){this.MENU.BUT1.gotoAndPlay(21)};
    gotoAndPlay(20);
}
Ma all'atto della pubblicazione mi dice "Accesso alla proprietà non definita on1". Ho provato anche a dargli il percorso, considerando che assegno la variabile al primo frame del MovieClip MENU, ho cambiato la dicitura con
Code:
if(this.MENU.on1==1)
e con
Code:
if(root.MENU.on1==1)
Ma mi da' lo stesso problema...

Consigli? Suggerimenti???

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
Tutorial 4 - le funzioni Flep Actioscript 3.0 base - tutorials 2 11-11-08 11:18
logiche condizionali con il PHP Flep Flash CS3 | PHP | mySQL 3 06-03-08 05:37
prima l'interfaccia o prima il codice delle logiche? nootropic.kint Flash CS3 Design 3 23-11-07 13:19
Tutorial 7 - the packages Flep Object Oriented Programming - tutorials 3 13-11-07 02:42
Tutorial 8 the constants Flep Object Oriented Programming - tutorials 0 30-10-07 06:47


All times are GMT. The time now is 20:46.


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