¿Quieres registrarte?

Cómo abrir una ventana PopUp en ActionScript 3

Por: eldervaz
26 de Junio del 2009
7353 de clabLevel
Otros artículos de eldervaz
6,313 visitas

Muchos de nosotros, aveces, nos vemos obligados de abrir un popup desde Flash y para eso utilizamos ExternalInterface que ya vimos en un tutorial aquí en Cristalab. Sin embargo, para algunas personas no familiarizadas con el código, se les hace un mundo cuando comparan esa forma con el clásico método getURL de ActionScript 2.0. De hecho zguillez hizo un tip en AS2.

Para eso hice una pequeña clase que nos ayudará a resolver este dilema utilizando navigateToURL, pero déjenme insistir en utilizar ExternalInterface.

Para eso creo mis variables por default, donde declaro la url a abrir, el ancho y alto, el título de la ventana, si será resize y en que ventana abrirá

Código :

private var _url:String = "http://www.cristalab.com";
private var _width:Number= 400;
private var _height:Number= 300;
private var _title:String = "title";
private var _resize:String = "yes";
private var _window:String = "_blank";


Ahora crearé un método que llamará a un URLRequest, donde definiremos el javascript que abrirá el popup

Código :

public function openWindow(newUrl:String = null):void{
   if(newUrl)
      this.url = newUrl;
   var _urlRequest:URLRequest=new URLRequest();
   _urlRequest.url="javascript:window.open('"+url+"','"+title+"','width="+width+",height="+height+", resizable="+resize+"');newWindow.focus(); void(0);";
   navigateToURL(_urlRequest,_window);
}


Aquí el código completo de la clase:

Código :

package com.cristalab.utils
{
   import flash.net.URLRequest;
   import flash.net.navigateToURL;
   
   public class PopUp
   {
      
      private var _url:String = "http://www.cristalab.com";
      private var _width:Number= 400;
      private var _height:Number= 300;
      private var _title:String = "title";
      private var _resize:String = "yes";
      private var _window:String = "_blank";
      
      public function PopUp()
      {
      }
      
      public function openWindow(newUrl:String = null):void{
         if(newUrl)
            this.url = newUrl;
         var _urlRequest:URLRequest=new URLRequest();
         _urlRequest.url="javascript:window.open('"+url+"','"+title+"','width="+width+",height="+height+", resizable="+resize+"');newWindow.focus(); void(0);";
         navigateToURL(_urlRequest,_window);
      }


      public function set url(val:String):void
      {
         _url = val;
      }

      public function get url():String
      {
         return _url;
      }

      public function set width(val:Number):void
      {
         _width = val;
      }

      public function get width():Number
      {
         return _width;
      }

      public function set height(val:Number):void
      {
         _height = val;
      }

      public function get height():Number
      {
         return _height;
      }

      public function set title(val:String):void
      {
         _title = val;
      }

      public function get title():String
      {
         return _title;
      }

      public function set resize(val:String):void
      {
         _resize = val;
      }

      public function get resize():String
      {
         return _resize;
      }

      public function set window(val:String):void
      {
         _window = val;
      }

      public function get window():String
      {
         return _window;
      }
   }
}


Para utilizar esta clase, hice un ejemplo en un FLA simple:

Código :

import com.cristalab.utils.PopUp;

var t:PopUp = new PopUp();


btn1.addEventListener(MouseEvent.CLICK, popUpNormal);
btn2.addEventListener(MouseEvent.CLICK, popUpEditado);

function popUpNormal(e:MouseEvent):void {
   var ir:String;
   ir="http://www.cristalab.com/tutoriales/";
   t.openWindow(ir);
}

function popUpEditado(e:MouseEvent):void {
   t.url="http://www.google.com";
   t.title="Estamos en Google";
   t.width=640;
   t.height=480;
   t.resize="yes";
   t.window="_self";
   t.openWindow();
}


El método popUpNormal, abre un popup con los valores por default de la clase.

El método popUpEditado, permite editar los parámetros a tu gusto ^^

Espero les sirva.



Enviar a twitter Enviar a facebook


También te interesa


Etiquetas javascript actionscript_3

Comentarios | Enviar un comentario
Ehmm, yo le voy a los popup 2.0, hechas capas flotantes (DIV), así evito el molesto mensaje: "Se bloquearon las ventanas emergentes".
Por: Otaku RzO
Aunque si fuera necesario el popup para ver el sitio o algo a pantalla completa, ahí si lo aplicaría.
Por: Otaku RzO
Emmm, retro e interesante. Supongo es para actualizar el anterior, pero estoy muy de acuerdo con Otaku; lo in es usar los divs emergentes. Gracias por el tip,
:)
Por: M@U
Buen tip Elders.. Aunque los popups esten mal vistos y sean poco recomendables, siempre es bueno saber hacerlos..
Por: Zguillez
de hecho q si!!! todos odiamos los popUp U_U pero me tocó abrir uno en un juego que actualizamos, la versión AS2 tenia el bendito popUp.
Por: eldervaz
Ya que usamos AS3, es una buena práctica de optimización, usar int en vez de number.

Saludos.
Guti (http://guti.bitacoras.com).
Por: Guti-blog
Te iva a preguntar porque utilizan funciones para pasarle valores a las variables cuando se trata de una clase tan simple.. ¿cual es la ventaja y la desventaja?
osea veo que colocaste todas las variables en private!! cuando en realidad es mas corto y simple poniéndolas en Public
(pregunto para saber) entiendo que "es la manera correcta" pero tiene alguna ventaja para clases simples?..


Código :

package com.cristalab.utils 
{ 
   import flash.net.URLRequest; 
   import flash.net.navigateToURL; 
    
   public class PopUp 
   { 
       
      public var _url:String = "http://www.cristalab.com"; 
      public var _width:Number= 400; 
      public var _height:Number= 300; 
      public var _title:String = "title"; 
      public var _resize:String = "yes"; 
      public var _window:String = "_blank"; 
       
      public function PopUp(){ 
      } 
       
      public function openWindow(newUrl:String = null):void{ 
         if(newUrl) 
            this.url = newUrl; 
         var _urlRequest:URLRequest=new URLRequest(); 
         _urlRequest.url="javascript:window.open('"+url+"','"+title+"','width="+width+",height="+height+", resizable="+resize+"');newWindow.focus(); void(0);"; 
         navigateToURL(_urlRequest,_window); 
      } 
}


y la implementación la usas como si estuvieran en public
(Curiosamente y en eso no entiendo, te debería de tirar error a vos que las pusiste en private)

Código :

var t:PopUp = new PopUp(); 
function popUpEditado(e:MouseEvent):void { 
   t.url="http://www.google.com"; 
   t.title="Estamos en Google"; 
   t.width=640; 
   t.height=480; 
   t.resize="yes"; 
   t.window="_self"; 
   t.openWindow(); 
} 


Muy bueno el ejemplo igualmente.

Yo también tengo una clase para lo mismo :P
Clase Phoxer.Navigator
Por: phoxer
@Guti: El uso de Number es simple, puede darse el caso que necesites un stage por ejemplo de ancho 400.80. es simplemente por eso.

Pero si estas 100% seguro que usarás entero, iría int. Y aquí lo dejo por si las dudas:

int: 24-26ms
Number: 31-36ms
uint: 105-225ms

@phoxer: Simple costumbre y buenas prácticas. solo eso. Y no tira error porque estoy usando: set url(val:String)

^^
Por: eldervaz

eldervaz :

@phoxer: Simple costumbre y buenas prácticas. solo eso. Y no tira error porque estoy usando: set url(val:String)


haaa copado, no sabia que también se podía de esa forma, yo casi siempre cuando son clases simples uso variables publicas, por eso mi pregunta
gracias..
Por: phoxer
este es un plugin para jquery facil de usar jQPOOOP y carga por ajax y texto simple que enconte el otro dia
http://www.dieroboter.com/jQPOOOP
or
http://code.google.com/p/pluginjquery
Por: nicoluca

nico-blog :

este es un plugin para jquery facil de usar jQPOOOP y carga por ajax y texto simple que enconte el otro dia
http://www.dieroboter.com/jQPOOOP
or
http://code.google.com/p/pluginjquery

Cómo abrir una ventana PopUp en ActionScript 3
Por: phoxer
No funciona en el Explorer y todo mundo usa el explorer asi no tendras por ahi un PopUp que hayas creado que si funcione en la basura que es el Explorer de Microsoft??
Por: Alvaro Daniel-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.