Comunidad de diseño web y desarrollo en internet online

Problemas con posicionamiento de un MC en stageResize y enter_frame

Citar            
MensajeEscrito el 15 Mar 2011 10:12 pm
Bueno les comento basicamente estoy tratando de lograr el posicionamiento de un mc basicamente tiene un elemento texto, y en el siguiente frame el texto baja a digamos 40 pixeles, el codigo que uso es este:

// NO SCALE
stage.scaleMode=StageScaleMode.NO_SCALE;
// ALIGN TO TOP LEFT
stage.align=StageAlign.TOP_LEFT;

import flash.display.StageDisplayState;

stage.addEventListener(Event.RESIZE, onStageResize);
addEventListener(Event.ENTER_FRAME, onFrame);

function onStageResize (evt:Event):void {
mcbtn.x=stage.stageWidth/2-mcbtn.width/2;
mcbtn.y=stage.stageHeight/2-mcbtn.height/2;
}

function onFrame (evt:Event):void {
mcbtn.x=stage.stageWidth/2-mcbtn.width/2;
mcbtn.y=stage.stageHeight/2-mcbtn.height/2;
}

y esto es lo que controla el over y el out del "boton" que es el mc

mcbtn.addEventListener(MouseEvent.ROLL_OVER,over);
mcbtn.addEventListener(MouseEvent.ROLL_OUT,out);

function over (evt:MouseEvent):void {
evt.target.gotoAndStop("roll");
}

function out (evt:MouseEvent):void {
evt.target.gotoAndStop("unroll");
}

la cuestion es que cunado hago over el mc se vuelve LOCO literalmente y empeiza a msotrar arriba y abajo la razon creo entenderla, el mc tiene un tamaño determinado en el primer frame del MC y en el segundo tiene otro tamaño, asi que mi duda es como peudo lograr un posicionamiento eficaz de un MC usando la manera que uso para que me de resultado dejando no se un tamaño fijo del mc?, o no se Agradeceria su ayuda, un saludo!

Por dalladaniel

22 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 16 Mar 2011 02:01 am
Si tiene distintas areas en los estados entonces entra y sale constantemente rel roolOver al rollOut ... tu lo has dicho, hazlos del mismo tamaño, puedes usar un fondo transparente (alpha al 1%) en el que es mas pequeño para que el area sensible no cambie y no se vuelva loco tu MC

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 05:43 am
Hola solis, bueno te comento, probe con esa solucion y resulta que en algunos casos cunado hago cambio de frame, en ese mc, no reconoce el elemento que tiene el alpha lo cual me aprece REALEMNTE extraño :S sera que tiene algo que ver con esta funcion que se ejecuta al hacer cambio de frame?


function removeAllChildren():void {

var k:uint=MovieClip(parent).contenido.numChildren;

while (k --) {
MovieClip(parent).contenido.removeChildAt(k);
}
}

o no tiene nada que ver y el elemento se esta volviendo loco?

Por dalladaniel

22 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 17 Mar 2011 10:39 am
Debe tener que ver con superposición de elementos. Por ejemplo es probable que algiuna esté encima y capture el foco (disparando el rollOut), pero al ser removido lo devuelva, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 06:12 pm
Gracias jorge ahora si no es molestia te quisiera preguntar algo, tengo un mc que contiene la botonera donde esta contenido el codigo de navegacion, tengo un mc en el stage que controla todo el contenido y en el segundo frame tengo un contenido que carga un XML y arma una galeria, quisiera saber como puedo decirle a la botonera que vea si esta activa esa galeria y si lo esta haga un remoChild solo de esa galeria :S mira te muestro el codigo:

Código ActionScript :

var selectedSection:int; 

var botones:Dictionary = new Dictionary(); 
botones[informacion]   = 0; 
botones[galeria]    = 1; 
botones[ubicacion]   = 2; 
botones[contactenos] = 3; 
 
for (var boton:* in botones) { 
   DisplayObject(boton).addEventListener(MouseEvent.CLICK, onNavClick); 
}; 
 
function onNavClick(evt:MouseEvent):void { 
   selectedSection = botones[evt.target];  
   animateIn();
} 
// REMOVE ALL CHILDREN FROM THE MAIN CONTAINER

function removeAllChildren():void {

   var k:uint=MovieClip(parent).contenido.numChildren;

   while (k --) {
      MovieClip(parent).contenido.removeChildAt(k);
   }
}


function animateIn():void {

   // remove all children of the main container, clearing it 
   // for the next section
   removeAllChildren();

   // change the frame to the appropriate section
   MovieClip(parent).contenido.gotoAndStop(selectedSection+1);
   


}


y este es el codigo del XML que esta en el segundo frame de un mc llamado contenido en el stage.

Código ActionScript :

import fl.controls.ProgressBar;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;


var columns:Number;
var my_x:Number;
var my_y:Number;
var my_thumb_width:Number;
var my_thumb_height:Number;
var my_images:XMLList;
var my_total:Number;

var container_mc:MovieClip;
var preloaders_mc:MovieClip;
var full_mc:MovieClip;


var x_counter:Number = 0;
var y_counter:Number = 0;

var my_tweens:Array = [];
var container_mc_tween:Tween;
var blanco_tween:Tween;
var full_tween:Tween;

var fondoload:Loader = new Loader();
var cafe : MovieClip = new MovieClip();
fondoload.load(new URLRequest("333.jpg"));
/*
   cafe.graphics.beginFill(0x754C29); 
cafe.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); 
cafe.graphics.endFill();*/

cafe.alpha = 1;

var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("gallery.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
   var myXML:XML = new XML(e.target.data);

   columns = myXML.@COLUMNS;
   my_x = myXML.@XPOSITION;
   my_y = myXML.@YPOSITION;
   my_thumb_width = myXML.@WIDTH;
   my_thumb_height = myXML.@HEIGHT;
   my_images = myXML.IMAGE;
   my_total = my_images.length();

   createContainer();
   callThumbs();

   myXMLLoader.removeEventListener(Event.COMPLETE, processXML);
   myXMLLoader = null;
}

function createContainer():void {
   container_mc = new MovieClip();
   container_mc.x = my_x;
   container_mc.y = my_y;
   addChild(container_mc);
   container_mc.addEventListener(MouseEvent.CLICK, callFull);
   container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
   container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);
   container_mc.buttonMode = true;

   preloaders_mc = new MovieClip();
   preloaders_mc.x = container_mc.x;
   preloaders_mc.y = container_mc.y;
   addChild(preloaders_mc);
   
}

function callThumbs():void {
   for (var i:Number = 0; i < my_total; i++) {
   
      var thumb_url = my_images[i].@THUMB;

      var thumb_loader = new Loader();
      thumb_loader.load(new URLRequest(thumb_url));
      thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
      var myShadow:DropShadowFilter = new DropShadowFilter();
   myShadow.distance = 0;
   myShadow.color = 0xFFFFFF;
   myShadow.blurX = 20;
   myShadow.blurY = 20;
   myShadow.quality = 3;
   thumb_loader.filters = [myShadow];
      thumb_loader.name = i;

      thumb_loader.x = (my_thumb_width+60)*x_counter;
      thumb_loader.y = (my_thumb_height+35)*y_counter;

      if (x_counter+1 < columns) {
         x_counter++;
      } else {
         x_counter = 0;
         y_counter++;
      }
      var preloader_pb:ProgressBar = new ProgressBar();
      preloader_pb.source = thumb_loader.contentLoaderInfo;
      preloader_pb.x = thumb_loader.x;
      preloader_pb.y = thumb_loader.y;
      preloader_pb.width = my_thumb_width;
      preloader_pb.height = my_thumb_height;
      preloaders_mc.addChild(preloader_pb);

      preloader_pb.addEventListener(Event.COMPLETE, donePb);
   }
}

function thumbLoaded(e:Event):void {
   var my_thumb:Loader = Loader(e.target.loader);
   container_mc.addChild(my_thumb);
   my_tweens[Number(my_thumb.name)]=new Tween(my_thumb, "alpha", Strong.easeIn, 0,1,0.5, true);

   my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE, thumbLoaded);
}

function callFull(e:MouseEvent):void {
   var full_loader:Loader = new Loader();
   var full_url = my_images[e.target.name].@FULL;
   full_loader.load(new URLRequest(full_url));
   full_loader.contentLoaderInfo.addEventListener(Event.INIT, fullLoaded);

   var full_pb:ProgressBar = new ProgressBar();
   full_pb.source = full_loader.contentLoaderInfo;
   full_pb.x = (stage.stageWidth - full_pb.width)/2;
   full_pb.y = (stage.stageHeight - full_pb.height)/2;
   preloaders_mc.addChild(full_pb);

   full_pb.addEventListener(Event.COMPLETE, donePb);

   container_mc.removeEventListener(MouseEvent.CLICK, callFull);
   container_mc.buttonMode = false;
   container_mc.removeEventListener(MouseEvent.MOUSE_OVER, onOver);
   container_mc.removeEventListener(MouseEvent.MOUSE_OUT, onOut);
   container_mc_tween = new Tween(container_mc, "alpha", Strong.easeIn, 1,0.5,0.5, true);
}
function fullLoaded(e:Event):void {
   full_mc = new MovieClip();
   full_mc.buttonMode = true;
   addChild(full_mc);
   full_mc.addChild(cafe);
   cafe.addChild(fondoload);
   var my_loader:Loader = Loader(e.target.loader);
   full_mc.addChild(my_loader);
   full_tween = new Tween(my_loader, "alpha", Strong.easeIn, 0,1,0.5,    true);
   my_loader.x = (stage.stageWidth - my_loader.width)/2;
   my_loader.y = (stage.stageHeight - my_loader.height)/2;
   my_loader.addEventListener(MouseEvent.CLICK,removeFull);
   my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fullLoaded);
   var myShadow:DropShadowFilter = new DropShadowFilter();
   myShadow.distance = 0;
   myShadow.color = 0xFFFFFF;
   myShadow.blurX = 60;
   myShadow.blurY = 60;
   myShadow.quality = 3;
   my_loader.filters = [myShadow];
}

function removeFull(e:MouseEvent):void {
   
   var my_loader:Loader = Loader (e.currentTarget);
   full_tween = new Tween(my_loader, "alpha", Strong.easeOut, 1,0,0.5, true);
   full_tween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);

   container_mc_tween = new Tween(container_mc, "alpha", Strong.easeOut, 0.5,1,0.5, true);
}

function donePb(e:Event):void {
   var my_pb:ProgressBar = ProgressBar(e.target);
   preloaders_mc.removeChild(my_pb);
   my_pb.removeEventListener(Event.COMPLETE, donePb);
}

function tweenFinished(e:TweenEvent):void {
   var my_loader:Loader = Loader (e.target.obj);
   my_loader.unload();
   full_mc.removeChild(cafe);
   full_mc.removeChild(my_loader);// This line was removeChid(my_loader), just add full_mc before it.
   removeChild(full_mc);
   full_mc = null;

   container_mc.addEventListener(MouseEvent.CLICK, callFull);
   container_mc.buttonMode = true;
   container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
   container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);

   var my_tween:Tween = Tween(e.target);
   my_tween.removeEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
}
function onOver(e:MouseEvent):void {
   var my_thumb:Loader = Loader(e.target);
   my_thumb.alpha = 0.5;
}
function onOut(e:MouseEvent):void {
   var my_thumb:Loader = Loader (e.target);
   my_thumb.alpha = 1;
}

Por dalladaniel

22 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 17 Mar 2011 06:41 pm
Buff, vaya cantidad de codigo. Remuévela siempre dentro de un try/catch, si no existe no pasará nada

Código ActionScript :

try{
   removeChild(contenedordelagaleria)
} catch(e:Error){
   trace("No había galería")
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 07:50 pm
Hola jorge me da este error al poner el codigo q me dijiste

Símbolo 'navegacion', Capa 'Capa 2', Fotograma 1, Línea 24 1120: Acceso a una propiedad container_mc no definida.

esta es la funcion con lo q me diste

function removeAllChildren():void {

try{
removeChild(container_mc)
} catch(e:Error){
trace("No había galería")
}
}

y creo que el error es porque esta llamando algo que aun no existe :S, y que solo existe cuando hago click en un boton de la navegacion para que exista :S esa es mi duda como puedo lograrlo :S

Por dalladaniel

22 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 18 Mar 2011 01:37 am
Para evitarte error en tiempo de compilación usa notación de array

try{
removeChild(this["container_mc"])
}

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2011 01:50 am
Hola nuevamente jorge probe tu propuesta de igual manera no me esta funcionando, al parecer, no se si lo que voy a decir tenga algo de razon pero peude ser que esta buscando un string "" y no lo encunetrta en ningun lado?, osea la navegacion funciona pero nunca elimina el container_mc.

estba intentando con otra opcion poniendo el llamador del XML, la navegacion y todo en un mismo fotograma y generando una boleana que identifique cunado se activa la galeria, y al estar en true, elimine la galeria y funciona, peor algo sucede que no entiendo...
al removerlo, y volverlo a agregar, lo agrega justo debajo de donde lo cargo la primera vez, y suigue sucediendo cada vez...

Este es el codigo que estoy utilizando, sera que si estoy removiendo el contenido de una manera efectiva o estoy dejando algun tipo de contenido atras?

Código ActionScript :

function animateIn():void {

   // remove all children of the main container, clearing it 
   // for the next section
   if (galeriaup == true) {
   removeChild (container_mc);
   container_mc = null;
   galeriaup=false;
   contenido.gotoAndStop(selectedSection+1);
   
   }
      else {
         // change the frame to the appropriate section
   contenido.gotoAndStop(selectedSection+1);
      }
}

Por dalladaniel

22 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 18 Mar 2011 03:25 am
La posición x e y del container vienen en el XML, así que no debería variar, de todas formas el code de la galería es muy largo y quizás tenga algo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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