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

    Rinominare le istanze di un Array !?

    Perche se creo una funzione del tipo...

    Codice PHP:
    function createFigure () {
          for(var 
    i:Number=0i<10i++) {
                
    myArray[i] = new Figurina();
                
    myArray[i].name = ("figurina"+i).toString();
          }
    }

    //dove "Figurina" è un clip filmato esportato come classe attraverso il Concatenamento... 
    ... non riesco ad accedere alle proprietà delle istanze come di seguito?

    figurina2.x = 10;
    figurina3.alpha = 0.5;
    figurina8.rotation = -90;
    --------------------------------------------------------------------------------------------
    PS: ora mi direste che basta fare myArray[3].alpha = 0.5 che è la stessa cosa.

    Ma io più che altro vorrei crearmi due serie di Figurine con la funzione createFigure e rinominarle in maniera distinta per poterle fare interagire attraverso hitTestObject();

    Mi spiego meglio:

    function createFigure("parametriA"); //dicciamo che myArray[0].name = "pippoA";
    function createFigure("parametriB");//e myArray[0].name = "pippoB";

    vorrei fare tipo:
    Codice PHP:
    if (pippoA.hitTestObject(pippoB)) {
        
    eccecc.
    }; 
    Bill Gates disse "Bug". E windows fu.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    L'argomento è un tantino complicato e si rischia di tirarla per le lunghe a spiegare tutto il meccanismo. Mi limito a dirti che l'assegnazione della proprietà name ai clip serve solo per un caso specifico, ossia che li si richiami dal display object che lo contiene (che lo visualizza) tramite la funzione getChildByName().
    Ad esempio può servire se fai una cosa del genere:

    Codice PHP:
    var sp:Sprite = new Sprite();
    sp.name "test";
    this.addChild(sp);
    trace(this.getChildByName("test").name); // test 
    Nell'esempio il valore che contiene la definizione dello sprite non è "test" ma "sp".
    Di conseguenza l'unica (semplice) maniera di richiamare un oggetto specifico dal tuo array è quella di usare l'indice che lo contiene.

    In alternativa potresti agire in maniera un po' più tipica per AS2, ossia usare un riferimento su root o sulla timeline a cui ti stai riferendo con la funzione createFigure().

    Codice PHP:
    function createFigure () {
          for(var 
    i:Number=0i<10i++) {
                
    root["figurina"+i] = new Figurina();
          }

    A quel punto non dovresti comunque avere un riferimento preciso sulla timeline in cui stai operando ma puoi richiamare il clip che ti interessa usando il nome per intero

    Codice PHP:
    root["figurina2"].10;
    root["figurina3"].alpha 0.5;
    root["figurina8"].rotation = -90

  3. #3
    Grazie mille della risposta !!!

    Comunque ho risolto il problema così:

    Codice PHP:
    var myArrayA:Array = new Array();
    var 
    myArrayB:Array = new Array();

    function 
    createFigure () {
          for(var 
    i:Number=0i<10i++) {
                
    myArrayA[i] = new Figurina();
                
    myArrayB[i] = new Figurina();

                
    myArrayA[i].addEventListener(MouseEvent.MOUSE_DOWNdrag);
                
    myArrayA[i].addEventListener(MouseEvent.MOUSE_UPdrop);
          }


    function 
    drag (dragEvent:MouseEvent):void {
                
    dragEvent.currentTarget.startDrag(true);         
    }

    function 
    drop (dropEvent:MouseEvent):void {
                
    dragEvent.currentTarget.stoptDrag();
                
                   if(
    dropEvent.currentTarget.hitTestObject(myArrayB[myArrayA.indexOf(dropEvent.currentTarget)])==true) {
          
    //fai qualcosa
    } else {
         
    //fai qualcosa
    }   
                

    Bill Gates disse "Bug". E windows fu.

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.