Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    Gestire la profondità dei contenuti all'interno di un array

    Come ben sappiamo in situazioni normale per gestire la profondità di un oggetto rispetto a tutti gli altri, volendo ad esempio portarlo in primo piano, basta scrivere

    setChildIndex(MC, numChildren-1)

    numChildren infatti restituisce il numero di istanze presenti sullo stage e aggiungendoci -1 porteremo appunto il nostro MC avanti a tutti


    ma adesso ho un quesito: se lo stage è popolato solo da MovieClip contenuti in un array?
    L'ultimo MovieClip che ho "pushato" nell'array sarebbe ovviamente quello col childIndex più alto, e se io volessi portate in primo piano, ad esempio, il MovieClip contenuto in myarray[1] che sintassi dovrei usare?
    ingenuamente ho scritto:
    setChildIndex(myarray[1], numChildren-1)

    ma mi restituisce l'errore
    RangeError: Error #2006: L'indice fornito è fuori intervallo.
    at flash.display:isplayObjectContainer/setChildIndex()
    at avanzato_fla::MainTimeline/initdrag()


    spero che si possa fare, non ho trovato nulla in rete al riguardo e magari mi sto scervellando su una cosa tecnicamente infattibile

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La situazione che hai descritto è assolutamente corretta,all'interno del vettore il MovieClip rimane tale.
    Ovviamente è giusto a livello teorico, ma senza il codice di contorno che mostra almeno come riempi l'array, non c'è modo di trovare l'errore.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Nel frattempo ho approfondito l'argomento.. Anche se i MovieClip sono tratti da un array, nel momento in cui li vado ad addare diventano istanze dello stage quindi gestibili sempre attraverso la sintassi "classica"

    Non è che sullo stage aggiungo tutto l'array che a sua volta contiene i MC, ma aggiungo direttamente i MC dell'array sullo stage

    Purtroppo il codice originale l'ho modifcato, ad ogni modo ho risolto in un modo un po' "paracu*o":

    Codice PHP:
    myarray[0].push(myloader)
    addChild(myarray[0])
    myarray[1].push(myloader2)
    addChild(myarray[1])

    myloader.addEventListener(MouseEvent.CLICKfunzione)
    myloader2.addEventListener(MouseEvent.CLICKfunzione)

    function 
    funzione(event:Event):void
    addChild(event.target)} 
    In poche parole, ogni volta che clicco su uno dei loader, lo ri-aggingo nuovamente sullo stage in modo da alzarne il childIndex

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mmh non ci sarebbe bisogno di fare tutto quel giro, ti faccio un breve esempio con MovieClip creati in runtime (anche se son vuoti non cambia il richiamo dall'array):

    Codice PHP:
    // creo l'array
    var clips:Array = [];
    // lo riempio con 10 istanze attraverso un ciclo
    for (var i:uint=0i<10i++) {
        
    // in una sola riga inserisco i clip sulla timeline in cui richiamo 
        // il codice e li inserisco nell'array già come istanze di MovieClip
        
    clips.push(this.addChild(new MovieClip()) as MovieClip);
    }
    // richiamo solo l'istanza con indice 4 dell'array e la porto in alto
    this.setChildIndex(clips[4], this.numChildren-1); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    Originariamente inviato da and80
    Mmh non ci sarebbe bisogno di fare tutto quel giro, ti faccio un breve esempio con MovieClip creati in runtime (anche se son vuoti non cambia il richiamo dall'array):

    Codice PHP:
    // creo l'array
    var clips:Array = [];
    // lo riempio con 10 istanze attraverso un ciclo
    for (var i:uint=0i<10i++) {
        
    // in una sola riga inserisco i clip sulla timeline in cui richiamo 
        // il codice e li inserisco nell'array già come istanze di MovieClip
        
    clips.push(this.addChild(new MovieClip()) as MovieClip);
    }
    // richiamo solo l'istanza con indice 4 dell'array e la porto in alto
    this.setChildIndex(clips[4], this.numChildren-1); 
    ma "this" a cosa si riferisce in questo caso?

    Cmq il codice da me postato è un'esemplificazione di quello su cui sto lavorando.. Nel mio caso mi trovo nella necessità di
    -creare dei myloader ognuno dei quali carica un'immagine esterna
    -disegnare una cornice attorno all'immagine
    -assegnare un codice qualora si clicchi sul myloader
    -assegnare un codice qualora si clicchi sulla cornice
    -inserire il myloader e la cornice in un masterMC
    - pushare il masterMC all'interno dell'array

    ho trovato non poche difficoltà ma alla fine ce l'ho fatta... non so se è opportuno postare l'FLA, se vuoi te lo mando via PM

    Tanto per farti capire quale sarà il risultato finale, eccoti l'esempio di swf creato sempre da me che tuttavia NON utilizza array e roba varia in quanto le varie foto che vedi sullo stage sono state inserite manualmente tramite l'interfaccia di flash.. Quello su cui mi sto concentrando adesso è creare un progetto identico a questo ma AUTOMATIZZATO in modo che l'utente debba solo mettere le foto nella cartella per ritrovarsele automaticamente sullo stage con cornice e codice applicati.
    http://digilander.libero.it/American...%20edition.swf

    (se risulta tutto troppo sgranato è perchè il browser allarga automaticamente l'immagine, nelle dimensioni originali è tutto molto pulito)

    cliccando sull'immagine parte lo spostamento dell'intera foto tramite trascinamento, mentre cliccando e tenendo premuto sulla cornice è possibile ruotare la foto.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da American
    ma "this" a cosa si riferisce in questo caso?
    Se il codice viene scritto sulla timeline principale, this equivale a "root", meglio definibile come timeline principale.


    Originariamente inviato da American
    ho trovato non poche difficoltà ma alla fine ce l'ho fatta... non so se è opportuno postare l'FLA, se vuoi te lo mando via PM
    Se vuoi, ok... però considera che non ho molto tempo e difficilmente riuscirò a dargli un'occhiata.

    Comunque appena riesco guardo anche l'swf.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    ma comunque a ben pensarci ho perso il filo del discorso

    cioè ormai quello che chiedevo all'inizio topic l'ho risolto, alla fine avevo in mente solo concetti sbagliati nel senso che credevo che sullo stage venisse aggiunto tutto l'array e quini i vari loader presenti al suo interno, invece non è così difatti non si può trattare un array come un normale DisplayObject...
    Sono invece i vari myloader contenuti nell'array che vengono aggiunti sullo stage e dunque possono essere trattati come normali movieclip che ormai nulla più hanno a che fare conl'array da cui sono stati estratti...

    Adesso quello che mi ero prefisso di fare l'ho realizzato. La gallery adesso carica le immagini prelevando l'URL da un file XML, e funziona tutto perfettamente

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.