Comunidad de diseño web y desarrollo en internet online

ayudarme a descifrar este codigo

Citar            
MensajeEscrito el 21 Abr 2005 10:53 pm
Bueno me he bajado un script de una galeria fotografica, donde puede elejir mediante un combo diferentes galerias fotograficas, la he modificado para que se ajuste al diseño que me interesaba, y por si sola corre perfectamente, el problema viene cuando quiero incluirla en el resto de la web, tengo problemas con el codigo del combo, que se ve que no lo carga en el nivel que debe y no puedo seleccionar la galeria, a ver el codigo del combo es este:

Código :

function FComboBoxClass()
{
   _global._popUpLevel = (_global._popUpLevel==undefined) ? 20000 : _global._popUpLevel+1;
   
   // Testing for _root's existence?
   this.superHolder = _root.createEmptyMovieClip("superHolder" + _popUpLevel, _popUpLevel);
   var testContainer = this.superHolder.createEmptyMovieClip("testCont", 20000);
   var testBox = testContainer.attachMovie("FBoundingBoxSymbol", "boundingBox_mc", 0);
   
   if (testBox._name==undefined) {
      // _root doesn't exist. 
      this.superHolder.removeMovieClip();
      this.superHolder = this._parent.createEmptyMovieClip("superHolder" + _popUpLevel, _popUpLevel);
   } else {
      testContainer.removeMovieClip();
   }
   
   if (this.rowCount==undefined) {
      this.rowCount=8;
      this.editable = false;
   }

   this.itemSymbol = "FComboBoxItemSymbol";
   this.init();
   this.permaScrollBar = false;
   this.proxyBox_mc.gotoAndStop(1);
   this.width = this._width;
   this.height =this.proxyBox_mc._height*this._yscale/100;
   
   for (var i=0; i<this.labels.length; i++) {
      this.addItem(this.labels[i], this.data[i]);
   }
   this.lastSelected = 0;
   this.selectItem(0);
   this._xscale = this._yscale = 100;
   this.opened = false;
   this.setSize(this.width);
   this.highlightTop(false);
   if (this.changeHandler.length>0) {
      this.setChangeHandler(this.changeHandler);
   }
   this.onUnload = function()
   {
      this.superHolder.removeMovieClip();
   }

   this.setSelectedIndex(0, false);
   this.value = "";
   this.focusEnabled = true;
   this.changeFlag = false;
}

FComboBoxClass.prototype = new FScrollSelectListClass();

Object.registerClass("FComboBoxSymbol", FComboBoxClass);



// ::: PUBLIC METHODS


FComboBoxClass.prototype.modelChanged = function(eventObj)
{
   super.modelChanged(eventObj);
   var event = eventObj.event;   
   if (event=="addRows" || event=="deleteRows") {
      var diff = eventObj.lastRow - eventObj.firstRow + 1;
      var mode = (event=="addRows") ? 1 : -1;
      var len = this.getLength();
      var lenBefore = len-mode*diff;
      if (this.rowCount>lenBefore || this.rowCount>len) {
         this.invalidate("setSize");
      }
      if (this.getSelectedIndex()==undefined) {
         this.setSelectedIndex(0, false);
      }
   } else if (event=="updateAll") {
      this.invalidate("setSize");
   }
}

FComboBoxClass.prototype.removeAll = function()
{
   if (!this.enable) {
      return;
   }
   super.removeAll();
   if (this.editable) this.value="";
   this.invalidate("setSize");
}


FComboBoxClass.prototype.setSize = function(w)
{
   if (w==undefined || typeof(w)!="number" || w<=0 || !this.enable) {
      return;
   }
   this.proxyBox_mc._width = w;
   this.container_mc.removeMovieClip();
   this.measureItmHgt();
   
   this.container_mc = this.superHolder.createEmptyMovieClip("container", 3);
   
   this.container_mc.tabChildren = false;
   this.setPopUpLocation(this.container_mc);
   this.container_mc.attachMovie("FBoundingBoxSymbol", "boundingBox_mc", 0);
   this.boundingBox_mc = this.container_mc.boundingBox_mc;
   this.boundingBox_mc.component = this;
   this.registerSkinElement(this.boundingBox_mc.boundingBox, "background");
   this.proxyBox_mc._height = this.itmHgt;
   
   this.numDisplayed = Math.min(this.rowCount, this.getLength());
   if (this.numDisplayed<3) {
      this.numDisplayed = Math.min(3, this.getLength());
   }
   this.height = this.numDisplayed * (this.itmHgt-2) + 2;
   super.setSize(w, this.height);

   this.attachMovie("DownArrow", "downArrow", 10);
   this.downArrow._y = 0;
   this.downArrow._width = this.itmHgt;
   this.downArrow._height = this.itmHgt;
   this.downArrow._x = this.proxyBox_mc._width-this.downArrow._width;
   this.setEditable(this.editable);
   this.container_mc._visible = this.opened;
   this.highlightTop(false);
   
   this.fader = this.superHolder.attachMovie("FBoundingBoxSymbol", "faderX", 4);
   this.registerSkinElement(this.fader.boundingBox, "background");
   this.fader._width = this.width;
   this.fader._height = this.height;
   this.fader._visible = false;

}

FComboBoxClass.prototype.setDataProvider = function(dp)
{
   super.setDataProvider(dp);
   this.invalidate("setSize");
   this.setSelectedIndex(0);
}


FComboBoxClass.prototype.getValue = function()
{
   if (this.editable) {
      return this.fLabel_mc.getLabel();
   } else {
      return super.getValue();
   }
}

FComboBoxClass.prototype.getRowCount = function()
{
   return this.rowCount;
}

FComboBoxClass.prototype.setRowCount = function(count)
{
   this.rowCount = (this.getLength()>count) ? Math.max(count,3) : count;
   this.setSize(this.width);
   var len = this.getLength();
   if (len-this.getScrollPosition()<this.rowCount) {
      this.setScrollPosition(len-(Math.min(this.rowCount, len)));
      this.invalidate("updateControl");
   }
}

FComboBoxClass.prototype.setEditable = function(editableFlag)
{
   if (!this.enable) return;
   
   this.editable = editableFlag;
   if (!this.editable) {
      this.onPress = this.pressHandler;
      this.useHandCursor = false;
      this.trackAsMenu = true;
      this.attachMovie("FComboBoxItemSymbol", "fLabel_mc", 5, {controller:this, itemNum:-1});
      this.fLabel_mc.onRollOver = undefined;
      this.fLabel_mc.setSize(this.width-this.itmHgt+1, this.itmHgt);
      this.topLabel = this.getSelectedItem();
      this.fLabel_mc.drawItem(this.topLabel, false);
      this.highlightTop(false);
   } else {
      this.attachMovie("FLabelSymbol", "fLabel_mc", 5);      
      this.fLabel_txt = this.fLabel_mc.labelField;
      this.fLabel_txt.type = "input";
      this.fLabel_txt._x = 4;
      this.fLabel_txt.onSetFocus = this.onLabelFocus;
      this.fLabel_mc.setSize(this.width-this.itmHgt-3);
      delete this.onPress;
      this.fLabel_txt.onKillFocus = function()
      {
         this._parent._parent.myOnKillFocus();
      }
      this.fLabel_mc.setLabel(this.value);
      this.fLabel_txt.onChanged = function() {
            this._parent._parent.findInputText();
      }
      this.downArrow.onPress = this.buttonPressHandler;
      this.downArrow.useHandCursor = false;
      this.downArrow.trackAsMenu = true;
   }
}

FComboBoxClass.prototype.setEnabled = function(enabledFlag)
{
   enabledFlag = (enabledFlag == undefined || typeof(enabledFlag)!="boolean") ? true : enabledFlag;
   super.setEnabled(enabledFlag);
   this.registerSkinElement(this.boundingBox_mc.boundingBox, "background");
   this.proxyBox_mc.gotoAndStop( (this.enable) ? "enabled" : "disabled");
   this.downArrow.gotoAndStop( (this.enable) ? 1 : 3);
   if (this.editable) {
      this.fLabel_txt.type = (enabledFlag) ? "input" : "dynamic";
      this.fLabel_txt.selectable = enabledFlag;
   } else if (enabledFlag) {
      this.fLabel_mc.drawItem(this.topLabel, false);
      this.setSelectedIndex(this.getSelectedIndex(), false);
   }
   this.fLabel_mc.setEnabled(this.enable);
   this.fLabel_txt.onSetFocus = (enabledFlag) ? this.onLabelFocus : undefined;
}

FComboBoxClass.prototype.setSelectedIndex = function(index, flag)
{
   super.setSelectedIndex(index, flag);
   if (!this.editable) {
      this.topLabel = this.getSelectedItem();
      this.fLabel_mc.drawItem(this.topLabel, false);
   } else { 
      this.value = (flag!=undefined) ? "" : this.getSelectedItem().label;
      this.fLabel_mc.setLabel(this.value);
   }
   this.invalidate("updateControl");
}

FComboBoxClass.prototype.setValue = function(value)
{
   if (this.editable) {
      this.fLabel_mc.setLabel(value);
      this.value = value;
   }
}

// ::: PRIVATE METHODS


FComboBoxClass.prototype.pressHandler = function()
{
   this.focusRect.removeMovieClip();
   if (this.enable) {
      if (!this.opened) {
         this.onMouseUp = this.releaseHandler;
      } else {
         this.onMouseUp = undefined;
      }
      this.changeFlag = false;
      if (!this.focused) {
         this.pressFocus();
         this.clickFilter = (this.editable) ? false : true;
      }
      if (!this.clickFilter) {
         this.openOrClose(!this.opened);
      } else {
         this.clickFilter = false;
      }
   }
}

FComboBoxClass.prototype.clickHandler = function(itmNum) 
{
   if (!this.focused) {
      if (this.editable) {
         this.fLabel_txt.onKillFocus = undefined;
      }
      this.pressFocus();
   }
   super.clickHandler(itmNum);
   this.selectionHandler(itmNum);
   this.onMouseUp = this.releaseHandler;
}

FComboBoxClass.prototype.highlightTop = function(flag)
{
   if (!this.editable) {
      this.fLabel_mc.drawItem(this.topLabel, flag);
   }
}

FComboBoxClass.prototype.myOnSetFocus = function()
{
   super.myOnSetFocus();
   this.fLabel_mc.highlight_mc.gotoAndStop("enabled");
   this.highlightTop(true);
}


FComboBoxClass.prototype.drawFocusRect = function()
{
   this.drawRect(-2,-2, this.width+4, this._height+4);
}

FComboBoxClass.prototype.myOnKillFocus = function()
{   
   if (Selection.getFocus().indexOf("labelField")!=-1) return; // if the label is in focus, don't kill my focus!

   super.myOnKillFocus();
   delete this.fLabel_txt.onKeyDown;
   this.openOrClose(false);
   this.highlightTop(false);
}

FComboBoxClass.prototype.setPopUpLocation = function(mcRef)
{
   mcRef._x = this._x;
   var point = { x : this._x, y : this._y + this.proxyBox_mc._height};
   this._parent.localToGlobal(point);
   mcRef._parent.globalToLocal(point);
   mcRef._x = point.x;
   mcRef._y = point.y;
   if (this.height+mcRef._y>=Stage.height) {
      this.upward = true;
      mcRef._y = point.y-this.height - this.proxyBox_mc._height;
   } else {
      this.upward = false;
   }
}

FComboBoxClass.prototype.openOrClose = function(flag)
{
   if (this.getLength()==0) return;
   this.setPopUpLocation(this.container_mc);
   if (this.lastSelected!=-1 && (this.lastSelected<this.topDisplayed || this.lastSelected>this.topDisplayed+this.numDisplayed)) {
      super.moveSelBy(this.lastSelected-this.getSelectedIndex());
   }
   (flag) ? this.downArrow.gotoAndStop(2) : this.downArrow.gotoAndStop(1);   
   if (flag==this.opened) {
      return ;
   }
   
   this.highlightTop(!flag);
   this.fadeRate = this.styleTable.popUpFade.value;
   if (!flag || this.fadeRate==undefined || this.fadeRate==0) {
      this.opened = this.container_mc._visible = flag;
      return;
   }

   // code for fading in - depends on a prop called popUpFade. 
   
   this.setPopUpLocation(this.fader);

   this.time = 0;
   this.const = 85 / Math.sqrt(this.fadeRate);
   this.fader._alpha = 85;
   this.container_mc._visible = this.fader._visible = true;
   this.onEnterFrame = function()
   {
      this.fader._alpha = 100 - (this.const * Math.sqrt(++this.time) + 15);
       if (this.time>=this.fadeRate) {
         this.fader._visible = false;
         delete this.onEnterFrame;
         this.opened = true;
      }
   }

}


FComboBoxClass.prototype.fireChange = function()
{
   this.lastSelected = this.getSelectedIndex();
   if (!this.editable) {
      this.topLabel = this.getSelectedItem();
      this.fLabel_mc.drawItem(this.topLabel, true);
   } else {
      this.value=this.getSelectedItem().label;
      this.fLabel_mc.setLabel(this.value);
   }
   this.executeCallback();
}

FComboBoxClass.prototype.releaseHandler = function()
{

   var onCombo = this.boundingBox_mc.hitTest(_root._xmouse, _root._ymouse);
   if (this.changeFlag) {
      if (onCombo) {
         this.fireChange();
      }
      this.openOrClose(!this.opened);
   } else if (onCombo) {
      this.openOrClose(false);

   } else {
      this.onMouseDown = function()
      {
         if (!this.boundingBox_mc.hitTest(_root._xmouse, _root._ymouse) && !this.hitTest(_root._xmouse, _root._ymouse)) {
            this.onMouseDown = undefined;
            this.openOrClose(false);
         }
      }
   }
   this.changeFlag=false;
   this.onMouseUp=undefined;
   clearInterval(this.dragScrolling);
   this.dragScrolling = undefined;
}

FComboBoxClass.prototype.moveSelBy = function(itemNum)
{
   if (itemNum!=0) {
      super.moveSelBy(itemNum);
      if (this.editable) {
         this.setValue(this.getSelectedItem().label);
      }
      if (!this.opened) {
         if (this.changeFlag && !this.isSelected(this.lastSelected)) {
            this.fireChange();
         }
      }
   }
}

FComboBoxClass.prototype.myOnKeyDown = function()
{
   if (!this.focused) return ;
   if (this.editable && Key.isDown(Key.ENTER)) {
      this.setValue(this.fLabel_mc.getLabel());
      this.executeCallback();
      this.openOrClose(false);
   } 
   else if ( (Key.isDown(Key.ENTER) || (Key.isDown(Key.SPACE)&&!this.editable)) && this.opened) {
      if (this.getSelectedIndex()!=this.lastSelected) {
         this.fireChange();
      }

      this.openOrClose(false);
      this.fLabel_txt.hscroll = 0;
   }
   super.myOnKeyDown();
}


FComboBoxClass.prototype.findInputText = function()
{
   if (!this.editable) {
      super.findInputText();
   }
}

FComboBoxClass.prototype.onLabelFocus = function()
{
   this._parent._parent.tabFocused = false;
   this._parent._parent.focused = true;
   
   this.onKeyDown = function()
   {
      this._parent._parent.myOnKeyDown();
   }
   Key.addListener(this);
}

FComboBoxClass.prototype.buttonPressHandler = function()
{   
   this._parent.pressHandler();
}

#endinitclip

this.deadPreview._visible = false;


yo en el resto de peliculas las cargo con el siguiente codigo (puede que esté anticuado, no lo se es de hace más de un año el codigo y no e vuelto a tocar nada de action script:

Código :

on (press) {
   unloadMovieNum(3);
   loadMovieNum("fotos.swf",2);
   mc = _root.createEmptyMovieClip("controlador",1000); 
   mc.nivel=2; 
   mc.onEnterFrame = function() 
   { 
         cargados= eval("_level"+this.nivel).getBytesLoaded(); 
        totales = eval("_level"+this.nivel).getBytesTotal(); 
         if (cargados == totales && totales>0) 
         { 
         eval("_level"+this.nivel)._x=25; 
         eval("_level"+this.nivel)._y=210; 
         this.removeMovieClip(); 
         } 
   }

}


entonces queria ver si me podeis explicar, que deberia modificar en el codigo del combo (o en la carga del swf) para que no me ocurra esto, ya que ando un pelin perdido en ese codigo.

gracias
Xema

Por xema

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2005 01:47 am
dudo que alguien pueda responder esto...
hay que aprender a hacer los códigos propios, así se aprende mucho más

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 22 Abr 2005 07:00 am
pues si deberia hacer mi propio codigo, pero no llego aún a controlar todo lo que necesito para hacer una galería fotográfica como necesito, y así aprendo también. No quiero que me expliquen todo el codigo, solo necesito saber donde carga el combo, en que nivel y como cambio para que cargue en un nivel superior para que esté accesible, yo imagino que SI que habrá personas en este foro que sepan eso no?

Por xema

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2005 10:05 am

fael el incrédulo escribió:

dudo que alguien pueda responder esto...


Tacháaaan!! Yo puedo!! XD XD

Al menos en parte, juas.

Veamos, ese código pertenece al comboBox de los componentes SDK para PocketPC, los cuales son odiados en medio mundo.

Al ser un componente probablemente pierda la ruta, así que prueba poniendo _lockroot a ver si así te funciona.

Código :

nombreComboBox._lockroot = true;


Si esto no te funciona no creo que pueda ayudarte mucho más, esos componentes no están muy depurados actualmente y funcionan mediobien/mediomal según les de. Yo sinceramente te recomiendo no usarlos.

Un saludo!! ^^

PD: Por curiosidad mas que nada... ¿De dónde bajaste esa galería? Me gustaría verla :P

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 22 Abr 2005 10:45 pm
elecash, ese es el codigo del componente "ComboBox" de MX
xD xD xD xD

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 22 Abr 2005 10:46 pm
Pues son iguales XD

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 23 Abr 2005 06:43 pm
Quieres la explicación linea por linea, por funciones, como?

:roll:

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox

 

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