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

    Aiuto: Immagini, da un array, in un MovieClip tramite OOP

    Ciao a tutti,
    ho un problema e non so come risolverlo. Qualcuno mi potrebbe aiutare?


    Il tutto tramite OOP e dichiarazioni prototype.

    A. Ho un array di nomi di immagini

    images_arr=["first.jpg","second.jpg","third.jpg"]

    B. voglio caricare queste immagini in un movieclip

    img_mc

    C. voglio applicare a questo movieclip qualche trasformazione

    es. muoverlo sull'asse _x

    Ho provato in questo modo:

    codice:
    //////////////////////////////////////////////////////////////////////////
    
    // declaration of class
    
    _global.ImgAlbum = function(img_arr) {
        this.imgs = img_arr;
        this.dim = img_arr.length;
        this.buildMovieClip();
    };
    
    // declaration of prototypes
    
    ImgAlbum.prototype.buildMovieClip = function() {
        for (var i = 0; i < this.dim; i++) {
            //
            // A questo punto non so cosa devo fare
            //
            // avrei bisogno di un - this.img_mc
            // contenente tutte le immagini i cui nomi sono in - array img_arr
            // da utilizzare nel - moveX - prototype seguente
        };
    };
    
    ImgAlbum.prototype.moveX = function(incX) {
         this.img_mc._x += incX; 
    };
    
    //
    
    myImgAlbum = new ImgAlbum(images_arr);
    myImgAlbum.moveX(10);
    
    //////////////////////////////////////////////////////////////////////////
    Grazie a tutti per i suggerimenti

  2. #2
    Dovresti caricare ogni foto in un'istanza di clip all'interno del ciclo. Logicamente ogni istanza sarebbe all'interno della clip che esegue il metodo.

  3. #3
    Quindi all'interno del ciclo dovrei inserire qualcosa tipo il codice seguente (pero' magari correggimi gli errori - che ci sono - perchè sono veramente agli inizi e faccio molta fatica)

    codice:
    /////////////////////////////////////
    ImgAlbum.prototype.buildMovieClip = function() {
      for (var i = 0; i < this.dim; i++) {
        //
        // avrei bisogno di un - this.img_mc
        // contenente tutte le immagini i cui nomi sono in - array img_arr
        // da utilizzare nel - moveX - prototype seguente
        //
        ////////////////////////////////////////////////////////////////
        // inserito da ciccio-mx
        //
        // c'e' sicuramente un errore contettuale
        // perché alla fine ImgAlbum.prototype.moveX mi nuove solo
        // l'ultima immagine caricata
        //
        this.img_mc = createEmptyMovieClip("miomc_"+i, 100+i);
        // le immagini sono tutte larghe 100 per cui le distanzio di 
        this.img_mc._x = 110*i;
        this.img_mc.loadMovie(this.imgs[i]);
        ////////////////////////////////////////////////////////////////
      };
    };
    /////////////////////////////////////

  4. #4
    codice:
    MovieClip.prototype.buildMovieClip = function(){
    	for (var i = 0; i < this.dim; i++) {
    		this.img_mc = this.createEmptyMovieClip("mc_" + i, 100 + i);
    		this.img_mc.loadMovie(this.imgs[i]);
    		this.img_mc._x = this.img_mc._x + (this.img_mc._width * i);
            }	
    };

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    codice:
    var images_arr = ["first.jpg", "second.jpg", "third.jpg"];
    _global.ImgAlbum = function(path, img_arr)
    {
    	this.path = path;
    	this.imgs = img_arr;
    	this.path.createEmptyMovieClip("img_mc", 1);
    	this.buildMovieClip();
    };
    ImgAlbum.prototype.buildMovieClip = function(path)
    {
    	var mc;
    	var str;
    	for (var i = 0; i<this.imgs.length; i++)
    	{
    		str = this.imgs[i].substr(0, this.imgs[i].indexOf("."));
    		mc = this.path.img_mc.createEmptyMovieClip(str+'_mc', 100+i);
    		mc._x = 110*i;
    		mc.loadMovie(this.imgs[i]);
    	}
    };
    ImgAlbum.prototype.moveX = function(incX)
    {
    	this.img_mc._x += incX;
    };
    //
    myImgAlbum = new ImgAlbum(_root, images_arr);
    myImgAlbum.moveX(10);
    prova cosi

  6. #6
    Grazie a thunderlips e a polliotto per le risposte.
    Ho provato entrambi i codici suggeriti:

    A. quello di thunderlips non va: non compaiono le immagini e se vado a controllare col debugger mi dà img_mc undefined (ho sbagliato qualche cosa?)

    B. quello di polliotto va pero' bisogna correggere la parte seguente:
    codice:
    ImgAlbum.prototype.moveX = function(incX) {
       //this.img_mc._x += incX; // questo non va
       this.path.img_mc._x += incX; // questo va
    };
    Grazie ancora

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    CHE TESTINA! :quote: :quote: :quote:

  8. #8
    Ho pensato anche a questa variante e funziona:

    codice:
    ///////////////////////////////////////////////////////////////////
    _global.ImgAlbum = function(img_arr) {
       this.imgs = img_arr;
       this.dim = img_arr.length;
       this.buildMovieClip();
    };
    //
    ImgAlbum.prototype.buildMovieClip = function() {
       createEmptyMovieClip("img_mc", 1);
       with (img_mc) {
          for (var i = 0; i<this.dim; i++) {
             createEmptyMovieClip("mc_"+i,100+i);
             eval("mc_"+i).loadMovie(this.imgs[i]);
             // ora dispongo le immagini caricate spaziandole
             // sono tutte larghe 100px per cui settando _x
             // a multipli di 110 le distanzio di 10 px
             // ovviamente è solo un esempio
             eval("mc_"+i)._x=110*i;
          }
       }
    };
    //
    ImgAlbum.prototype.moveX = function(incX) {
       img_mc._x += incX;
    };
    //
    images_arr = ["first.jpg", "second.jpg", "third.jpg"];
    myImgAlbum = new ImgAlbum(images_arr);
    //
    btn.onPress = function() {
       myImgAlbum.moveX(10);
    };
    ///////////////////////////////////////////////////////////////////
    grazie ancora a tutti e spero che questo thread possa essere utile non solo a me ;-) (sono agli inizi ma mi piace da morire!)

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.