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

    problmea gestore eventi onEnterFrame

    ho scritto il seguente codice:

    Codice PHP:
    function Muovi_giù(i){
        
        var 
    item =MEN[i][0];
        
    trace("sposto:" item//funziona e mostra "sposto item7"
        
        
    item.onEnterFrame = function(){
            
            
    trace("item di riferimento:" item)  // non da segno di vita 
            
            
    Yfine 650;
            var 
    DistanzaYMath.abs(Yfine item._y);
            
            
    item._y += Math.round(Yfine item._y)/10;
            
            if(
    DistanzaY<=1){
                
    item._y=Yfine;
                
    delete item.onEnterFrame;
                
                }
            
            
            }
        
        } 
    come potete leggere dal commento non riesco ad accedere al gestore onEnterFrame utilizzando la forma item.onEnterFrame = ...

    se, però, sostituisco con item7, che è una mia istanza, nel gestore e nella funzione da questo richiamata il tutto funziona correttamente...

    'Ndo sbajo?
    :master:
    http://www.2rlab.com
    God save the colours!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    bisognerebbe vadere come è stato costituito l'array "MEN"

    comunque a occhio direi che stati tentando di utilizzare una stringa al posto del nome di istanza

    potresti provare a fare questa sostituzione sulla riga che assegna item

    var item = eval(MEN[i][0]);

  3. #3
    in realtà avevo focalizzato che il problema fosse quello ma non sapevo come risolverlo... per tentativi avevo fatto var item:Object = MEN... ma niente...

    la funzione eval ha il compito di...?

    scusa se rompo ma sto studiando per i fatti miei e ho approcciato solo ieri il fantastico mondo ( ) degli array...

    cmq MAN è così

    Codice PHP:
    //creo l'Arrey di gestione del menu
    var MEN:Array = new Array();

    //popolo l'array
    MEN[0]=new Array("item0","211");
    MEN[1]=new Array("item1","241");
    MEN[2]=new Array("item2","271");
    MEN[3]=new Array("item3","301");
    MEN[4]=new Array("item4","331");
    MEN[5]=new Array("item5","361");
    MEN[6]=new Array("item6","391"); 
    se l'avessi costruito in modo diverso avrei potuto speficare fin dall'array il tipo di dato itemN? se si come?

    ringrazio per il suggerimento che mi ha risolto il pomeriggio.
    http://www.2rlab.com
    God save the colours!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    eval -> http://livedocs.adobe.com/flash/8_it/main/00001725.html

    la costruzione dell'array può anche anadare bene, però ovviamente non puoi utilizzare una stringa al posto di un nome di istanza, ottieni un errore oppure un non-funzionamento come nel tuo caso

    al clip si può accedere in due modi, uno è quello che ti ho indicato, eval... l'altro è il richiamo diretto come indice di array dell'elemento padre, in entrambi i casi puoi sfruttare una variabile di tipo String per richiamare il clip, ti spiego il secondo metodo

    in pratica ogni oggetto/classe presente in actionscript ha una serie di metodi, proprietà ed eventi, raggiungibili dall'oggetto stesso attraverso la sintassi delle parentesi quadre, come se si trattasse di un array

    un esempio, poniamo di avere due clip su _root ... _root.item0 e _root.item1

    puoi accedere direttamente ai clip nel modo appena indicato, attraverso la notazione del punto

    oppure come dicevo, puoi sfruttare il nome del clip sotto forma di stringa e raggiungerlo con la notazione delle parentesi quadre

    _root["item0"] equivale a _root.item0

    va da se che qualsiasi elemento stringa può essere utilizzato in quel modo, ad esempio

    var s = "item0";
    _root[s] equivale a _root["item0"] e quindi a _root.item0

    spero che sia chiaro fino a questo momento

    ora l'ultimo passaggio, nel nostro caso la stringa da utilizzare è contenuta dentro un array bidimensionale... ed ecco che avremo

    _root[MEN[0][0]]

    così che il tuo codice può essere trasformato in (prendo solo la parte che mi interessa modificare)

    Codice PHP:
    var item =_root[MEN[i][0]];
    trace("sposto:" item//funziona e mostra "sposto item7"
    item.onEnterFrame = function(){ 
    se non è chiaro, sono qui ancora per un po'

  5. #5
    chiarissimo. Grazie mille
    http://www.2rlab.com
    God save the colours!

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.