Personalizzare il ContextMenu

Di: rikkardone | 26/09/2020 18:30:12
Ciao,
ho cercato di cambiare il menu contestuale, eliminando l'eliminabile e creando una nuova voce per i crediti. Ovvero quel menu che appare quando si schiaccia il tasto dx del mouse sull'swf una volta inserito nel browser.
Ho seguito questo tutorial:
http://flash.html.it/articoli/stampa/2099/personalizzare-il-menu-contestuale
Purtroppo, però, non mi si visualizza la voce che ho inserito... indi, non posso nemmeno sapere se la funzione ad essa associata è corretta.
Questo è il codice:
----------
stop();
Stage.showMenu=false;
var MENUPERSONALIZZATO:ContextMenu=newContextMenu();
MENUPERSONALIZZATO.customItems.push(newContextMenuItem("© Riccardo Anelli 2008", LINKPORTFOLIO));
function LINKPORTFOLIO(clip) {
getURL("http://www.riccardoanelli.it", "_blank");
}
this.menu=MENUPERSONALIZZATO;
MENUPERSONALIZZATO.hideBuiltInItems();
----------
Qualcuno sa gentilmente dirmi dove sbaglio?...
Grazie mille!

Risposte



hola!!
Premetto che quello che so di questo argomento è ciò che ho letto sul tutorial da te postato...
..dando un'occhiata veloce al tuo codice e leggendo il tutorial ho notato che avvisano che la funzione che richiami nel menù constestuale deve essere dichiarata altrimenti tale voce non sarà visibile, nel tuo codice riporti l'istruzione:
MENUPERSONALIZZATO.customItems.push(newContextMenuItem("© Riccardo Anelli 2008", LINKPORTFOLIO));
però la funzione che dichiari è:
function LINKPORTFOLIO(clip) {
ovvero gli dai come parametro d'ingresso "clip" che penso sia un filamto...
...ora, se ci trovassiamo alle prese con un compilatore vero e proprio, ad esempio uno per il linguaggio c, la funzione:
LINKPORTFOLIO
viene considerata diversa dalla funzione:
LINKPORTFOLIO(clip)
e ciò causerebbe un errore di compialzione, di solito però il compilatore flash, non bada molto a questi formalismi di scrittura e spesso al posto di generare un errore, semplicemente ignora la funzione non trovata...
il consiglio quindi è quello o di cambiare l'intesazione della tua funzione, che diverra:
function LINKPORTFOLIO {
oppure fornire il parametro "clip" alla funzione quando la richiami, ovvero:
MENUPERSONALIZZATO.customItems.push(newContextMenuItem("© Riccardo Anelli 2008", LINKPORTFOLIO(mio_clip)));
...spero di esserti stato utile e fammi sapere se era questa la giusta soluzione...

Di: alispiegate | 26/09/2020 18:31:12


Ti ringrazio, ma il nodo non era quello...
Il codice corretto è questo:
----------
stop();
var MENUPERSONALIZZATO:ContextMenu=new ContextMenu();
MENUPERSONALIZZATO.customItems.push(new ContextMenuItem("© 2008 Riccardo Anelli", LINKPORTFOLIO));
function LINKPORTFOLIO() {
getURL("http://www.riccardoanelli.it", "_blank");
}
this.menu=MENUPERSONALIZZATO;
MENUPERSONALIZZATO.hideBuiltInItems();
------------
Un paio di spazi omessi e un comando da non usare.

Di: rikkardone | 26/09/2020 18:31:12