Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Carousel AS3

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    37

    Carousel AS3

    Buongiorno a tutti,

    devo creare un Carosello, pertanto dalla libreria ho aggiunto sullo stage 4 mc tramite AS con il seguente codice:

    Testandolo, mi carica sullo stage un solo MC, dove sbalgio?

    var numOfItems:Number = 4;
    var radiusX:Number = 200;
    var radiusY:Number = 50;
    var centerX:Number = this.stage.stageWidth / 2;
    var centerY:Number = this.stage.stageHeight / 2;
    var speed:Number = 0.02;

    var t:mc;

    // attach icons to the stage
    for (var i = 0; i < numOfItems; i++) {
    t = new mc();
    t.name = "mc"+i;


    // place each item equally around the circle
    t.angle = i * ((Math.PI*2) / numOfItems);
    t.addEventListener(Event.ENTER_FRAME, mover);

    // add to stage
    addChild(t);
    }

    function mover(evt:Event):void {
    this.x = Math.cos(evt.target.angle) * radiusX + centerX;
    this.y = Math.sin(evt.target.angle) * radiusY + centerY;
    var s:Number = this.y / (centerY + radiusY);
    this.scaleY = this.scaleX = s;
    evt.target.angle += this.speed;
    trace(evt.target.name);
    }

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Hai usato this invece di evt.target nella funzione "mover", cambiala in questo modo:

    Codice PHP:
    function mover (evt:Event):void {
        var 
    _this:MovieClip MovieClip(evt.target);
        
    _this.Math.cos(evt.target.angle) * radiusX centerX;
        
    _this.Math.sin(evt.target.angle) * radiusY centerY;
        var 
    s:Number _this./ (centerY radiusY);
        
    _this.scaleY _this.scaleX s;
        
    _this.angle += this.speed;


  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    37
    Ho provato ed ho risolto, grazie mille AND80.

    Come posso inserire all'interno degli MC appena creati delle immagini?

    Saluti

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Dipende, se le carichi dall'esterno o se le inserisci da libreria.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    37
    Vorrei caricarle dalla libreria, in quanto sono solo 3 immagini

    grazie mille

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Devi dargli un nome "linkage" univoco e poi le aggiungi all'mc che ti interessa attraverso la classe Bitmap

    Se ad esempio hai concatenato un'immagine con nome "img1", allora la aggiungi ad un determinato mc con : nomemc.addChild(new Bitmap(new img1(0,0)))

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    37
    nel ciclo for aggiungo la seguente righa:

    nomemc.addChild(new Bitmap(new img1(0,0)))

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Mmh, se devi mettere un'immagine diversa per ogni mc, no, devi fare in maniera diversa, usando un array ad esempio.

    Codice PHP:
    var imgs:Array = [new Bitmap(new img1(0,0)), new Bitmap(new img2(0,0)), new Bitmap(new img3(0,0)), new Bitmap(new img4(0,0))]; 

    nel ciclo assegni l'immagine ai clip usando l'indice stesso del ciclo

    Codice PHP:
    for (var 0numOfItemsi++) {
        
    = new mc();
        
    t.name "mc"+i;
        
    // place each item equally around the circle
        
    t.angle * ((Math.PI*2) / numOfItems);
        
    t.addEventListener(Event.ENTER_FRAMEmover);
        
    // add to stage
        
    addChild(t);
        
    t.addChild(imgs[i]);


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    37
    Grazie mille per l'aiuto AND80,

    ho risolto in questo modo; ho creato 3 MC ed all'interno di ognuno ho inserito la relativa immagine.

    Allego AS eventualmente a qualcuno può ritornare utile:

    for (var i = 0; i < numOfItems; i++) {
    var imgs:Array = [new mc1, new mc2, new mc3];
    imgs[i].angle = i * ((Math.PI*10) / numOfItems);
    imgs[i].addEventListener(Event.ENTER_FRAME, mover);
    addChild(imgs[i])
    }

    function mover (evt:Event):void {
    var _this:MovieClip = MovieClip(evt.target);
    _this.x = Math.cos(evt.target.angle) * radiusX + centerX;
    _this.y = Math.sin(evt.target.angle) * radiusY + centerY;
    var s:Number = _this.y / (centerY + radiusY);
    _this.scaleY = _this.scaleX = s;
    _this.angle += this.speed;
    }

    Saluti

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Perfetto, è un metodo alternativo per raggiungere il medesimo risultato

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.