Comunidad de diseño web y desarrollo en internet online

problema al crear objetos dinamicos con un FOR

Citar            
MensajeEscrito el 02 Feb 2010 03:35 pm
Hola a todos, tengo un objeto PaperSprite, con unas propiedades, y quiero crear varios objetos para hacer un patron en la pantalla.

Pero solo me hereda las propiedades el último...

No tengo ni idea de como solucionarlo.

Algún experto del foro puede ayudarme?

Código ActionScript :

import soulwire.display.PaperSprite;


for (var i:int = 0; i < 15; i++) {
   
var myPaperSprite:PaperSprite = new PaperSprite();

myPaperSprite.pivot = new Point(0.5,0.5);

//myPaperSprite.x = stage.stageWidth / 2;
//myPaperSprite.y = stage.stageHeight / 2;

myPaperSprite.front = createSprite(0x66FF00);
myPaperSprite.back = createSprite(0xFF3399);
   myPaperSprite.x = i * 25 + 75;
   myPaperSprite.y = 100;
   addChild(myPaperSprite);
}

function createSprite (colour:uint):Sprite
{
   var mySprite:Sprite = new Sprite();
   mySprite.graphics.beginFill ( colour );
   mySprite.graphics.drawRect (0,0,25,25);
   mySprite.graphics.endFill ();
   return mySprite;
}

addEventListener ( Event.ENTER_FRAME, spin );

function spin ( event:Event ):void
{
   var mX:Number = ((mouseX / stage.stageWidth) - 0.5) * 360;
   var mY:Number = ((mouseY / stage.stageHeight) - 0.5) * 360;

   myPaperSprite.rotationY += (mX - myPaperSprite.rotationY) / 40;
   myPaperSprite.rotationX += (mY - myPaperSprite.rotationX) / 40;
}

Por kodama

99 de clabLevel

1 tutorial

Genero:Masculino  

Diseñador Web Freelance

firefox
Citar            
MensajeEscrito el 02 Feb 2010 04:21 pm
Estás creando múltiples "PaperSprite" y sólo estás moviendo uno.
Vamos, en el bucle, cuando usamos

Código ActionScript :

for (var i:int = 0; i < 15; i++) { 
   var myPaperSprite:PaperSprite = new PaperSprite(); 
   ....
}

CADA paso del bucle es una nueva variable.

Cuando queremos mover varios "MCs" (o lo que sea) es conveniente tenerlos en un array. Así puedes escribir

Código ActionScript :

//al principio declaramos un array de PaperSprites
var todosPapers:Array=new Array()
//en el interior del bucle
for (var i:int = 0; i < 15; i++) { 
    var myPaperSprite:PaperSprite = new PaperSprite(); 
    .....
   todosPapers.push(addChild(myPaperSprite));  //<--lo añadimos al Array a la vez que lo añadimos al "stage"(*)
}
//tu función spin, se recorrerá TODOS los elementos del array
function spin ( event:Event ):void 
{ 
   var mX:Number = ((mouseX / stage.stageWidth) - 0.5) * 360; 
   var mY:Number = ((mouseY / stage.stageHeight) - 0.5) * 360; 
   for each (var MyPaperSprite:DisplayObject in todosPapers){  //<--usamos un bucle for..each
      myPaperSprite.rotationY += (mX - myPaperSprite.rotationY) / 40; 
      myPaperSprite.rotationX += (mY - myPaperSprite.rotationX) / 40; 
   }
}

(*)lo he hecho en un solo paso, cuando quizá se puede hacer en dos

Código ActionScript :

todosPapers.push(myPaperSprite); 
addChild(myPaperSprite)

ó

Código ActionScript :

todosPapers[i]=myPaperSprite; 
addChild(myPaperSprite)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 04:49 pm
mil gracias, si estuvieras delante te daria un beso en la frente.

Es un placer tratar con personas como vosotros.

Muchas gracias otra vez.

Saludos

Por kodama

99 de clabLevel

1 tutorial

Genero:Masculino  

Diseñador Web Freelance

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.