Discussion:
[FL CS3 AS2] Problemas: asignar eventos a mc
(demasiado antiguo para responder)
chus
2008-12-09 09:57:50 UTC
Permalink
Hola a ***@s:
estoy un poco harto de no poder hacer esto nunca, me explico:
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o
onEnter frame. (si lo hago en el primer frame del mc con onClipEvent si
funciona, a sí lo resuelvo siempre pero tiene que funcionar de la otra
forma no?)

Este es, esquemáticamente, el código que uso:

var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre", this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);

//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;


function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}

gracias,
chus
Juan Muro
2008-12-09 13:01:20 UTC
Permalink
Hola chus:
A bote pronto (no tengo flash delante) creo recordar que en AS2 deberías
declarar el objeto así:
var objectoVacio= new Object();
porque es posible que no pille la sintaxis strict data tipyng de as3....
Ó quizá mejor
var objectoVacio:Object = this.attachMovie("a", "b", profundidad, {x:, y});
y luego un
objectoVacio.onLoad = function() {
la que sea;
}
Salu2
`8¬]
Juan Muro

P/D.- Cada vez sé menos de AS2. Soy un jodido desastre.
Post by chus
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o onEnter
frame. (si lo hago en el primer frame del mc con onClipEvent si funciona,
a sí lo resuelvo siempre pero tiene que funcionar de la otra forma no?)
var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre", this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}
gracias,
chus
chus
2008-12-09 16:03:52 UTC
Permalink
Gracias por la contestación Juan.
Pero sigo sin que funcione. Creo que es un problema de niveles.
El problema siempre me pasa cuando quiero generar varios mc's y
asignales a todos los mismos scripts para sus eventos (onLoad,
onEnterFrame). Repito gracias por la respuesta.

saludos,
chus

PD: Algún día el volumen de trabajo me dejará empezar con AS3...
Post by Juan Muro
A bote pronto (no tengo flash delante) creo recordar que en AS2 deberías
var objectoVacio= new Object();
porque es posible que no pille la sintaxis strict data tipyng de as3....
Ó quizá mejor
var objectoVacio:Object = this.attachMovie("a", "b", profundidad, {x:, y});
y luego un
objectoVacio.onLoad = function() {
la que sea;
}
Salu2
`8¬]
Juan Muro
P/D.- Cada vez sé menos de AS2. Soy un jodido desastre.
Post by chus
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o onEnter
frame. (si lo hago en el primer frame del mc con onClipEvent si funciona,
a sí lo resuelvo siempre pero tiene que funcionar de la otra forma no?)
var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre", this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}
gracias,
chus
Álvaro Vidal
2008-12-09 22:03:31 UTC
Permalink
Buenas noches,

He hecho una pequeña prueba y por ponerte un ejemplo el onEnterFrame a
mi me funciona simplemente con el siguiente código, hablando de AS2, claro
está:

_root.createEmptyMovieClip("Contenedor", 1);
_root.Contenedor.attachMovie("Prueba", "miPrueba", 1);

_root.Contenedor.miPrueba.onEnterFrame = function():Void {
trace("Entrando en Frame");
}

Y con este también:

_root.createEmptyMovieClip("Contenedor", 1);
var obj:MovieClip = _root.Contenedor.attachMovie("Prueba",
"miPrueba", 1)

obj.onEnterFrame = function():Void {
trace("Entrando en Frame");
}

A ver si esto te puede ayudar, lo mismo si definimos la variable obj en
la primera linea y cambiamos el onEnterFrame a obj.miPrueba.onEnterFrame ...

Saludos, Álvaro.
Post by chus
Gracias por la contestación Juan.
Pero sigo sin que funcione. Creo que es un problema de niveles.
El problema siempre me pasa cuando quiero generar varios mc's y asignales
a todos los mismos scripts para sus eventos (onLoad, onEnterFrame). Repito
gracias por la respuesta.
saludos,
chus
PD: Algún día el volumen de trabajo me dejará empezar con AS3...
Post by Juan Muro
A bote pronto (no tengo flash delante) creo recordar que en AS2 deberías
var objectoVacio= new Object();
porque es posible que no pille la sintaxis strict data tipyng de as3....
Ó quizá mejor
var objectoVacio:Object = this.attachMovie("a", "b", profundidad, {x:, y});
y luego un
objectoVacio.onLoad = function() {
la que sea;
}
Salu2
`8¬]
Juan Muro
P/D.- Cada vez sé menos de AS2. Soy un jodido desastre.
Post by chus
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o
onEnter frame. (si lo hago en el primer frame del mc con onClipEvent si
funciona, a sí lo resuelvo siempre pero tiene que funcionar de la otra
forma no?)
var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre",
this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}
gracias,
chus
chus
2008-12-10 07:37:54 UTC
Permalink
Gracias Álvaro por tu tiempo y la respuesta.

Creo que el problema que tengo es una cuestión de niveles, de en qué
sitio se escribe el código y cómo hago referencia a los niveles.

Guardo las respuestas para cuando tenga tiempo de
estudiarlo(sabedioscuando).XD

gracias otra vez a los dos,
chus
Post by Álvaro Vidal
Buenas noches,
He hecho una pequeña prueba y por ponerte un ejemplo el onEnterFrame a
mi me funciona simplemente con el siguiente código, hablando de AS2, claro
_root.createEmptyMovieClip("Contenedor", 1);
_root.Contenedor.attachMovie("Prueba", "miPrueba", 1);
_root.Contenedor.miPrueba.onEnterFrame = function():Void {
trace("Entrando en Frame");
}
_root.createEmptyMovieClip("Contenedor", 1);
var obj:MovieClip = _root.Contenedor.attachMovie("Prueba",
"miPrueba", 1)
obj.onEnterFrame = function():Void {
trace("Entrando en Frame");
}
A ver si esto te puede ayudar, lo mismo si definimos la variable obj en
la primera linea y cambiamos el onEnterFrame a obj.miPrueba.onEnterFrame ...
Saludos, Álvaro.
Post by chus
Gracias por la contestación Juan.
Pero sigo sin que funcione. Creo que es un problema de niveles.
El problema siempre me pasa cuando quiero generar varios mc's y asignales
a todos los mismos scripts para sus eventos (onLoad, onEnterFrame). Repito
gracias por la respuesta.
saludos,
chus
PD: Algún día el volumen de trabajo me dejará empezar con AS3...
Post by Juan Muro
A bote pronto (no tengo flash delante) creo recordar que en AS2 deberías
var objectoVacio= new Object();
porque es posible que no pille la sintaxis strict data tipyng de as3....
Ó quizá mejor
var objectoVacio:Object = this.attachMovie("a", "b", profundidad, {x:, y});
y luego un
objectoVacio.onLoad = function() {
la que sea;
}
Salu2
`8¬]
Juan Muro
P/D.- Cada vez sé menos de AS2. Soy un jodido desastre.
Post by chus
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o
onEnter frame. (si lo hago en el primer frame del mc con onClipEvent si
funciona, a sí lo resuelvo siempre pero tiene que funcionar de la otra
forma no?)
var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre",
this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}
gracias,
chus
Delfín Sáez
2008-12-10 10:39:23 UTC
Permalink
var nivelDeseado:MovieClip = this;
var objectoVacio:MovieClip = nivelDeseado.createEmptyMovieClip("nombre",
nivelDeseado.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", objectoVacio.getNextHighestDepth());

//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;


function funcionOnLoad():Void
{
trace("funcion onload()");
}
var i : Number = 0;
function funcionEnterFrame():Void
{
trace("funcion onEnterFrame()-->"+i++);
}

------------------------------------------------------------------

Hola Chus, yo he probado esto y me funciona correctamente.

Te comento un poco por encima con nivelDeseado puedes indicar tu nivel
deseado. Ya que se dedicara a incluir el nuevo clip dentro de este en el
nivel mas alto del mismo.

ObjectoVacio lo hago un movieclip, no entiendo muy bien porque querias
un object, pero deberia funcionar tambien con el mismo.
Y para crear el clip y añadir el de la biblioteca le he añadido el valor
del parametro nivelDeseado para que se cree en el clip que queremos y en
el orden mas alto del mismo con getNextHighestDepth.

Y por ultimo supongo que el clip que añades a le has puesto las
propiedades de exportar para fotograma y añadir en el primer clip con el
nombre 'a'.

Bueno siento la redaccion, pero ha sido todo un poco a correprisas. Un
saludo y espero que te resuelva tus dudas.
chus
2008-12-10 11:31:44 UTC
Permalink
Gracias Delfín, lo probaré, se entiende todo muy bien no te preocupes
por la redacción.Y si lo del Object debe se fruto de:
"pruebas_desesperadas_para_ver_si_funcionaba". ;-)

chus
Post by Delfín Sáez
var nivelDeseado:MovieClip = this;
var objectoVacio:MovieClip = nivelDeseado.createEmptyMovieClip("nombre",
nivelDeseado.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", objectoVacio.getNextHighestDepth());
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
trace("funcion onload()");
}
var i : Number = 0;
function funcionEnterFrame():Void
{
trace("funcion onEnterFrame()-->"+i++);
}
------------------------------------------------------------------
Hola Chus, yo he probado esto y me funciona correctamente.
Te comento un poco por encima con nivelDeseado puedes indicar tu nivel
deseado. Ya que se dedicara a incluir el nuevo clip dentro de este en el
nivel mas alto del mismo.
ObjectoVacio lo hago un movieclip, no entiendo muy bien porque querias
un object, pero deberia funcionar tambien con el mismo.
Y para crear el clip y añadir el de la biblioteca le he añadido el valor
del parametro nivelDeseado para que se cree en el clip que queremos y en
el orden mas alto del mismo con getNextHighestDepth.
Y por ultimo supongo que el clip que añades a le has puesto las
propiedades de exportar para fotograma y añadir en el primer clip con el
nombre 'a'.
Bueno siento la redaccion, pero ha sido todo un poco a correprisas. Un
saludo y espero que te resuelva tus dudas.
chus
2008-12-10 12:27:53 UTC
Permalink
Ola a los tres (a el resto),
he estado probando los códigos e ideas que me habeis enviado y tengo las
siguientes dudas:

1- el evento onLoad no consigo que funcione, no hace ningún trace.(?)
2- en mi código sí funciona el evento es onPress o onEnterFrame, después
de hacerle algunas modificaciones con vuestras notas.
3- existe algun ejemplo de código (AS2) en que se aborde este tipo de
problema pero metiéndolo en un bucle for y, así, generar una serie de
mc's con distintos nombres y los mismo comportamientos, todo esto sin
tener que usar "eval".

gracias y saludos,
chus
Post by chus
Gracias Delfín, lo probaré, se entiende todo muy bien no te preocupes
"pruebas_desesperadas_para_ver_si_funcionaba". ;-)
chus
Post by Delfín Sáez
var nivelDeseado:MovieClip = this;
var objectoVacio:MovieClip =
nivelDeseado.createEmptyMovieClip("nombre",
nivelDeseado.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", objectoVacio.getNextHighestDepth());
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
trace("funcion onload()");
}
var i : Number = 0;
function funcionEnterFrame():Void
{
trace("funcion onEnterFrame()-->"+i++);
}
------------------------------------------------------------------
Hola Chus, yo he probado esto y me funciona correctamente.
Te comento un poco por encima con nivelDeseado puedes indicar tu nivel
deseado. Ya que se dedicara a incluir el nuevo clip dentro de este en
el nivel mas alto del mismo.
ObjectoVacio lo hago un movieclip, no entiendo muy bien porque querias
un object, pero deberia funcionar tambien con el mismo.
Y para crear el clip y añadir el de la biblioteca le he añadido el valor
del parametro nivelDeseado para que se cree en el clip que queremos y
en el orden mas alto del mismo con getNextHighestDepth.
Y por ultimo supongo que el clip que añades a le has puesto las
propiedades de exportar para fotograma y añadir en el primer clip con
el nombre 'a'.
Bueno siento la redaccion, pero ha sido todo un poco a correprisas. Un
saludo y espero que te resuelva tus dudas.
ESTHER
2009-01-28 09:52:32 UTC
Permalink
no lo se perdona por no ayudarte
Post by chus
- creo un mc con createEmptyMovieClip
- con attachMovie le pongo un mc da biblioteca.
- y a ahora lo que no funciona nunca: asignarle un evento onLoad o onEnter
frame. (si lo hago en el primer frame del mc con onClipEvent si funciona,
a sí lo resuelvo siempre pero tiene que funcionar de la otra forma no?)
var objectoVacio:Object= new Object();
objectoVacio = createEmptyMovieClip("nombre", this.getNextHighestDepth());
objectoVacio.attachMovie("a", "b", 1);
//Estas dos funciones no funcionan
objectoVacio.b.onLoad = funcionOnLoad;
objectoVacio.b.onEnterFrame = funcionEnterFrame;
function funcionOnLoad():Void
{
...
}
function funcionEnterFrame():Void
{
...
}
gracias,
chus
Loading...