Comunidad de diseño web y desarrollo en internet online

cargar un swf la pulsar un boton creado con SimpleButton

Citar            
MensajeEscrito el 05 Dic 2010 06:06 pm
Hola Buenas tengo un problema estoy como loco intentado hacer un trabajillo con AS3. Necesito insertar un boton en una pelicula swf pero con AS3. Creo que ya lo he conseguido con la función SimpleButton. Pero necesito que cuando pulse ese boton se me cargue un swf externo, y es aki cuando me pierdo. consigo que salga el boton, pero no hace nada al pulsarle.

esta es mi case principal

Código ActionScript :

package {
   import br.com.stimuli.loading.BulkLoader;
   import br.com.stimuli.loading.BulkProgressEvent;
   
   import com.controls.MenuImages;
   import com.controls.VideoPlayback;
   import com.events.MouseMenu;
   import com.site.elements.Camera2D;
   
   import flash.display.GradientType;
   import flash.display.Sprite;
   import flash.display.StageAlign;
   import flash.display.StageScaleMode;
   import flash.events.Event;
   import flash.geom.Matrix;
   import flash.events.MouseEvent;
   import flash.display.Loader;
   import flash.net.URLRequest;
   

   import flash.display.SimpleButton;

   
   import gs.OverwriteManager;
   import gs.TweenMax;
   
   import botonSimple
   
   
   [SWF(backgroundColor="0x000000", frameRate="25")]
   
   public class index extends Sprite
   {
      private var _width:Number;
      private var _height:Number;
      private var _xml:XML;
      
      private var background:Sprite;
      private var container:Sprite;
      private var containerCB:Sprite;
      private   var cargador = new Loader();
      
      
      
      
         
      
      
      private var camera:Camera2D;
      private var video:VideoPlayback;
      
      public function index()
      {
         this._width = 800;
         this._height = 600;
         
         if (stage != null)
            addedToStageHandler()
         else
            addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler, false, 0, true);
      }
             
      
      
      
      protected function addedToStageHandler(evt:Event=null):void 
      {
         if (evt)
            removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
         
         OverwriteManager.init(1);
         
         
         
         
         stage.scaleMode = StageScaleMode.NO_SCALE;
         stage.align = StageAlign.TOP_LEFT;
         
         background = new Sprite();
         container = new Sprite();
         containerCB = new Sprite();
         
         var matrix:Matrix = new Matrix();
         matrix.createGradientBox(1.5*_width, 1.3*_height, 0, -0.2*_width, -0.1*_height);
         var degradado:Sprite = new Sprite();
         degradado.graphics.beginGradientFill(GradientType.RADIAL, [0xAAAAAA, 0x000000, 0x030303], [1.0, 1.0, 1.0], [0, 220, 255], matrix);
         degradado.graphics.drawRect(0, 0, _width, _height);
         background.addChild(degradado);
         
         var mesa:Sprite = new Sprite()
         matrix.createGradientBox(1.30*_width, 0.5*_height, 0, -0.20*_width, -0.25*_height);
         mesa.graphics.beginGradientFill(GradientType.RADIAL, [0x666666, 0x030303], [1.0, 1.0], [0, 255], matrix);
         mesa.y = 0.6*_height;
         mesa.graphics.drawRect(-_width, 0, 3*_width, _height);
         container.addChild(mesa);
         update();
         
         this.addChild(background);
         this.addChild(container);
          this.addChild(containerCB);
         
         
         var boton1:botonSimple = new botonSimple(this,5,100);
         
         //boton1.addEventListener(MouseEvent.CLICK, accion);
         ///
         boton1.downState = cargador.load (new URLRequest("boton_medicina.swf"));
          
         
         
         
         
         
         
         
         stage.addEventListener(Event.RESIZE, onResizeHandler);
         var loader:BulkLoader = new BulkLoader("loader");
         
         
         //boton1.addEventListener(MouseEvent.CLICK, ir);

         
//         addChild(cargador); 
         
//         boton1.addEventListener(MouseEvent.CLICK, ir);

         

         
         loader.add(getUrl("imagenes/camara1.png"), {id:"camaraHD"});
         loader.add(getUrl("xml/galery.xml"), {id:"galeryXml"});
         
         loader.addEventListener(BulkProgressEvent.PROGRESS, onProgressLoader, false, 0, true);
         loader.addEventListener(BulkProgressEvent.COMPLETE, onCompleteLoader, false, 0, true);
         loader.start();
         
      }
      
         //function accion(e:MouseEvent):void
         //{
             //cargador.load(new URLRequest("boton_medicina.swf"));
             //cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, fCargar);
         //}
 
         //function fCargar(e:Event):void
         //{
             //stage.addChild(cargador);
         //}
      
      
      
      
      
         
      private function onProgressLoader(evt:BulkProgressEvent):void {
         var ratio:Number = evt.weightPercent;
      }
      
      private function onCompleteLoader(evt:BulkProgressEvent):void {
         var loader:BulkLoader = BulkLoader.getLoader("loader");
         loader.removeEventListener(BulkProgressEvent.PROGRESS, onProgressLoader);
         loader.removeEventListener(BulkProgressEvent.COMPLETE, onCompleteLoader);
         _xml = loader.getXML("galeryXml", true);
         
         camera = new Camera2D(loader.getBitmapData("camaraHD", true), 700);
         camera.x = 0.75*_width;
         camera.y = 0.65*_height;
         container.addChild(camera);
         
         var relPosX:Number = Number([email protected]());
         var relPosY:Number = Number([email protected]());
         
         video = new VideoPlayback();
         video.x = relPosX*_width;
         video.y = relPosY*_height;
         container.addChild(video);
         
         var menu:MenuImages = new MenuImages(40, 0.5, _xml);
         containerCB.addChild(menu);
         menu.addEventListener(MouseMenu.MOUSE_UP_MENU, onSelectMenu);
         
         TweenMax.delayedCall(2.0, function():void{menu.show = true;update()});
         camera.reset(-_width, - 1.5*_height, -30);
         camera.show(2);
         
      }
      
      private function onSelectMenu(evt:MouseMenu):void {
         if (evt.order == -1) {
            video.stop();
         } else {
            video.play(getUrl(_xml.item[evt.order].video.toString()));
         }
      }
      
      protected function onResizeHandler(evt:Event):void {
         update();
      }
      
      protected function update():void {
          background.width = stage.stageWidth;
         background.height = stage.stageHeight;
         var _x:Number = 0.5*(stage.stageWidth - _width);
         var _y:Number = 0.5*(stage.stageHeight - _height);
         (_x<0)?container.x = 0:container.x=_x;
         (_y<0)?container.y = 0:container.y=_y;
         
         containerCB.x = 0.5*stage.stageWidth;
         containerCB.y = (stage.stageHeight<_height)?_height:stage.stageHeight;
      }
      
      private function getUrl(url:String):String {
         if (!(url.indexOf(":") > -1 || url.indexOf("/") == 0 || url.indexOf("\\") == 0)) {
            var rootURL:String;
            if (root) {
               rootURL = root.loaderInfo.url;
               if (rootURL) {
                  var lastIndex: int= Math.max(rootURL.lastIndexOf("\\"), rootURL.lastIndexOf("/"));
                  if (lastIndex != -1) {
                     url = rootURL.substr(0, lastIndex + 1) + url;
                  }
               }
            }
         }
         return url;
      }
      
   }
}


y esta es mi clase del boton:

package
{
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.display.Loader;
   import flash.net.URLRequest;


//----------------------------
   public class botonSimple extends Sprite {
      private var ruta:Sprite
      private var boton:SimpleButton = new SimpleButton;
     //private var cargador = new Loader();
     
     
     
     
     
     
     
     
     
     
      //----------------------------
      public function botonSimple(queRuta,queX,queY) {
         ruta = queRuta
         boton.upState = creaSprite(3,0x000000,0xFF9900,100,30);
         boton.overState = creaSprite(3,0x000000,0xFFCC00,100,30);
//         boton.downState = creaSprite(3,0x000000,0xFFFFFF,100,30);
      // boton.downState = ir(event:MouseEvent); 
       //boton.downState = cargador.load (new URLRequest("boton_medicina.swf"));
         boton.hitTestState = boton.upState;
         boton.useHandCursor = true;
         boton.x = queX         
         boton.y = queY
         ruta.addChild(boton);
       //ruta.addChild(cargador);
       
      // ruta.addChild(cargador);
      }
     //function ir(event:MouseEvent):void{
              //this.addChild(cargador);
            //btn1.loadMovie("seccionMedicina.swf");
            //cargador.load(new URLRequest("boton_medicina.swf"));
         //}
   //boton1.addEventListener(MouseEvent.CLICK, ir);
     
      //----------------------------
      private function creaSprite(lin_grosor, lin_color, relleno_color, ancho, alto):Sprite {
         var sprite:Sprite = new Sprite();
         sprite.graphics.lineStyle(lin_grosor, lin_color);
         sprite.graphics.beginFill(relleno_color);
         sprite.graphics.drawRect(0, 0, ancho, alto);
         return sprite;
      }
   }
}


cualquier idea, se lo agradeceria, estooy como locooo. muchas graciass

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 06 Dic 2010 05:02 am
No leeré todo ese código y DUDO mucho que alguien más lo haga. Aislá solo la parte que da el conflicto si quieres ayuda.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome
Citar            
MensajeEscrito el 06 Dic 2010 09:24 am
Lo siento Hernan soy nuevo en esto. a ver: tengo definido en una clase mi boton con la biblioteca simpleButton y segun la siguiente funcion:

Código ActionScript :

public function botonSimple(queRuta,queX,queY) {
         ruta = queRuta
         boton.upState = creaSprite(3,0x000000,0xFF9900,100,30);
         boton.overState = creaSprite(3,0x000000,0xFFCC00,100,30);
         boton.downState = creaSprite(3,0x000000,0xFFFFFF,100,30);      
         boton.hitTestState = boton.upState;
         boton.useHandCursor = true;
         boton.x = queX         
         boton.y = queY
         ruta.addChild(boton);       
      }


Había modificado la parte de "boton.downState = cargador.load (new URLRequest("animacion.swf"));"
incluyendole esto último para que en vez de crearme un sprite, me cargara en un cargador, previamente definido "animacion.swf". yhabia incluido en esta funcion tambien "ruta.addChild(cargador);".

El cargador lo he definido en la clase principal de la forma "private var cargador = new Loader();" Y he el boton lo he creado: "var boton1:botonSimple = new botonSimple(this,5,100);"

Mi problema es que o no hace nada al pulsar el boton o directamente se carga sin pulsar el boton ni nada ( esto ultimo pasa si incluyo, como he dicho, el "ruta.addChild(cargador);" en la función botonSimple.

Necesito crear este botón en la pelicula principal sin diseñar nada, es decir hacerlo todo por código, para asi modificar lo menos posible la pelicula principal que ya tengo.


Muchas gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 06 Dic 2010 02:58 pm
¿Y dónde está el llamador (Listener) del botón?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

chrome

 

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