Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB6] Comunicare con Flash 8

    Salve ragazzi, ho un piccolo problema con la classe introdotta in Flash 8: la ExternalInterface. Seguendo l'esempio mostrato nel corposo help di Flash, ho avuto dei problemi di risposta da Visual Basic 6. In pratica lanciando una call("nome_funzione", parametri) con la suddetta classe, lo script di VB6 la "sente", solo che non ritorna un valore indietro.

    codice:
    import flash.external.*;
    
    var return_value:String = ExternalInterface.call("my_function","test");
    my_text.text = return_value;
    Ora, se io faccio partire questo filmato in VB6, all'evento FlashCall mi arriva una stringa parsata in XML e fin qui tutto ok. Come faccio però a far tornare indietro un valore? Ho provato con il metodo FlashObj.SetReturnValue ma senza successo, mi scrive undefined in my_text. Essendo una Sub in VB6 non è previsto un valore di ritorno. Allora come fare?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    VB6 utilizza le Function per restituire un valore al posto delle Sub ...

  3. #3
    Cioè, come dovrei fare esattamente? FlashCall è una Sub, non una Function ed è l'unica cosa che mi legge l'input di Flash.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un attimo ... fammi capire (dato che non ho mai usato Flash con VB ...) ...

    Qual e' il codice VB che usi ed, esattamente, quello in flash ... ?

    Cosa invii a VB ?

    Cosa ti aspetti da VB ?

  5. #5
    Allora ti spiego meglio:
    La classe ExternalInterface di Flash 8 è in grado di richiamare funzioni al suo player, che può essere l'HTML (gestito via Javascript) o appunto un'applicazione desktop come VB. Il fatto è che per Javascript è sufficente che io metta nella stessa pagina dove c'è il filmato Flash una semplice funzione che mi restituisce un valore, per VB invece sembra di no. Questo è il codice di VB che mi gestisce l'evento call di Flash 8:

    codice:
    Private Sub ShockwaveFlash1_FlashCall(ByVal request As String)
        
    End Sub
    Dove request è una stringa in XML inviata da Flash 8 che contiene il nome della funzione da chiamare e volendo anche degli argomenti da passare. Il codice di Flash 8 è nel primo post. Quindi, alla riga ExternalInterface.call("my_function","test"); VB entra nella Sub FlashCall ma poi non potendo restituire un valore che Flash 8 si aspetterebbe, la successiva riga my_text.text = return_value; mi da undefined.

    Io pensavo che funzionasse come il Javascript, cioè creare una funzione normale in VB, ad esempio:

    codice:
    Function MyFunction()
        MyFunction = "OK"
    End Function
    Restituendo quindi la stringa "OK" alla chiamata ExternalInterface.call("MyFunction"); di Flash 8. Invece non è così semplice a quanto pare...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovresti provare con

    Function MyFunction() As String
    MyFunction = "OK"
    End Function

    perche' altrimenti VB ritorna un Variant che non e' lo stesso di una stringa ...

  7. #7
    Il problema principale è che non entra proprio in quella funzione (ho provato con un MsgBox per vedere se ci entrava).

  8. #8
    Facendo vari test con Javascript ho scoperto delle stranezze. In locale la pagina HTML con il filmato Flash che dialoga con Javascript non funziona. Se invece la metto in un web-server, su Firefox funziona bene, su IE6 gli arriva solo il segnale ma non risponde (resituendo null).

    Ho provato anche con il browser interno di VB6 ma praticamente si comporta come IE6...

    Forse è una protezione di sicurezza?

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Ho spostato la discussione all'interno del forum dedicato a Visual Basic (VBx, VBA, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...).

    In futuro, poni in questo forum le domande relative a questi linguaggi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10

    Re: Moderazione

    Originariamente inviato da alka
    Ho spostato la discussione all'interno del forum dedicato a Visual Basic (VBx, VBA, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...).

    In futuro, poni in questo forum le domande relative a questi linguaggi.

    Ciao!
    Ti ringrazio e anzi scusami per la mia svista. Non avevo proprio visto la sezione dedicata; delle volte sono proprio un fagiano!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.