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

    [AS3] SwapChild, come porto un elemento in primo piano dinamicamente?

    Ciao

    Sto realizzando a scopo puramente ludico una carousel gallery... una di quelle gallery che girano per intenderci!

    Sto cercando di realizzare il mio script AS3 partendo da uno script in AS2... e per ora me la cavo benino (considerato quanto ne so di actionscript... nn mi lamento!).

    vi posto il codice:
    codice:
    var numOfItems:Number=10;
    var radiusX:Number=300;
    var radiusY:Number=80;
    var centerX:Number=Math.round(stage.stageWidth/2);
    var centerY:Number=Math.round(stage.stageHeight/2);
    var speed:Number=0.05;
    
    stage.addEventListener(MouseEvent.MOUSE_MOVE, changeSpeed);
    
    for (var i:int=0; i<numOfItems; i++) {
    	var item:Item = new Item();
    	item.ang=i*(2*Math.PI)/numOfItems;
    	item.addEventListener(Event.ENTER_FRAME, recalcPosition);
    	addChild(item);
    }
    
    function recalcPosition(e:Event):void {
    	// I set the position of each item
    	e.target.x=radiusX*Math.cos(e.target.ang)+centerX;
    	e.target.y=radiusY*Math.sin(e.target.ang)+centerY;
    	// I update the increment
    	e.target.ang+=speed;
    	// I set the scaling factor
    	var s:Number = e.target.y/(radiusY+centerY);
    	e.target.scaleX=e.target.scaleY=s;
    }
    
    function changeSpeed(e:MouseEvent):void {
    	speed = (mouseX-centerX)/4000;
    }
    Nella funzione recalcPosition, lo script AS2 faceva una cosa furba per evitare che nella rotazione le icone si sovrapponessero, ed era questa:
    this.swapDepths(Math.round(this._xscale + 100));
    ossia dava la profondità ad ogni mc a seconda del fattore di scale (più grande = più avanti), ma mi pare di capire che il concetto di depth in as3 si sia un po' ridimensionato... e ho trovato solo swapChild e swapChildAt, che presume l'interazione tra due child predefiniti.
    Avrei trovato anche un setChildIndex, ma presume che io dia un indice di profondità solo entro un certo range... ossia 10 mc = indice massimo 9

    Come posso uscirne? Ste gallery esistono anche in as3 per cui in qualche modo si deve fare... no??

    Grazie mille!

    PS: il codice ve lo regalo, se vi serve è tutto vostro!
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2

    Risolto!

    Ho trovato un trucchetto che fa al caso mio.
    Ho messo tutto dentro ad un contenitore e richiamo ciclicamente (dentro a recalcPosition) questa funzione:

    codice:
    function arrange():void {
    	cItems.sortOn("y", Array.NUMERIC);  
    	var i:int = cItems.length;  
    	while(i--){  
    		if (container.getChildAt(i) != cItems[i]) {  
    			container.setChildIndex(cItems[i], i);  
    		}  
    	}  
    }
    Un po' macchinosa, ma se non ci sono 200 immagini va bene!

    Ovviamente l'ho trovata su internet... per i curiosi: http://flash.lillegutt.com/?p=46#comment-35
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

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.