Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [AS2] Variabili

  1. #1

    [AS2] Variabili

    Ciao!
    Se ho un file .as con la variabile pippo e un .fla con la var pluto che assumono valori dinamici e diversi di volta in volta, come faccio a richiamare pippo nel fla e pluto nell'as?
    Spero che abbiate capito il problema, e di avere fornito abbastanza informazioni affinché possiate darmi una risposta.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    La Classe:

    codice:
    class MiaClasse
    {
    	private var _path:MovieClip;
    	public var pippo:String = "pippo della classe";
    	public function MiaClasse(path:MovieClip)
    	{
    		_path = path;
    	}
    	public function traccia(Void):Void
    	{
    		trace(_path.pluto);
    	}
    }
    Nel filmato:

    codice:
    var pluto:String = "pluto del filmato";
    var test:MiaClasse = new MiaClasse(this);
    trace(test.pippo);
    test.traccia();

  3. #3
    Ciao Negatyve ho provato a fare come mi hai detto ma se richiamo la variabile (che creo nel fla) nella definizione di classe funziona, ma se poi metto quella stessa variabile in un'altra funzione (ma sempre nello stesso file as) che richiamo onEnterFrame mi da undefined...come mai?

    metto un esempio in modo da capire meglio:

    nel fla:
    codice:
    var pippo = "valore"
    nel file as:
    codice:
    ....
    private var _path:MovieClip;
    
    	public function MiaClasse(path:MovieClip) {
    		this.name = "MiaClasse";
                    _path = path;
                    this.onEnterFrame = function() {
    			checkCollision();
    		};
            }
            ..
            ..
            function checkCollision() {
    		for (var i = 0; i<pippo; i++) {
    			if (condizione) {
    				....
                                    codice
                                    .....
    			}
    		}
    	}
    In quel ciclo for non ci entra mai perchè pippo è undefined

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    A parte che:

    • sarebbe "for (var i = 0; i < _path.pippo; i++) {"
    • da come l'ho impostata io, MiaClasse non estende la Classe MovieClip( e non può quindi usare l'evento onEnterFrame)
    • far riferimento ad una variabile della timeline è una pessima abitudine

    Come fai a creare un'istanza della Classe?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    • far riferimento ad una variabile della timeline è una pessima abitudine

    Scusa Nega come si puo rimediare, in questo caso?
    Visto che anche a me capitava parecchie volte.
    Grazie

  6. #6
    Originariamente inviato da negatyve
    • sarebbe "for (var i = 0; i < _path.pippo; i++) {"
    • da come l'ho impostata io, MiaClasse non estende la Classe MovieClip( e non può quindi usare l'evento onEnterFrame)
    • far riferimento ad una variabile della timeline è una pessima abitudine

    Come fai a creare un'istanza della Classe?
    • si, scusa ho sbagliato a scriverlo qui, in realtà metto il _path
    • la mia estende MovieClip per cui per quello non c'è problema
    io creo runtime vari clip con un testo dinamico (tale testo è contenuto in un array che deve stare per forza nella timeline) più elementi ci sono in questo array più clip si formano...per cui ho bisogno di contare, nella classe, il numero di elementi di questo array, che cmq è in una varabile del fla :master:

    per rispondere alla tua domanda: uso una funzione statica nella classe con attachMovie e poi la richiamo nel fla

    Mi sto incasinando...

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    >per rispondere alla tua domanda: uso una funzione statica
    >nella classe con attachMovie e poi la richiamo nel fla

    ok, mettimi un po' di codice, così riesco a vedere l'errore.

    >Scusa Nega come si puo rimediare, in questo caso?

    Ad esempio, invocando un metodo della Classe e passando la variabile come parametro, o passandola come oggetto di inizializzazione. Primo caso:

    codice:
    class MiaClasse extends MovieClip
    {
    	private var counter:Number;
    	public function MiaClasse()
    	{
    	}
    	public function setCounter(c:Number):Void
    	{
    		counter = c;
    	}
    	public function activateCollisionCheck(Void):Void
    	{
                    this.onEnterFrame = function() {
    			checkCollision();
    		};
    	}
    	public function checkCollision()
    	{
    		for (var i = 0; i < counter; i++) {
    			if (condizione) {
    				// codice
    			}
    		}
    	}
    }
    da utilizzarsi così:
    codice:
    istanzaMiaClasse.setCounter(10);
    istanzaMiaClasse.activateCollisionCheck()
    Secondo caso:

    codice:
    class MiaClasse extends MovieClip
    {
    	private var counter:Number;
    	public function MiaClasse()
    	{
    		activateCollisionCheck()
    	}
    	public function activateCollisionCheck(Void):Void
    	{
                    this.onEnterFrame = function() {
    			checkCollision();
    		};
    	}
    	public function checkCollision() {
    		for (var i = 0; i < this.counter; i++) {
    			if (condizione) {
    				// codice
    			}
    		}
    	}
    }
    da utilizzare così:
    codice:
    this.attachMovie("linkageClasse", "pippo", 1, {counter:10});

  8. #8
    codice:
    class Quiz extends MovieClip {
    	static function createChild(symbolName:String, instanceName:String, scope:MovieClip):MovieClip {
    		return scope.attachMovie(symbolName, instanceName, scope.getNextHighestDepth());
    	}
    ...poi c'è +o- il codice che ti ho già scritto, c'è la def delle variabili, la def della classe.

    Nel fla ho:

    codice:
    var sectionNames:Array = new Array();
    var sectionCount:Number = sectionNames.push(["Pippo",true], ["Pluto",false], ["Clarabella",false], ["Zio Paperone",false], ["Gastone",false], ["Paperino",false].....ecc.);
    .
    .
    .
    .....
    function disposizioneRisposte() {
    	for (var i = 0; i<sectionCount; i++) {
    		var risp = Quiz.createChild("menu", "risp_mc"+i, this);
    		var currentRisp = this["risp_mc"+i];
    		risp.menuItem.labelName = sectionNames[i][0];
    		if (i>0) {
    			var prevRisp = this["risp_mc"+(i-1)];
    			currentRisp._y = prevRisp._y+prevRisp._height;
    			if (i>7) {
    				this["risp_mc8"].resetY();
    				currentRisp.setX(currentRisp._x+currentRisp._width);
    				if (i>15) {
    					currentRisp.removeMovieClip();
    				}
    			}
    		}
    	}
    }
    disposizioneRisposte();
    A me nella classe serve conoscere sectionCount ed il valore true o false degli elementi dell'array....spero di averti dato abbastanza info

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    Grazie

  10. #10
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Passaglieli come parametri, appunto:

    codice:
    class Quiz extends MovieClip
    {
    	static function createChild(symbolName:String, instanceName:String, scope:MovieClip, params:Object):MovieClip {
    		return scope.attachMovie(symbolName, instanceName, scope.getNextHighestDepth(), params);
    	}
    }
    codice:
    var risp = Quiz.createChild("menu", "risp_mc"+i, this, {len:sectionCount, nam:sectionNames});
    e poi definisci nella classe le due proprietà:
    codice:
    class MiaClasse extends MovieClip
    {
    	var len:Number;
    	var nam:Array;
    	public function MiaClasse()
    	{
    	}
    	public function checkCollision()
    	{
    		for (var i = 0; i < len; i++) {
    			if (condizione) {
    				// codice
    			}
    		}
    	}
    }

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.