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

    [AS2] - Controllo MovieClip creato dinamicamente

    Ciao ragazzi!

    Sono nuovo del forum e una domanda che riguarda actionscript 2.

    Utilizzo createEmptyMovieClip per creare un movieclip in modo dinamico, il tutto è detto un ciclo for che fà il parsing di un file xml.

    Siccome sto dentro onEnterFrame dovrei evitare che il movieclip venga creato tante volte.

    riporto il codice per chiarezza:

    codice:
    function createMovie(movie){
          var mc:MovieClip = this.createEmptyMovieClip(movie, this.getNextHighestDepth());
          return mc;
    }
    this.onEnterFrame = function() {
    /*parti di codice*/
        for(var i:Number=0;i<NumPresenti;i++){
    	   var Play = dots.firstChild.childNodes[1].childNodes[i].attributes.id;
               var Mov:Object = createMovie(Play);
       }
    /*parti di codice*/
    }
    ora prima di var Mov:Object = createMovie(Play); dovrei controllare se effettivamente esiste questo clip come posso fare ?....

    ho provato _root.Play/this.Play ma naturalmente mi stampa il valore della variabile Play e non clip..

    Suggerimenti ?..

  2. #2
    beh ...a che ti serve quell'enterframe
    magari io dividerei le funzio quella di lettura e creazione di clip e poi userei l'enterframe ...se davvero serve

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  3. #3
    L'EnterFrame mi serve perchè i MovieClip li devo aggiornare tramite xml, che viene generato automaticamente da php con un database mysql. Se un field si aggiunge devo creare un altro movieclip e viceversa, Inoltre il movieclip creato dinamicamente si deve spostare su un punto che io clicco dello stage e il movimento si deve vedere.., non sò se mi son spiegato.

    Per questo chiedevo se esisteva un controllo tipo if(movieClip) { ect.. }.

    Altrimenti hai un'altra soluzione ?..

    setInterval ?.. ma non cambia la situazione sempre un controllo per non ricrearmi lo stesso mc devo fare..


    Ti ringrazio per la risposta

  4. #4
    Innanzitutto mettere un xml.load dentro un setInterval che aggiornarlo ad ogni frame non ha senso.
    Poi se id non è qualcosa tipo "clip1" ma è solo un numero, aggiungi prima una stringa, che i clip non si possono chiamare con un numer. Cioè se tu dall'xml leggi 12, qua devi fare

    var mc:MovieClip = this.createEmptyMovieClip("clip"+movie, this.getNextHighestDepth());

    Qua invece fai così, fuori dalla funzione crei l'array vuoto

    var arrayClip:Array = new Array()

    codice:
        for(var i:Number=0;i<NumPresenti;i++){
    	   var Play = dots.firstChild.childNodes[1].childNodes[i].attributes.id;
               var trovato=false;
    
               for (var i=0;i<arrayClip.length;i++){
                 if (Play==arrayClip[i]._name){ //mi raccomando controlla di dare lo stesso nome quando crei il clip al controllo che fai qui
                         trovato = true
                    }
               }
               if (!trovato){
                   var Mov:Object = createMovie(Play);
                   arrayClip.push(Mov)
               }
       }

  5. #5
    ok grazie ragazzi ci sono riuscito ...

    ora ho un'altro problema che elenco qui di seguito:

    dovrei far muovere un mc all'interno dello stage dove le nuove coordinate x e y le prendo tramite il click del mouse e fin quì tutto bene..

    Non mi serve il codice ma solo una eventuale correzione anche perchè il movimento va bene, ma una volta che il mc arriva alle coordinate specificate non si ferma perchè le x ed y dell'mc non sono mai identiche a le nuove x ed y spero di essermi spiegato o.O

    riporto il codice per chiarezza:

    codice:
    var velocita:Number = 10;
    if(clipReferenceUser._x < PositionX){
    			clipReferenceUser._x += _root.PositionX/velocita;
    		}
    		else{
    			clipReferenceUser._x -= _root.PositionX/velocita;
    		}
    		
    		if(clipReferenceUser._y < PositionY){
    			clipReferenceUser._y += _root.PositionY/velocita;
    		}
    		else{
    			clipReferenceUser._y -= _root.PositionY/velocita;
    		}
    		
    		if(clipReferenceUser._x == PositionX){
    			clipReferenceUser._x = _root.PositionX;
    		}
    		
    		if(clipReferenceUser._y == PositionY){
    			clipReferenceUser._y = _root.PositionY;
    		}
    		
    		if(clipReferenceUser._y == PositionY && clipReferenceUser._x == PositionX){
    			_root.MoveStart = false;
    		}
    Grazie mille!

  6. #6

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.