La creación de instancias de acción con Script

  • koivi
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 13, 2004
  • Mensajes: 23
  • Loc: Minnesota
  • Status: Offline

Nota Agosto 13th, 2004, 2:26 pm

¿Cómo se crea una instancia de un símbolo de la biblioteca y cambiar sus propiedades?

Mi primer pensamiento fue que Id tiene que crear y nombrar un caso fuera de fase, entonces su uso como para copiar, renombrar y cambiar las propiedades. ¿Es esto lo que hay que hacer, o puedo crear una nueva instancia directamente de los símbolos nombre? En cualquier caso, no sé cómo ID de crear la nueva instancia que quiero modificar.

Cualquier ayuda es muy apreciada!
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Agosto 13th, 2004, 2:26 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Agosto 13th, 2004, 6:00 pm

Haga clic en el símbolo de la biblioteca y seleccionar "vinculación"

Esto popup un diálogo titulado "Propiedades de vinculación"

Habrá 3 casillas que están habilitadas,

marque la que dice "Exportar para ActionScript".

Esto permitirá a la "Identifier" cuadro de texto,

Introduzca el nombre de ID que desea utilizar para llamar a este símbolo con ActionScript y haga clic en "Aceptar"

Ahora, cuando usted desea utilizar este símbolo con ActionScript, deberá añadir que de esta manera,

Código: [ Select ]
attachMovie("linkageID", "instanceName",0);

Donde "linkageID" es el nombre que sólo le dio i diálogo Propiedades de vinculación ", instanceName" es lo que va a utilizar para modificar con ActionScript, y 0 es la profundidad a colocarla.

Puede modificar sus propiedades como tal,
Código: [ Select ]
attachMovie("linkageID", "instanceName",0);
instanceName._alpha = 50;
  1. attachMovie("linkageID", "instanceName",0);
  2. instanceName._alpha = 50;


Puede conectar a otros movieclips, así,
Código: [ Select ]
myMC.attachMovie("linkageID", "instanceName",0);
myMC.instanceName._alpha = 50;
  1. myMC.attachMovie("linkageID", "instanceName",0);
  2. myMC.instanceName._alpha = 50;

Ahora será adosada a la profundidad 0 de myMC en lugar de profundidad 0 de _level0.
Strong with this one, the sudo is.
  • koivi
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 13, 2004
  • Mensajes: 23
  • Loc: Minnesota
  • Status: Offline

Nota Agosto 13th, 2004, 6:29 pm

AWESOME! Gracias por toda la información. Ahora creo que puedo finalmente tener una base de código decente para terminar el proyecto hasta la forma que yo quiero hacerlo en lugar de tratar de cortar y hacer las cosas mal código que es difícil de mantener. :)
  • koivi
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 13, 2004
  • Mensajes: 23
  • Loc: Minnesota
  • Status: Offline

Nota Agosto 14th, 2004, 6:45 am

Una pregunta más...¿Cómo puedo crear nombres de instancia? Ive intentado:
Código: [ Select ]
instance_name = "point"+i;
attachMovie("map_point",instance_name,0);
instance_name._x=new_x;
instance_name._y=new_y;
  1. instance_name = "point"+i;
  2. attachMovie("map_point",instance_name,0);
  3. instance_name._x=new_x;
  4. instance_name._y=new_y;

Lo que no parece funcionar, a menos que sólo tengo un punto que se coloca....
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Agosto 14th, 2004, 7:36 am

Trate de reemplazar que el cero con i si los thats de un bucle.
Parece que mantener la colocación movieclips nuevo a la misma profundidad 0.

Esta es otra manera,
Código: [ Select ]
attachMovie("map_point", "point"+i, i);/*note the variable being used for the depth*/
this["point"+i]._x=new_x;
this["point"+i]._y=new_y;
  1. attachMovie("map_point", "point"+i, i);/*note the variable being used for the depth*/
  2. this["point"+i]._x=new_x;
  3. this["point"+i]._y=new_y;


Básicamente, este [] medio que sea, dentro de la ecuación [] equivale a va a ser un movieclip, objeto, variable, etc .. nombre dentro del objeto que cuando se está procesando actualmente.

hay también,
_root [ "cadena" + variable]
_pare no [ "cadena" + variable]
que son el mismo trato, pero el camino que empieza a buscar lo que se hace referencia es diferente.
Strong with this one, the sudo is.
  • koivi
  • Novice
  • Novice
  • No Avatar
  • Registrado: Ago 13, 2004
  • Mensajes: 23
  • Loc: Minnesota
  • Status: Offline

Nota Agosto 23rd, 2004, 1:28 pm

Esto parece ser un poco más complicado de lo que pensé que sería - especialmente después de una semana de vacaciones...

Ahora tengo todo el código de código necesario en el lugar para leer datos XML y luego colocar un punto en el mapa con un símbolo de la biblioteca:

Código: [ Select ]
var myXml = new XML();
var base_url="http://www.example.com/";
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
 if (success) {
  this = this.childNodes[0];
  // be sure we're inside the dataset node
  for (i=0; i<this.childNodes.length; i++) {
   // OK, all the points should be at this level
   if (this.childNodes[i].nodeName == "point") {
    // point data is here, get coordinates and scale accordingly
    point_x = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_x;
    point_y = _root.baseMap._yscale/100 * this.childNodes[i].attributes.coord_y;

    // get the other point data
    point_name = this.childNodes[i].attributes.name;
    point_description = this.childNodes[i].attributes.description;
    point_contents = this.childNodes[i].firstChild.nodeValue;
    point_id = this.childNodes[i].attributes.id;
    point_url=base_url+"?point_id="+point_id;
    inst="point"+i;
    
    // create the map point instance & set properties
    attachMovie("map_point",inst,i);
    _root[inst]._x = point_x;
    _root[inst]._y = point_y;
   }
  }
 } else {
  trace("Error, data not loaded.");
 }
};
myXML.load(base_url + "point_data.php");
stop();
  1. var myXml = new XML();
  2. var base_url="http://www.example.com/";
  3. myXML.ignoreWhite = true;
  4. myXML.onLoad = function(success) {
  5.  if (success) {
  6.   this = this.childNodes[0];
  7.   // be sure we're inside the dataset node
  8.   for (i=0; i<this.childNodes.length; i++) {
  9.    // OK, all the points should be at this level
  10.    if (this.childNodes[i].nodeName == "point") {
  11.     // point data is here, get coordinates and scale accordingly
  12.     point_x = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_x;
  13.     point_y = _root.baseMap._yscale/100 * this.childNodes[i].attributes.coord_y;
  14.     // get the other point data
  15.     point_name = this.childNodes[i].attributes.name;
  16.     point_description = this.childNodes[i].attributes.description;
  17.     point_contents = this.childNodes[i].firstChild.nodeValue;
  18.     point_id = this.childNodes[i].attributes.id;
  19.     point_url=base_url+"?point_id="+point_id;
  20.     inst="point"+i;
  21.     
  22.     // create the map point instance & set properties
  23.     attachMovie("map_point",inst,i);
  24.     _root[inst]._x = point_x;
  25.     _root[inst]._y = point_y;
  26.    }
  27.   }
  28.  } else {
  29.   trace("Error, data not loaded.");
  30.  }
  31. };
  32. myXML.load(base_url + "point_data.php");
  33. stop();


Entonces quería abrir una URL cuando se hace clic en un botón, así que traté esto:
Código: [ Select ]
_root[inst].onRelease = function(){
 getUrl(point_url,"_blank");
}
  1. _root[inst].onRelease = function(){
  2.  getUrl(point_url,"_blank");
  3. }


Parecía que iba a trabajar hasta que me había añadido un segundo punto de datos. Ahora, cuando hago clic en un punto (uno de ellos), voy a la dirección URL de la primera. Otro problema que se preve que quiero ser capaz de colocar etiquetas de texto junto a los puntos en el mouse encima. Inicialmente pensé que yo podría simplemente crear un "sobre" el marco para el símbolo con un campo de texto dinámico y basta con modificar el texto. Sin embargo, no veo cómo podría conseguir que funcione, sobre todo porque los puntos se hacen juntos y la etiqueta tendría que ser mucho mayor que la actual "punto" que se coloca en el mapa.

La película hasta ahora se publica aquí (lo tiré en un servidor en el trabajo, por ahora):
http://waf.rangenet.com/test/test.swf

Su justo un mapa base con los datos XML se lee - nada bonito, y no la funcionalidad que funciona todavía.

¿Puede alguien ayudarme, o al menos me dirija a material de referencia para lo que necesito.

TIA!
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Agosto 23rd, 2004, 2:31 pm

Código: [ Select ]
getUrl(point_url,"_blank");

Desde point_url no se ha hecho como una variable que es local a ese punto que está utilizando la misma variable para cada punto. (la última dirección URL en el archivo XML). (en realidad todas sus variables son de esta manera, el trabajo _x & _y porque se utilizan antes de que se cambió de nuevo)

Conectando el primer punto, a continuación, hacer estas variables locales a ese punto se saltará muchos dolores de cabeza ya que usted será capaz de hacer referencia a ellos con "this.varName". Haciéndolos locales a los puntos le permitirá tener el objeto XML borrarse a sí mismo después de todas las demás acciones se llevan a cabo también.

Código: [ Select ]
        var inst = "point"+i;
        _root.attachMovie("map_point",inst,i);
    _root[inst].x = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_x;
    _root[inst].y = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_y;

    // get the other point data
    _root[inst].name = this.childNodes[i].attributes.name;
    _root[inst].description = this.childNodes[i].attributes.description;
    _root[inst].contents = this.childNodes[i].firstChild.nodeValue;
    _root[inst].id = this.childNodes[i].attributes.id;
    _root[inst].__url=base_url+"?point_id="+_root[inst].id;
    
    // set properties from local variables
    
    _root[inst]._x = _root[inst].x;
    _root[inst]._y = _root[inst].y;
    _root[inst].onRelease = function(){
            getURL(this.__url,"_blank");
    }
  1.         var inst = "point"+i;
  2.         _root.attachMovie("map_point",inst,i);
  3.     _root[inst].x = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_x;
  4.     _root[inst].y = _root.baseMap._xscale/100 * this.childNodes[i].attributes.coord_y;
  5.     // get the other point data
  6.     _root[inst].name = this.childNodes[i].attributes.name;
  7.     _root[inst].description = this.childNodes[i].attributes.description;
  8.     _root[inst].contents = this.childNodes[i].firstChild.nodeValue;
  9.     _root[inst].id = this.childNodes[i].attributes.id;
  10.     _root[inst].__url=base_url+"?point_id="+_root[inst].id;
  11.     
  12.     // set properties from local variables
  13.     
  14.     _root[inst]._x = _root[inst].x;
  15.     _root[inst]._y = _root[inst].y;
  16.     _root[inst].onRelease = function(){
  17.             getURL(this.__url,"_blank");
  18.     }


Código: [ Select ]
_root[inst].onRelease = function(){
     getURL(this.__url,"_blank");
    }
  1. _root[inst].onRelease = function(){
  2.      getURL(this.__url,"_blank");
  3.     }

utilizando esto interior de la onRelease hace que la variable local a ese punto para ser utilizado desde = Function () ( nos ha introducido en el ámbito de aplicación de ese MovieClip.
Strong with this one, the sudo is.

Publicar Información

  • Total de mensajes en este tema: 7 mensajes
  • Usuarios navegando por este Foro: demonmaestro y 54 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC