Comunidad de diseño web y desarrollo en internet online

this._parent.destroyObject( this._name ) No borra mi objeto

Citar            
MensajeEscrito el 30 Sep 2008 01:03 am
Hola a todos

Estoy haciendo un sistema, bla bla bla, el problema esta en que hice mi propio componente de ventana, en vez de usar el componente window de flash 8, ok el punto es ke entre todos los componentes que estoy haciendo, pues a este no le funciona mi sentecia destrucotra this._parent.destroyObject( this._name ), no hace que deje de existir mi ventana, ahy sigue, sentencia que me funciona con otros componentes.

Especificaciones:

"manejador" es un componente que crea las ventanas y se encarga de cerrarlas.
"ventana" es un componente que puede contener un MovieClip centrarlo, etc, etc.
"cajaMensajes" es un componente que despliega mensajes y da las opciones aceptar cancelar

manejador crea a ventana y ventana a su vez crea cajaMensajes dentro de si mismo, manejador agrega un listener a cajaMensajes en el vento click para ejecutar la sentencia destructora de la ventana que contiene esa cajaMensajes.

Esta es la sentencia dentro de la ventana que la destuye

Código :

public function destroy( Void ):Void
{
   _parent.destroyObject( this._name );
}

Aqui adiero el listener en el manejador

Código :

auxVentana.addContentEventListener("click", Delegate.create(this, this.clickVentanaAlerta));

esta es la funcion que dispara capta evento

Código :

private function clickVentanaAlerta( evento:Object ):Void
{
   var vntn:Ventana = evento.target;
   vntn.destroy();
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7
Citar            
MensajeEscrito el 30 Sep 2008 09:11 am
Hola a todos, bueno, porbe muchas cosas cosas y nada funciono del todo, incluso modifique unas lineas del mx.core.UIObject pero nada, no se porque pasa esto pero al parecer la pista esta en los niveles de profundidad puesto que yo no utilizo la clase DepthManager algo debe salir mal, en fin, resolvi el problema eliminando uno a uno los componentes y movieclips que conforman mi Ventana quedando una funcion asi:

public function destroy( Void ):Void
{
clearInterval( this.intervalo );
//SOMBRA
this.filters = [];
//FONDO TITULO 1
this.destroyObject( this.titulo_mc._name );
//SOLAPA 2
this.destroyObject( this.solapa_mc._name );
//PESTANIA 3
this.destroyObject( this.pestania_mc._name );
//TEXTO TITULO 4
this.titulo_txt.removeTextField();
//CERRAR 5
this.destroyObject( this.close_mc._name );
//MASCARA 6
this.mascara_mc.removeMovieClip();
//CONTENIDO 7
this.destroyObject( this.contenido_mc._name );
this._parent.destroyObject( this._name );
}

ps. Espero a alguien le pueda servir esto, ciao!

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7
Citar            
MensajeEscrito el 30 Sep 2008 05:48 pm
pues si, el problema se encontraba en la profundidad, mi componente ventana se crea dentro de un movieclip en el nivel proporcionado por su funcion getNextHighestDepth() para fines de prueba ese movie clip era el _root, y bueno cuando se crea una instancia de cualquier componente, estos utilizan la clase mx.managers.SystemManager atraves de la clase mx.managers.FocusManager que a su vez utiliza la clase mx.managers.DepthManager, clase que crea una instancia en un nivel reservado, el nivel 1048575, por tanto, la funcion getNextHighestDepth() del _root, simpre va a devolver un nivel mas alto que la instancia reservada, por tal motivo, las funciones destroyObject y removeMovieClip no funcionan en niveles mayores a 1048575, porque? pues la verdad no tengo idea, pero bueno, para calcular un nivel mas bajo en el root hice una funcion asi:

private function getNextDepth( Void ):Number
{
var i:Number = 0;
for( ; i < _root.getNextHighestDepth(); i++)
{
if( _root.getInstanceAtDepth( i ) == undefined )
{
break;
}
}
return i
}

Esto me garantiza obtener nivles en el root a aprtir del 0, y tambien hace mas incompatible mi componente con los de flash que utilizan el DepthManager, pero como me urge terminar este proyecto pues asi lo voy a dejar, en lo futuro aprendere a usar esa clase para manejar los depth de mis componentes y a lo mejor publico un tutorial, ciao!

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

msie7
Citar            
MensajeEscrito el 02 Jun 2010 02:48 pm
Hola yo tengo una duda estoy haciendo una presentación para la empresa donde trabajo, con un código similar de un template que compré, son unos puntos (dots) que aparecen por coordenadas mediante un xml, el asunto es que los dost aparecen por sobre todo el movieclip, y debido a mis escasos conocimientos de utilización de niveles no he podido quitarle esa propiedad, sé que tiene que ver con la propiedad getnextDepth que la forma pero no se como hacer para pasar estos dots a un nivel más bajo para poder poner un swf externo que qiero cargar por encima, este es el código, desde donde llama el swf externo que quiero que quede encima, hasta la llamada del array que genera los dots que quiero queden abajo del swf externo, si alguien puede ayudarme con esto, mil gracias.

Código :

// Create empty movie clip for external SWF. 
this.createEmptyMovieClip("temp_mc", 1);
this.temp_mc.createEmptyMovieClip("content_mc", 1);
this.temp_mc.content_mc._lockroot = true;
// Create Spot List Array
var spot_list:Array = [];
var external_swf_file:String = null;
// add spot over sound effect
over_snd = new Sound(this);
over_snd.attachSound("over");
// Create Spot XML object 
var spot_list_xml:XML = new XML();
spot_list_xml.ignoreWhite = true;
// When load XML data call this function
spot_list_xml.onLoad = function(load_status:Boolean):Void  {
   var nodes:Array = this.firstChild.childNodes;
   // Get Nodes Length
   spot_list_length = nodes.length;
   external_swf_width = Number(nodes[0].attributes.external_swf_width);
   external_swf_height = Number(nodes[0].attributes.external_swf_height);
   starting_swf_file_path = String(nodes[0].attributes.starting_swf_file_path);
   create_mask(external_swf_width, external_swf_height);
   // read all XML data  
   for (var i = 1; i<spot_list_length; i++) {
      // add all spot information to spotlist array 
      spot_list.push({location_name:nodes[i].attributes.location_name, x:nodes[i].attributes.x, y:nodes[i].attributes.y, dot_normal_color:nodes[i].attributes.dot_normal_color, dot_rollover_color:nodes[i].attributes.dot_rollover_color, url:nodes[i].attributes.url, url_target:nodes[i].attributes.url_target, swf:nodes[i].attributes.swf});
   }
   // call duplicate spot function 
   create_spot_list();
   external_swf_file_load(starting_swf_file_path);
};
// load xml file 
spot_list_xml.load("xml/spots.xml");
// Define duplicate spot function  
create_spot_list = function () {
   for (i=0; i<spot_list_length-1; i++) {
      // attach spot to map from libray 
      var spot = this.attachMovie("spot_mc", "spot_mc"+i, this.getNextHighestDepth());
      // Define Spot Location Name 
      spot.location_name = spot_list[i].location_name;
      // Placed each spot X and Y coordinate on the map 
      spot._x = Number(spot_list[i].x);
      spot._y = Number(spot_list[i].y);
      spot.dot_normal_color = Number(spot_list[i].dot_normal_color);
      spot.dot_rollover_color = Number(spot_list[i].dot_rollover_color);
      // Define Spot URL data
      spot.url = spot_list[i].url;
      spot.url_target = String(spot_list[i].url_target);
      // Define External SWF file path 
      spot.swf_file = spot_list[i].swf;
   }
};



Saludos.

Por Monlo

13 de clabLevel



 

msie8

 

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