Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [AS3] Inserire/rimuovere oggetti dallo stage

    Ciao, ho alcuni oggetti sullo stage, come posso creare delle funzioni che se richiamate mi rimuovano gli oggetti dallo stage?

    Al contrario.. come posso creare una funzione che se richiamata, mi prenda degli oggetti dalla libreria e me li posizioni sullo stage?

    Grazie a tutti.
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non devi creare funzioni particolari, ci sono già "addChild" e "removeChild" che dovrebbero funzionare correttamente anche per oggetti già presenti sullo stage.
    Ad esempio poniamo di avere sullo stage un movieclip con istanza "clip_test" e un pulsante "bt_test", e vogliamo rimuovere il clip con il click sul pulsante.

    Codice PHP:
    bt_test.addEventListener(MouseEvent.CLICK, function (evt:MouseEvent):void removeChild(clip_test); }); 
    Allo stesso modo, poniamo di avere un clip in libreria concatenato con nome di classe "ClipTest".
    Per aggiungerlo allo stage ne creiamo prima una copia con new e poi lo aggiungiamo con addChild.

    Codice PHP:
    var clip_su_stage:MovieClip = new ClipTest();
    addChild(clip_su_stage); 

  3. #3
    Ciao, grazie mille per la risposta celere, per il tutto da pulsante ok, però mi servirebbe rimuovere un mc alla fine del caricamento (preload) per questo pensavo da una funzione da richiamare a caricamento completato.

    questo lo script di preload sul primo fotogramma del file loader.swf
    Codice PHP:
    var request:URLRequest=new URLRequest(filedacaricare);
    var 
    ldr:Loader = new Loader();
    this.addChild(ldr);

    ldr.contentLoaderInfo.addEventListener(Event.COMPLETEcompleteHandler);
    ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESSprogressHandler);

    ldr.load(request);


    function 
    progressHandler(evt:ProgressEvent):void {
        var 
    percent:Number=evt.target.bytesLoaded/evt.target.bytesTotal;
        
    preloader.fill.scaleX=percent;
    }

    function 
    completeHandler(evt:Event):void {
        
    this.removeChild(preloader);
        
    evt.target.content.gotoAndPlay(2);

    Dove posso posizionare le funzioni da richiamare e come scriverle?
    Praticamente già così mi si rimuove la barra di preload, ora vorrei rimuovere anche un altro mc posizionato sullo stage.

    Buona serata.
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Vedo che c'è già un removeChild, sul COMPLETE, è la stessa cosa.

    codice:
    function completeHandler(evt:Event):void {
        this.removeChild(preloader);
        evt.target.content.gotoAndPlay(2);
    }

  5. #5
    Perfetto, grazie , ora va, prima mi dava degli errori..
    ok credo ora ultima cosa, come scrivo una funzione con all'interno varie azioni, da richiamare tutte insieme da un richiamo che non sia un pulsante?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  6. #6
    Più precisamente.. questa è la funzione, va già bene così per AS3?

    Codice PHP:
    function cambiaSez(sezione) {
        if (
    sezione=="ingresso") {
            
    TweenMax.to(bgSito_mc1, {x:-86roundProps:["x"], ease:Expo.easeOut});
        }
        if (
    sezione=="home") {
            
    TweenMax.to(bgSito_mc1, {x:-898roundProps:["x"], ease:Expo.easeOut});
        }
        if (
    sezione=="showroom") {
            
    TweenMax.to(bgSito_mc1, {x:-3506roundProps:["x"], ease:Expo.easeOut});
        }
        if (
    sezione=="marchi") {
            
    TweenMax.to(bgSito_mc1, {x:-3142roundProps:["x"], ease:Expo.easeOut});
        }
        if (
    sezione=="contatti") {
            
    TweenMax.to(bgSito_mc1, {x:-4764roundProps:["x"], ease:Expo.easeOut});
        }
    }
    cambiaSez("home"); 
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sì, anche se farei così:

    Codice PHP:
    function cambiaSez (sezione:String):void {
        var 
    s:int 0;
        switch (
    sezione) {
            case 
    "ingresso" = -86; break;
            case 
    "home" = -898; break;
            case 
    "showroom" = -3506; break;
            case 
    "marchi" = -3142; break;
            case 
    "contatti" = -4764; break;
        }
        
    TweenMax.to (bgSito_mc1, {x:sroundProps:["x"], ease:Expo.easeOut});
    }
    cambiaSez("home"); 

  8. #8
    Fantastico!!! così mi piace un sacco!!
    ..e se volessi più azioni diversificate per ogni case?
    Ma come mai si mette sempre il void?
    come mai in alcune funzioni c'è "event" ed in altre solo "e"
    ed in questa non c'è nulla?

    In qualsiasi caso ora questa funzione va bene sia se richiamata da un pulsante che da un comando?

    Grazie mille!!!
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Nelle funzioni puoi chiamare i parametri che passi nel modo che preferisci, nelle funzioni legate agli eventi si usa event per abitudine ma puoi chiamarlo nel modo che vuoi, l'importante è poi usare il nome scelto per gestire quel parametro dentro alla funzione, ad esempio

    Codice PHP:
    pulsante.name "prova";
    pulsante.addEventListener(MouseEvent.CLICKtest);
    function 
    test (pippo:Event):void {
        
    trace(pippo.target.name); // output: "prova"

    Riguardo al void, dentro flash può essere omesso, ma lo metto per abitudine perchè flash non è l'unico programma con cui compilo e certi considerano l'omissione un errore.
    Nel caso specifico il "void" indica che la funzione non restituisce nessun valore, mentre in caso che la funzione debba restituire qualcosa, con return, si inserisce il tipo che deve essere restituito, ad esempio poniamo una funzione che crea un cerchio e ne restituisce l'istanza:

    Codice PHP:
    function getCircle (r:Number=50.0c:uint=0):Sprite {
        var 
    s:Sprite = new Sprite();
        
    s.graphics.beginFill(c);
        
    s.graphics.drawCircle(00r);
        
    s.graphics.endFill();
        return 
    s;

    In qualsiasi caso ora questa funzione va bene sia se richiamata da un pulsante che da un comando?
    Yes

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ..e se volessi più azioni diversificate per ogni case?
    Cioè?

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.