Non molto tempo fà ho dovuto sviluppare un'applicazione che integrasse un filmato Flash e interagisse con esso. Vediamo come realizzare un'applicazione del genere:

Per prima cosa dobbiamo aggiungere nella toolbox (casella degli strumenti) di Visual Studio i controlli Shockwave ActiveX, quindi tasto destro sulla toolbox -> Aggiungi Scheda e assegnargli un nome.

Ora bisogna generare un InterOp Asembly che vi permetterà di usare il controllo ActiveX nel vostro Form. Per fare questo, tasto destro sulla nuova scheda creata nella toolbox -> Scegli elementi -> Componenti COM e aggiungere 'Shockwave Flash Object'.

Prima di fare il drag di questo nuovo controllo sul vostro form bisogna sapere che VS2008 così come il suo predecessore VS2005 non aggiunge automaticamente i riferimenti COM necessari per l' OLE Automation quindi per rimediare a questa situazione bisogna aggiungere il riferimento a OLE Automation COM nel vostro progetto.
Per fare questo, da Esplora Soluzioni espandere il vostro progetto in questione, tasto destro su Riferimenti -> Aggiungi riferimento e nella scheda COM selezionare 'OLE Automation' e fare OK.
Ora draggando il controllo sul form noterete che Visual Studio aggiungerà alcuni nuovi riferimenti al vostro progetto. Questi sono gli InterOp Assembly per il controllo ActiveX Shockwave Flash Object Player.
Create una funzione e caricate il filmato flash in questo modo:

string path = System.Environment.CurrentDirectory;
path += @"\prova.swf";
axShockwaveFlash1.LoadMovie(0,path);
axShockwaveFlash1.Play();


Ricordate di aggiungere l'.swf nella vostra directory di Debug prima di testare.
Spostiamoci ora in Macromedia Flash e vediamo come far interagire il vostro .swf. Per mandare dati da un filmato Flash verso la vostra applicazione c'è bisogno di una chiamata alla funzione FSCommand. Questa funzione richiede 2 parametri opzionali: comando e parametri.








Per fare un esempio ho creato in Flash 3 bottoni (non mi dilungo a spiegare come perchè questo non è un tutorial su Flash):

Nell'evento on (press) dell'action script del primo bottone ci ho inserito:

on (press) {
    fscommand("Bottone","uno");
}

Adesso abbiamo bisogno di raccogliere i dati inviati dal filmato Flash.
Per fare questo incominciamo nell'aggiungere un nuovo gestore di eventi in questo modo:

this.axShockwaveFlash1.FSCommand += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(this.axShockwaveFlash1_FSCommand);

e la sua relativa funzione:

private void axShockwaveFlash1_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{
label1.Text = "E' stato premuto: " + e.command.ToString() + " " + e.args.ToString();
}


Eseguiamo la nostra applicazione:

0 commenti:

Posta un commento