Comunidad de diseño web y desarrollo en internet online

Error al crear objetos dinámicos ActionScrip 3.

Citar            
MensajeEscrito el 03 Abr 2013 01:32 pm
Hola a todos, resulta que tengo el siguiente problema, estoy tratando de generar de forma dinámica en ActionScrip 3 el siguiente proceso pero me genera error:

playerObject_1.sourceSnd = new audio_1();
playerObject_1.outputSnd = new Sound();
playerObject_1.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 1)});

playerObject_2.sourceSnd = new audio_2();
playerObject_2.outputSnd = new Sound();
playerObject_2.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 2)});

playerObject_3.sourceSnd = new audio_3();
playerObject_3.outputSnd = new Sound();
playerObject_3.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e,3)});

playerObject_4.sourceSnd = new audio_4();
playerObject_4.outputSnd = new Sound();
playerObject_4.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 4)});

Cuando trato de hacer el mismo proceso de esta forma me genera el siguiente error:
ReferenceError: Error #1069: No se encontró la propiedad audio_1 en sonidos y no hay ningún valor predeterminado. at sonidos()

for (var i:int = 1; i <= 4; i++){
this["playerObject_" + i].sourceSnd = new this["audio_"+i]();
this["playerObject_" + i].outputSnd = new Sound();
this["playerObject_" + i].outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, i)});
this["playerObject_" + i].outputSnd.play();
}

Agradezco cualquier ayuda al respecto.

Por charlesrct

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Abr 2013 02:03 pm
BuenAS:

Imagino que los audios los tienes en la biblioteca exportados para ActionScript. Para obtenerlos puedes utilizar getDefinitionByName
En el anterior enlace además de la explicación viene un ejemplo. Pero básicamente lo que debes hacer es obtener la clase a través de getDefinitionByName y despues instancias ese clase como cualquier otra.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 03 Abr 2013 02:36 pm
ok gracias por tú solución, ahora mi problema es en esta línea:
this["playerObject_" + i].outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, i)});

Mi código funcional si se escribe de esta manera:
for (var i:int = 1; i <= 4; i++){
var ClassRef:Class = Class(getDefinitionByName("audio_"+String(i)));
this["playerObject_" + i].sourceSnd = new ClassRef();
this["playerObject_" + i].outputSnd = new Sound();
}
playerObject_1.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 1)});
playerObject_2.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 2)});
playerObject_3.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 3)});
playerObject_4.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, 4)});

for ( i= 1; i <= 4; i++){
this["playerObject_" + i].outputSnd.play();
}

Pero de esta manera no funciona:
for (var i:int = 1; i <= 4; i++){
var ClassRef:Class = Class(getDefinitionByName("audio_"+String(i)));
this["playerObject_" + i].sourceSnd = new ClassRef();
this["playerObject_" + i].outputSnd = new Sound();
this["playerObject_" + i].outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, function(e:SampleDataEvent):void{processSound(e, i)});
this["playerObject_" + i].outputSnd.play();
}

Por charlesrct

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Abr 2013 03:11 pm
una cosa rara que veo es que en el código que dices que te falla añades una función al listener:

function(e:SampleDataEvent):void{processSound(e, i)}

y llamas dentro al valor i del bucle for

Eso creo que no funciona. pero estoy leyendolo aquí y me cuesta bastante ver si es realmente eso.
Por tanto, si dentro de esa función estás utilizando la variable i del bucle, no te va a funcionar.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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