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

    [as3] Richiamare gli elementi immagine all'interno dello stage

    Sono arrivato circa a pag 330 del manuale ma sembra che proprio non mi entri in questa testaccia dura. Non riesco a risalire agli elementi all'interno dello stage. Ho capito che funziona circa come il DOM di javascript, ma ogni volta mi ritrovo con degli errori di compilazione.
    Intanto non ho capito se lo stage va richiamato con "stage" oppure con "Stage", non ho capito se ci vuole "this." davanti.
    Poi per esempio se aggiungo un'immagine Flash non mi permette di assegnare un nome all'istanza ed io non so come richiamarla dal codice. E poi c'è differenza nell'importare un'immagine direttamente sullo stage invece di convertirla in immagine?
    Proverò a ripassare il manuale, ma se qualcuno potesse farmi qualche esempio gliene sarei grato.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    stage con la s minuscola, è una proprietà contenuta in tutti gli elementi di tipo visivo, discendenti da DisplayObject, così come lo sono root e this.
    Il fatto di utilizzarli dipende strettamente dalle tue necessità nel codice, non è universale, mentre lo è il modo di enumerare e classificare gli oggetti all'interno di actionscript.
    Lo schema proposto nella guida di flash dovrebbe chiarire senza ombra di dubbio le gerarchie che seguono gli oggetti, mentre lo schema delle discendenze dovrebbe chiarire cosa puoi fare o non fare con un determinato oggetto:




    Come puoi notare dalla prima immagine, lo Stage è l'elemento unico più alto nella gerarchia e contenitore della timeline principale che, a sua volta, contiene tutti gli altri elemento, che a loro volta, potrebbero contenerne altri se fossero "DisplayObjectContainer", come sono ad esempio i MovieClip.
    Appunto i MovieClip all'interno di flash, sono l'unico tipo di oggetto di visualizzazione che può essere creato e gestito nel programma*. Esistono anche i SimpleButton, ma hanno un discorso completamente a parte e non ci serve parlarne per chiarire questi concetti.
    Ecco quindi che dentro flash, se vuoi gestire un'immagine come istanza, devi inserirla in flash e trasformarla in MovieClip.

    (*) Come puoi notare, ho parlato di programma, perché in effetti dentro flash "funziona così", mentre se usi actionscript per creare gli oggetti, puoi creare MovieClip, Sprite, Bitmap e così via, utilizzando new, es: var mioSprite:Sprite = new Sprite().

    PS. Il discorso non si esaurisce con queste poche righe, bisogna fare anche parecchie prove per comprenderne il meccanismo e al massimo, continuare a chiedere qui, quando ci si ritrova su punti troppo oscuri per venirne a capo da soli.

  3. #3
    Grazie per la spiegazione.
    Ho provato ad utilizzare questa funzione tratta dal manuale:
    codice:
    function traceDisplayList(container: DisplayObjectContainer, indentString:String = ""):void 
    { 
        var child: DisplayObject; 
        for (var i:uint=0; i < container.numChildren; i++) 
        { 
            child = container.getChildAt(i); 
            trace(indentString, child, child.name);  
            if (container.getChildAt(i) is DisplayObjectContainer) 
            { 
                traceDisplayList(DisplayObjectContainer(child), indentString + "    ") 
            } 
        } 
    }
    è molto comoda perchè elenca tutti gli elementi all'interno di un DisplayObjectContainer.
    Ho inserito un semplice simbolo immagine sullo stage (simbolo immagine e non l'immagine importata).

    La prima cosa che mi risulta strana è che se richiamo la funzione così:
    traceDisplayList (this);
    restituisce solo gli elementi inseriti sullo stage mettendoli al primo livello:
    [object Shape] instance1
    se invece la richiamo così:
    traceDisplayList (this.stage);
    oppure così:
    traceDisplayList (stage);
    restituisce la timeline al primo livello e gli oggetti sullo stage al secondo livello:
    [object MainTimeline] root1
    [object Shape] instance1
    Questo mi sembra strano perchè essendo this al di sopra di stage dovrebbe essere this a contenere la timeline e stage a contenere solo gli elementi dentro lo stage.

    La seconda stranezza è che il simbolo immagine non è di tipo Bitmap ma di tipo Shape.

    La terza e ultima stranezza è che se volessi impostare una variabile sul richiamo al simbolo immagine, facendo:
    var miaImmagine:Shape = new Shape();
    miaImmagine = this.getChildAt(0);
    non funziona, anche se this.getChildAt(0) è dello stesso tipo, richiede comunque l'assegnazione forzata:
    var miaImmagine:Shape = new Shape();
    miaImmagine = Shape(this.getChildAt(0));
    così funziona.

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.