Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44

    Problema uso _parent._name

    Inanzitutto un saluto a tutti.
    Vi spiego l'applicazione e poi il mio problema.
    Sto creando una pagina flash, in cui, estraendo da un database mediante php tutti i dati, creo la sezione categoria ad esempio relativa a tutti i tipi di magliette. Cliccando poi su un tipo di maglia, si passa ad una pagina di dettaglio che dovrebbe caricare i dati in base al nome passato dal tipo di maglia premuto. Il problema è che subito creavo i vari mc contenitori con un loop for dando come none un numero, e so che questo non va bene. Ad ogni modo anche se dessi il nome di una stringa che varia ad ogni mc che creo per la sezione categorie, quando clicco dovrei salvare in una variabile in _root, la categoria scelta, ma questo lo fa solo per il primo mc creato con attachMovie. Con gli altri, anche se nel bottone c'è un comando di prova trace(_parent._name), di fatto dal secondo mc in poi della sezione categoria, non pesca più il nome. Se volete vedere il sito di prova, l'indirizzo è www.manhattanpoker.it/mp_index.html e la funzione che uso per creare i vari mc della categoria è:

    function creatorItems() {
    for (var i = 0; i<(_root.items_num); i++) {
    _root.items_list.attachMovie("items_background",i, i);
    _root.items_list[i]._x = pos_x+320*i;
    _root.items_list[i]._y = 0;
    _root.items_list[i].item_detail.item_name.text = _root.array_products[2+10*i];
    _root.items_list[i].item_detail.item_price.text = _root.currency+" "+_root.array_products[6+10*i];
    var loadinto = _root.items_list[i].item_image;
    var itemimage = _root.array_products[10+10*i];
    imageLoading(itemimage,loadinto);
    //if (_root.array_products[10+10*i] == "noimage") {
    //var itemimage = _root.noimage;
    //imageLoading(itemimage,loadinto);
    //} else {
    //var itemimage = _root.noimage;
    //imageLoading(itemimage,loadinto);
    //}
    //trace(_root.items_list[i].item_image._width);
    _root.items_list[i].item_image._x = (300-_root.items_list[i].item_image._width)/2;
    }
    if (_root.items_list._width>Stage.width) {
    //this._x = -((System.capabilities.screenResolutionX/2)-(Stage.width/2))+30;
    _root.items_list._x = -_root.pos_x_scrollbar;
    _root.items_list_startx = _root.items_list._x;
    //trace(_root.items_list_startx);
    _root.items_list_startwidth = _root.items_list._width;
    //trace(_root.items_list_startwidth);
    } else {
    _root.items_list._x = 490-_root.items_list._width/2;
    _root.items_list_startx = _root.items_list._x;
    //trace(_root.items_list_startx);
    _root.items_list_startwidth = _root.items_list._width;
    //trace(_root.items_list_startwidth);
    _root.scrollbar._visible = false;
    }
    _root.maxSpost = _root.items_list_startwidth-_root.width_scrollbar;
    }
    // listener invito


    Non fate caso a due funzioni richiamate al suo interno che servono ad altro.
    Grazie in anticipo.
    FR

  2. #2
    Prova così

    Codice PHP:
        for (var 0i<(_root.items_num); i++) {
            var 
    clip:MovieClip=_root.items_list.attachMovie("items_background","ib"+i,i);
            
    clip._x pos_x+320*i;
            
    clip._y 0;
            
    clip.item_detail.item_name.text _root.array_products[2+10*i];
            
    clip.item_detail.item_price.text _root.currency+" "+_root.array_products[6+10*i];
            var 
    loadinto clip.item_image;
            var 
    itemimage _root.array_products[10+10*i];
            
    imageLoading(itemimage,loadinto);
            
    //if (_root.array_products[10+10*i] == "noimage") {
            //var itemimage = _root.noimage;
            //imageLoading(itemimage,loadinto);
            //} else {
            //var itemimage = _root.noimage;
            //imageLoading(itemimage,loadinto);
            //}
            //trace(_root.items_list[i].item_image._width);
            
    clip.item_image._x = (300-clip.item_image._width)/2;
        } 

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44
    Grazie per la risposta.
    Ho provato, ma è presente sempre lo stesso errore: cliccando sull'mc che porta alla pagina di dettaglio, mi stampa il nome dell'mc _parent solo il primo, che infatti stampa ib0, ma dal secondo in poi non stampa più nulla.

  4. #4
    E dov'è il codice del click sull'mc del dettaglio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44
    Ecco il codice del bottone:

    onClipEvent (mouseMove) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
    _parent.item_detail._visible = true;
    } else {
    _parent.item_detail._visible = false;
    }
    }
    onClipEvent (mouseDown) {
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
    trace(_parent._name);
    _root.gotoAndStop("item",1);
    } else {
    exit;
    }
    }

  6. #6
    boh, non ho capito come è strutturata la cosa

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44
    Si, hai anche ragione, sono stato anche un pò contorno nello spiegare il funzionamento.
    Allora ti pongo la domanda in modo diverso, magari mi puoi essere di aiuto, e lo sei già stato
    Fai conto di dover creare più mc a partire da un mc presente nella tua libreria, ed ogniuno di questi mc che crei, in conformità a quello presente nella libreria, ha al suo interno un bottone, che semplicemnte restituisce il nome dell'mc che lo contiene, come faresti a creare tutto ciò?
    Grazie,
    FR

  8. #8
    Farei un clip sulla libreria, dentro ci metterei un clip che uso come bottone (e non un bottone che hanno alcuni limiti)


    metterei sulla timeline della clip che lo contiene

    nomeclipBottone.onRelease=function(){
    trace(this._parent._name)
    }


    e poi farei l'attach del clip da libreria come hai fatto tu.
    Se invece del clip per un bottone usi proprio un bottone credo che il codice dovrebbe essere

    nomeBottone.onRelease=function(){
    trace(_name)
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44
    Facendo due prove con il mio script, se commento la parte di codice appartenente al ciclo for, qui di seguito riportata, il problema sparisce, ma in questo modo non carico le informazioni dentro ai rispettivi campi di testo.

    clip.item_detail.item_name.text = _root.array_products[2+10*i];
    clip.item_detail.item_price.text = _root.currency+" "+_root.array_products[6+10*i];
    var loadinto = clip.item_image;
    var itemimage = _root.array_products[10+10*i];
    imageLoading(itemimage,loadinto);
    clip.item_image._x = (300-clip.item_image._width)/2;

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    44
    Ho trovato l'errore.
    Nel ciclo for, richiamavo la funzione qui di seguito:

    function imageLoading(itemimage, loadinto) {
    var my_mcl = new MovieClipLoader();
    myListener = new Object();
    myListener.onLoadStart = function(target_mc) {
    //trace("*********Prima istanza my_mcl*********");
    //trace("È iniziato il caricamento nel clip filmato . = "+target_mc);
    var loadProgress = my_mcl.getProgress(target_mc);
    //trace(loadProgress.bytesLoaded+" = byte caricati all'inizio");
    //trace(loadProgress.bytesTotal+" = byte totali all'inizio");
    };
    myListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
    //trace("*********Avanzamento prima istanza my_mcl*********");
    //trace("onLoadProgress() ha richiamato il clip filmato "+target_mc);
    //trace(loadedBytes+" = byte caricati al callback della funzione di avanzamento");
    //trace(totalBytes+" = byte totali al callback della funzione di avanzamento");
    _root.image_loadedBytes = loadedBytes;
    _root.image_totalBytes = totalBytes;
    };
    myListener.onLoadComplete = function(target_mc) {
    //trace("*********Prima istanza my_mcl*********");
    //trace("È stato effettuato il caricamento nel clip filmato = "+target_mc);
    var loadProgress = my_mcl.getProgress(target_mc);
    //trace(loadProgress.bytesLoaded+" = byte caricati al termine");
    //trace(loadProgress.bytesTotal+" = byte totali al termine=");
    };
    myListener.onLoadInit = function(target_mc) {
    //trace("*********Prima istanza my_mcl*********");
    //trace("Il clip filmato = "+target_mc+" è stato inizializzato");
    // Da questo punto è possibile effettuare qualsiasi impostazione desiderata, ad esempio:
    //target_mc._width = 300;
    //target_mc._height = 300;
    };
    myListener.onLoadError = function(target_mc, errorCode) {
    trace("*********Prima istanza my_mcl*********");
    trace("ERROR CODE = "+errorCode);
    trace("Il caricamento nel clip filmato non è riuscito = "+target_mc+"\n");
    };
    my_mcl.addListener(myListener);
    // Caricamento dei file nei rispettivi target.
    // Caricamento nei clip filmato - stringhe usate come target
    //
    //my_mcl.loadClip(itemimage,loadinto);
    if (itemimage == "noimage") {
    loadinto.attachMovie("items_background_noimage","n oimage_background","noimage_background ");
    //my_mcl.loadClip(_root.noimage,loadinto);
    } else {
    my_mcl.loadClip(itemimage,loadinto);
    }
    }

    Al cui interno se guardi ho seganto in rosso l'errore: sbagliavo ad impostare la profondita dell'mc.
    Grazie per avermi aiutato.
    FR

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.