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

    [help] Ripetere lo stesso pezzo di codice ma con valori diversi

    [FLASH MX 2004, act 2.0]

    Ciao a tutti,
    devo fare un controllo delle collisioni per un numero indefinito di movieclip.
    Con un esempio spero di spiegarmi:
    Ho dei movieclip sullo stage (dei semplici box) , un numero indefinito perchè caricati dinamicamente da un db.
    devo gestire l'hitArea tra di loro per la gestione degl'urti e delle collisioni (che ho già affrontato in un precedente post) .

    Se fossero un numero finito, ad esempio 3 (di istanza: movieclip1,movieclip2 e movieclip3) sarebbe così il codice:


    codice:
    this.onEnterFrame=function(){
    	if((movieclip1.hitTest(movieclip2)) or (movieclip2.hitTest(movieclip1))){
    		trace("C'è Urto tra movieclip1 e movieclip2 o viceversa")
    	}
    	if((movieclip1.hitTest(movieclip3)) or (movieclip3.hitTest(movieclip1))){
    		trace("C'è Urto tra movieclip1 e movieclip3 o viceversa")
    	}
    	if((movieclip2.hitTest(movieclip3)) or (movieclip3.hitTest(movieclip2))){
    		trace("C'è Urto tra movieclip2 e movieclip3 o viceversa")
    	}	
    }
    Ecco così funziona per un numero finito che so a priori di movieclip ma se il numero è "dinamico" nel senso che dipende da quante voci ho nel database? potrebbero essere 2 come 30, come posso automatizzare il codice di cui sopra?

    Qualcuno mi può aiutare?

    Grazie.
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    io farei in maniera diversa, ossia userei una ciclo per cui ogni clip verifica con il suo enterFrame se sta "sbattendo" con qualche altro clip e ponendo di avere 30 clip faresti
    codice:
    for(i=1;i<=30;i++){
    	_root["movieclip"+i].onEnterFrame = function(){
    		for(k=1;k<=30;k++){
    			if(_root["movieclip"+k] != this){
    				if(this.hitTest(_root["movieclip"+k])){
    					trace("C'è Urto tra "+this._name+" e "+_root["movieclip"+k]._name+" o viceversa")
    				}
    			}
    		}
    	}
    }
    non posso provarlo ma dovrebbe andar bene così

  3. #3
    Originariamente inviato da and80
    io farei in maniera diversa, ossia userei una ciclo per cui ogni clip verifica con il suo enterFrame se sta "sbattendo" con qualche altro clip e ponendo di avere 30 clip faresti
    codice:
    for(i=1;i<=30;i++){
    	_root["movieclip"+i].onEnterFrame = function(){
    		for(k=1;k<=30;k++){
    			if(_root["movieclip"+k] != this){
    				if(this.hitTest(_root["movieclip"+k])){
    					trace("C'è Urto tra "+this._name+" e "+_root["movieclip"+k]._name+" o viceversa")
    				}
    			}
    		}
    	}
    }
    non posso provarlo ma dovrebbe andar bene così

    Sembra funzionare eccome

    Grazie 1000, gentilissimo!
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da steveaustin
    Sembra funzionare eccome

    Grazie 1000, gentilissimo!
    l'unico inconveniente è che siccome tutti i clip hanno lo stesso codice, allora quando due si scontrano avrai due trace (ma penso che non sia un problema, perchè il trace verrà sostituito da un'azione "fisica", almeno credo )


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.