- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- [AS3] Rimuovere un Child dallo Stage con Pulsante
-
[AS3] Rimuovere un Child dallo Stage con Pulsante
Rieccomi qui a fracassarvi le scatole , apro il thread poiché trovo delle difficoltà nel far si che un Child caricato in un frame (è un Form in sostanza, ma mentre qui è un form...in un altra pagina ho la mappa di google fatta con il codice API quindi è un comando che mi servirebbe molto..) venga rimosso nel momento in cui io passo in un altro frame/pagina e quindi dovrei riuscire a fare il modo che tale Child venga rimosso al click di QUALSIASI pulsante del menu.
Questo è il codice del form
[PHP]import com.warmforestflash.ContactForm;
var contactForm:ContactForm = new ContactForm();
contactForm.nameText = "Type your name here";
contactForm.emailText = "Type your email here";
contactForm.messageText = "Type your message here";
contactForm.sendButtonText = "INVIA";
contactForm.sendingText = "Sending message...";
contactForm.errorEmailText = "Your email is not valid.";
contactForm.errorServerText = "Server problems.";
contactForm.confirmationText = "Thanks for contacting me!";contactForm.textColor = 0x000000;
contactForm.borderColor = 0x222222;
contactForm.backgroundColor = 0x000000;
contactForm.selectedBorderColor = 0xCCCCCC;
contactForm.selectedBackgroundColor = 0xffffff;
contactForm.selectedBlurAmount = 50;
contactForm.sendButtonTextColor = 0xffffff;
contactForm.sendButtonTextRollOverColor = 0xffffff;
contactForm.sendButtonColor = 0x05b59a;
contactForm.sendButtonRollOverColor = 0xff4400;
contactForm.errorColor = 0xff4400;
contactForm.confirmationColor = 0x05b59a;contactForm.nameWidth = 400;
contactForm.emailWidth = 400;
contactForm.messageWidth = 550;
contactForm.messageHeight = 200;
contactForm.verticalSpacing = 10;addChild(contactForm);
contactForm.x = 100;
contactForm.y = 100;[/PHP]
e questo è il removeChild che ho creato (perché penso serva un removeChild dato che ho caricato un Child)
[PHP]
addEventListener(MouseEvent.CLICK, onMouseClick10);
function onMouseClick10(event:MouseEvent):void {
removeChild(contactForm);
}[/PHP]Non mettendo nulla davanti all'addEventListener (L'HO SCOPERTO PER CUL OPS FORTUNA XD) al qualsiasi click di qualsiasi pulsante del menu (ho solo quei pulsanti sul sito) il form sparisce e l'utente riesce ad andare nelle altre pagine senza che il form rimanga.
Purtroppo funziona a metà in quanto, si riesco a navigare nelle altre pagine tranquillamente ma mi appare un errore output:
ArgumentError: Error #2025: Il valore fornito per DisplayObject deve essere un elemento secondario del chiamante.
at flash.display::DisplayObjectContainer/removeChild()
at index2_fla::MainTimeline/onMouseClick10()Che come si può vedere è problema del codice generico che ho messo e che per caso ho scoperto.
Domanda quindi: come faccio a sistemare quel cosice? come faccio a generalizzare il codice in maniera corretta? dopo di ciò so anche che è possibile eliminare COMPLETAMENTE L'oggetto (perché così com'è ora rimane in memoria e appesantisce il progetto...) con un comando simile al ...= null; ma non ricordo com'è...
Grazie anticipatamente
-
Ti da qull'errore perchè fa il removeChild anche se il form non è caricato, prova a dichiarare una variabile Booleana e valorizzarla a true solo quando il form è caricato, quindi metti il removeChild dentro una condizione if
if(controllo==true) { removeChild(contactForm) }
-
Nhatan arriverai al punto che avrai parlato più con me che con qualsiasi altra persona in tutta la tua vita hahahaha
Grazie ancora per il supporto ma non ho capito.
Cioè ho capito ma non so come agire.
Io ho capito (dimmi se erro giustamente) che devo , tramite questo codice, far verificare al codice il corretto caricamente del form e solo dopo (il click chiaramente) rimuoverlo dallo stage.
Insomma quello che non ho capito è cosa devo mettere in "controllo" e...questo codice so che devo metterlo dentro questo:
[PHP]addEventListener(MouseEvent.CLICK, onMouseClick10);
function onMouseClick10(event:MouseEvent):void {
removeChild(contactForm);
} [/PHP]ma non so dove di preciso
TI FARO' UNA STATUA TI GIURO
-
Dunque se tu hai un pulsante che carica il form.
stop() var loader:Loader = new Loader(); var controllo:Boolean=false btn_carica_form.addEventListener(MouseEvent.CLICK, carica_form); function carica_form(event:MouseEvent) { loader.load(new URLRequest("form.swf")) //form ad esempio al frame 2 gotoAndStop(2) controllo=true trace(controllo) } addChild(loader) //e lo devi scaricare qualsiasi pulsante premi ad esempio btn_home btn_home.addEventListener(MouseEvent.CLICK, onClick); function onClick(event:MouseEvent) { if(controllo==true) { removeChild(loader) } gotoAndStop(1) controllo=false trace(controllo) }
prova un pò se funziona.
-
Allora il form lo carica ma non lo scarica e i pulsanti non sono molto reattivi quando vengono usati...e mi da anche errore di sicurezza
l'ho compilato cosi:
[PHP]stop()
var loader:Loader = new Loader();
var controllo:Boolean=false
btn_contatti.addEventListener(MouseEvent.CLICK, carica_form);function carica_form(event:MouseEvent) {
loader.load(new URLRequest("contactForm"))//form ad esempio al frame 2
gotoAndStop(2)
controllo=true
trace(controllo)
}
addChild(contactForm)//e lo devi scaricare qualsiasi pulsante premi ad esempio btn_home
btn_home.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent) {
if(controllo==true)
{
removeChild(contactForm)
}
gotoAndStop(1)
controllo=false
trace(controllo)
}[/PHP]Per quanto riguarda il caricamento comunque con il codice che ho postato al primo post riesco a caricarlo...non possiamo usare un semplice removeChild associato ad un qualcosa che generalizzi e dica che qualsiasi pulsante venga cliccato, il form venga scaricato?
Perché dal codice tuo a quanto ho capito devo andare a creare comunque 6 "gruppi":
[PHP]//e lo devi scaricare qualsiasi pulsante premi ad esempio btn_home
btn_home.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent) {
if(controllo==true)
{
removeChild(loader)
}
gotoAndStop(1)
controllo=false
trace(controllo)
}[/PHP]Un altra cosa, il form che carico è un istanza in realtà e non un swf esterno...un istanza dal nome contactForm che per la precisione è questo:
***.warmforestflash.com/blog/2009/06/flash-as3-contact-form-using-php/
per ovviare ad inutili tentativi di caricamento (non vorrei fosse protetto anche questo come l'ultima galleria di cui parlammo tempo fa..) sai dirmi se esiste qualche form da poter inserire e basta e che magari tu hai provato così da esser sicuri?
Ciao Nhatan grazie ancora
-
Nhatan ho risolto aggiungendo una parte di quello che hai scritto , ma in maniera differente.Faccio riferimento per la precisione al controllo, e alla sua funzione.
il codice ora è così composto (se dovesse mai servire a qualcuno):
[PHP]btn_home.addEventListener(MouseEvent.CLICK, onMouseClick7);
function onMouseClick7(event:MouseEvent):void {
if(this.contains(contactForm)) removeChild(contactForm);
}btn_obiettivi.addEventListener(MouseEvent.CLICK, onMouseClick8);
function onMouseClick8(event:MouseEvent):void {
if(this.contains(contactForm)) removeChild(contactForm);
}btn_prodotti.addEventListener(MouseEvent.CLICK, onMouseClick9);
function onMouseClick9(event:MouseEvent):void {
if(this.contains(contactForm)) removeChild(contactForm);
}btn_info.addEventListener(MouseEvent.CLICK, onMouseClick10);
function onMouseClick10(event:MouseEvent):void {
if(this.contains(contactForm)) removeChild(contactForm);
}btn_collabora.addEventListener(MouseEvent.CLICK, onMouseClick11);
function onMouseClick11(event:MouseEvent):void {
if(this.contains(contactForm)) removeChild(contactForm);
}[/PHP]come puoi vedere ho aggiunto il controllo in ogni pulsante tranne in quello del form giustamente, perché se veniva cliccato il controllo si accorgeva del form e lo faceva sparire pur restando nella stessa pagina...
in particolare questa è la parte che ho aggiunto:
[PHP]if(this.contains(contactForm)) [/PHP]
Grazie 1000 per l'aiuto! grazie! mi manca l'altra metà del sito ed ho finito XD però non dovrei incontrare problemi se non la lotta contro il funzionamento del form (e questo lo devo provare sul server) e il caricamento del sito al 100% di un browser..
un info nhatan, ma se io volessi che questo sito venga caricato in risoluzioni differenti...io che devo andarmi a ricreare tutte le immagini che ho usato in diversi formati? (800x600 - 1024x768 quello che uso ora - 1280x1024)