Visualizzazione dei risultati da 1 a 8 su 8

Discussione: oggetti "personali"

  1. #1

    oggetti "personali"

    Ho costruito un piccolo oggetto che contiene tre proprietà, ma non riesco a scrivere le proprietà, solo a leggerle:

    simb= new Object
    simb = {num:"", clip:"_root.s"+num, x:100, y:100};

    simb.num="5"

    a questo punto vorrei leggere simb.clip e trovare "_root.s5" ma non funziona!

    Dove sbaglio?


    GRAZIE a Tutti in anticipo!
    Claudio........................

    http://www.roadrunners.it

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Ovvio, sommi i due addendi prima che uno dei due venga definito. Due soluzioni:

    codice:
    simb = new Object();
    simb = {num:"", clip:"_root.s", x:100, y:100};
    simb.num = "5";
    simb.clip += simb.num;
    trace(simb.clip)

    codice:
    simb = new Object();
    simb = {num:"", clip:"_root.s", x:100, y:100};
    simb.getClip = function()
    {
    	return this.clip + this.num;
    }
    simb.num = "5";
    trace(simb.getClip());

  3. #3

    in effetti..

    in effetti sono alle primissime armi con gli oggetti definiti dall'utente, pensavo che bastasse impostare una proprietà come si fa con gli oggetti per es. MovieClip, cioè setto simb.num="5" e quando lo richiamo mi restituisce 5.
    Inoltre poichè clip è costante pensavo di poter settare num ed ottenere il nuovo risultato per clip per cui, poichè "num" ormai è 5, alla prossima chiamata dell'oggetto, clip sarebbe stato clip+5 !

    Ho le idee TROPPO confuse? Dove/come posso capirne di più?
    Claudio........................

    http://www.roadrunners.it

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >pensavo che bastasse impostare una proprietà come si fa con gli
    >oggetti per es. MovieClip, cioè setto simb.num="5" e quando lo
    >richiamo mi restituisce 5.

    ma infatti, nella prima soluzione:

    codice:
    trace(simb.clip)
    Il discorso qui non è nel funzionamento dell'oggetto, e nemmeno dei MovieClip, che ti darebbero lo stesso "problema". Il punto cruciale è che tu dici:

    codice:
    a = 5;
    b = 3;
    c = a + b;
    a = 4;
    
    dimmi il valore di c
    E assolutamente logico e matematico, e non ha nulla a che vedere nemmeno con il flash, che se tu fai la somma tra due addendi, e poi ne cambi uno, la somma non cambia fino a che non la fai di nuovo.

    codice:
    a = 5;
    b = 3;
    c = a + b;
    a = 4;
    c = a + b
    dimmi il valore di c
    Per questo motivo, o forzi manualmante la somma dopo aver cambiato un addendo (come nel primo esempio), oppure crei un metodo che la esegue appena ne fai la richiesta (il secondo metodo).

  5. #5

    ok...

    credo che il mio errore concettuale derivi anche dal fatto che pensavo che il settaggio di simb.num rimanesse memorizzato come in una variabile e che quindi richiamando simb.clip "DOPO" il settaggio di num potessi ottenere il nuovo risultato... che in definitiva la somma avvenisse automaticamente chiamando simb.clip.
    Claudio........................

    http://www.roadrunners.it

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Quasi. num resta effettivamente memorizzato, ma al momento della creazione dell'oggetto la variabile clip viene definita facendo la somma tra "_root.s" e "num", che oltretutto non è quella definita dentro simb, ma proprio una variabile che non esiste. Poi tu crei la variabile num dentro "simb":

    codice:
    simb.num = "5";
    ma intanto, clip continua ad avere quel valore sballato che aveva prima. Generalmente, nella programmazione ad oggetti, non si usa richiamare direttamente le proprietà, ma si usano dei metodi che le restituiscono, eventualmente anche elaborandole:

    codice:
    simb.getClip = function()
    {
    	return this.clip + this.num;
    }
    simb.num = "5";
    A parte questo, errore mio che ho trascritto, la riga in neretto è inutile:

    codice:
    simb = new Object();
    simb = {num:"", clip:"_root.s", x:100, y:100};
    perchè l'oggetto viene ricostruito da 0 nella seconda riga.

  7. #7

    Grazie!

    Grazie mille...

    Mi hai dato un grande aiuto ed un buon input per approfondire.

    Credo che nella programmazione ci siano dei dettagli che sembrano stupidi o scontati ma che se non spiegati a dovere possono rendere la vita abbastanza complicata ai neofiti.
    Per questo credo che sia bene tentare e sperimentare, ma che ci vogliano sempre dei concetti base molto chiari...
    ...magari ho scoperto l'acqua calda! :quipy:
    Claudio........................

    http://www.roadrunners.it

  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Se sai l'inglese, questa è la cosa più chiara che posso darti: http://www.debreuil.com/docs/

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.