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

    [AS2] Passare un valore ad una funzione...

    Non sono per niente pratico di AS. In questo caso sto usando AS2 ma non riesco a passare un valore ad una funzione. Anche provando a semplificare non riesco e qusto significa che non conosco la giusta sintassi.
    Ecco l'esempio:
    Codice PHP:
    function funzione(val){
        
    this._x=this._x+val;
    }
    _root.box1.onEnterFrame=funzione(1); 
    Mi pare di non aver fatto niente di strano anche a giudicare dagli esempi che ho trovato in giro... dove sbaglio? Anche specificanto val:int non cambia nulla.
    Grazie anticipate
    All'uomo non verrà mai tanto male quanto dall'uomo.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,774
    In effetti la sintassi (diciamo che) è corretta ma c'è più che altro qualche problema di concetto.
    Si tratta comunque delle basi di programmazione che sono valide in generale per ogni linguaggio e non solo per AS.

    Ti spiego il problema..
    Con questa riga:
    codice:
    _root.box1.onEnterFrame=funzione(1);
    stai dicendo che "onEnterFrame" deve assumere il valore restituito da "funzione" (a cui hai passato il valore 1 come argomento).

    Infatti, quando si indicano le parentesi a seguito del nome di funzione, si sta praticamente facendo una chiamata a tale funzione (quindi non si sta facendo un semplice riferimento).

    In questo caso è come se ti aspettassi che "funzione(1)" ti restituisca un valore (che dovrà essere assegnato a onEnterFrame) , cosa che invece non avviene perché all'interno di "funzione" non c'è alcun "return" e pertanto onEnterFrame assumerà il valore "undefined".

    Ovviamente intuisco che tu NON voglia attribuire a "onEnterFrame" il valore restituito da "funzione" ma bensì fare riferimento alla funzione di per se.

    In questo caso dovresti avere uno script del genere:
    codice:
    _root.box1.onEnterFrame=funzione;
    Devi tener presente però che la funzione onEnterFrame non accetta nessun argomento per cui non puoi passare alcun valore a questa funzione, nemmeno se gli assegni un'altra funzione come riferimento.
    Eventualmente dovresti utilizzare un'altro sistema.
    Ad esempio potresti assegnare una variabile a box1 in modo da recuperarla all'interno della funzione stessa:
    codice:
    function funzione() {
    	this._x = this._x+this.val;
    }
    box1.onEnterFrame = funzione;
    box1.val=1;
    Questo è un'esempio ma puoi fare in mille altri modi.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie mille per l'eusariente risposta.
    Hai ragione, sembra un errore di concetto. In generale comunque mi sembra strana questa sintassi:
    oggetto.evento=funzione;
    Non mi pare intuitiva come assegnazione di una funzione ad un oggetto; non mi sembra corretto quell'uguale, ma è il sistema che ho trovato per buono su alcuni esempi e ho cercato di applicare.
    Al massimo avrei compreso molto di più una cosa tipo:
    evento.oggetto.funzione;
    Vabè, grazie ancora.
    All'uomo non verrà mai tanto male quanto dall'uomo.

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.