Comunidad de diseño web y desarrollo en internet online

no funciona

Citar            
MensajeEscrito el 30 Ene 2010 02:34 pm
hola.
Estoy intentando crear algo asi como una pagina web.
parto de un swf principal el cual ha de cargar otros swf secundarios.
en uno de los secundarios, una galeria tengo un codigo que funciona perfectamente por si solo, pero al cargarlo en el swf principal no se activa.
Se el problema porque he estado leyendo, pero no consigo arreglarlo.

En el swf secundario, la galeria, tengo sentencias con _level0[] por lo que cuando lo carga la principal no se activan.
Creo haber entendido que es ese el problema.
Pero en dicha swf, tengo un for que declara variables en funcion de i, y al llamar a otra funcion opero con dichas variables, pero solo funcionan si las llamo como _level0[], he probado con this, pero no cargan.

Cual seria la manera correcta de operar con dichas variables sin que interfiera con la pagina principal¿?



........
function procesoglobal (sumatorio, primeracarga){
var galeria = new XML();
galeria.load ("datos" + sumatorio + ".xml");
galeria.onLoad = function (exito){
if (exito){
ejex = 5;
ejey = 5;
for (i=0; i<this.firstChild.childNodes.length; i++){
if (this.firstChild.childNodes[i].nodeName != null){
url = this.firstChild.childNodes[i].firstChild.nodeValue;
cargador = "loader" + i;
precargador = "pre" + i;
reflejo = "reflex" + i;
if (ejex > 660){
if (ejey == 145){
ejey = 285;
ejex = 5;
}
if (ejey == 5) {
ejey = 145;
ejex = 5;
}
}
cargadofoto (url, cargador, precargador, ejex, ejey);
ejex += 150;
}
}
}
}
function cargadofoto (url, cargador, precargador, ancho, alto){
attachMovie ("Loader", cargador, _level0.getNextHighestDepth(), {_x:ejex, _y:ejey, _width:125, _height:125});
_level0[cargador].contentPath = url;
_level0[cargador].onRelease = function () {

............

gracias.

Por alvarobos

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ene 2010 03:03 pm
bueno, despues de mucho tiempo dandole vueltas decidi por preguntar, y poco despues lo he solucionado.
resulta que ese conflicto se puede solucionar con _root, pero _root es lo mismo que level0, tenia entendido, pero buscando en un manual que me he encontrado, he visto que _root es el level mas bajo de la pelicula cargada, si lo dejas como está seguimos teniendo el conflicto, porque pasara a ser el level de la pelicula que carga, pero si sentencias "this._lockroot = true;" en la pelicula a cargar ahora _root hara referencia al level de la pelicula de carga y no al de la pelicula cargada por lo que se elimina el conflicto y la swf de carga se reproduce.
dejo esto por si alguien encuentra el mismo problema que yo y se ahorra un gran calentamiento de cabeza!.
gracias de todos modos.

Por alvarobos

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 30 Ene 2010 03:58 pm
Pues mi problema es parecido, pero en mi caso cuando desde mi pelicula principal llamo a la pelicula secundaria (que es una galeria de imagenes) solo me aparecen los dos botones que tengo de avanzar pagina y retroceder pagina, pero las imagenes no me aparecen.
Explico como lo tengo creado:
la pelicula secundaria se llama designs.swf, en ella tengo una capa (acciones) que lleva este codigo
------------------------
// acciones en fotograma 1
stop();
System.useCodepage = true;
XML.prototype.ignoreWhite = true;
import mx.transitions.Tween;
// separacion-> distancia entre las imágenes
// tanto horizontal como vertical
var separacion:Number = 115;
// vbles para pasar de página
var pagina_actual:Number = 1;
var num_paginas:Number;
// array donde metemos los elementos del XML
var IMG_array:Array;
// objeto XML que carga la lista de miniaturas
var miniaturasXML:XML = new XML();
miniaturasXML.onLoad = mostrarMiniaturas;
miniaturasXML.load("/asp/Miniaturas.asp");
// funcion que se ejecuta al cargar el XML
function mostrarMiniaturas():Void {
// contadores de columna y fila para
// disponer las miniaturas
var fila:Number = 0;
var col:Number = 0;
// paso los datos del XML al array
IMG_array = this.firstChild.childNodes;
// como caben 12 fotos por página podemos
// saber el núm de páginas necesarias para
// mostrar todas las fotos
num_paginas = Math.ceil(IMG_array.length/5);
// creo el clip donde meteremos todas las miniaturas
var lienzo:MovieClip = _root.createEmptyMovieClip("lienzo_miniaturas", _root.getNextHighestDepth());
lienzo.cacheAsBitmap = true;
// lo posiciono donde nos conviene
lienzo._x = 5;
lienzo._y = 423;
// y lo enmascaro con el clip situado en la
// capa mascara. se enmascara para hacer el deslizamiento del
// clip cuando tengamos muchas miniaturas y no entren todas a
// la vez en pantalla (nuestro caso)
lienzo.setMask(mascara_mc);
// recorro el array que contiene la lista con los nombres de
// los archivos de las miniaturas e invoco la función crearMiniatura
// que es la que carga la imagen, la recoloca, le pone un pequeño
// marco y le asigna las acciones para verla ampliada
for (var k:Number = 0; IMG_array[k]; k++) {
// extraigo la ruta del archivo de imagen
var ruta:String = "minis/"+IMG_array[k].attributes.nombre;
// como sólo tengo tres columnas, cuando llegue a
// la tercera, avanzo una fila y retorno a la primera
//if (col>4) {
//col = 0;
//fila++;
//}
// creo la miniatura. extraigo la ruta del archivo de imagen
// y la paso como tercer parámetro
crearMiniatura(col, fila, IMG_array[k].attributes.nombre);
col++;
}
}
function crearMiniatura(columnaF:Number, filaF:Number, ruta:String) {
// bajo_clip es el clip que contendrá el marco de la miniatura
var bajo_clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("bajo_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
// clip contendrá la imagen
var clip:MovieClip = lienzo_miniaturas.createEmptyMovieClip("foto_"+filaF+"_"+columnaF, lienzo_miniaturas.getNextHighestDepth());
// para cargar la miniatura definimos un objeto MovieClipLoader
// y un objeto detector de eventos
var mi_mcl:MovieClipLoader = new MovieClipLoader();
var miListener:Object = new Object();
mi_mcl.addListener(miListener);
clip.valor = "aaa";
// cargamos la imagen
mi_mcl.loadClip("/minis/"+ruta, clip);
miListener.onLoadStart = function(target_mc:MovieClip) {
// cuando comienza la carga de la imagen
// ponemos al _alpha a 0
target_mc._alpha = 0;
};
miListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// aquí podéis poner acciones para mostrar una precarga,
// este caso no lo hemos considerado oportuno
};
// cuando ya se ha completado la carga y tenemos disponible el clip
miListener.onLoadInit = function(target_mc:MovieClip) {
// recolocamos la imagen (todavía está oculta, con _alpha=0)
target_mc._x = (separacion*columnaF)+(100-target_mc._width)*0.5;
target_mc._y = (separacion*filaF)+(100-target_mc._height)*0.5;
// recolocamos el marco que rodea a la foto
bajo_clip._x = target_mc._x-5;
bajo_clip._y = target_mc._y-5;
// dibujamos el marco
with (bajo_clip) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 100);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
// al pinchar sobre el área del marco,
// mostramos la foto grande con la función
// verFotoGrande
bajo_clip.onRelease = function() {
verFotoGrande(ruta);
};
// muestro la miniatura animando el _alpha hasta 100
var myTween:Tween = new Tween(target_mc, "_alpha", mx.transitions.easing.Regular.easeOut, 0, 100, 1, true);
};
}
function verFotoGrande(ruta:String) {
clearInterval(intervaloColor);
// creo el clip donde irá la foto grande en una profundidad fija
// para que se reemplace cada vez que pincho en una miniatura
var grande:MovieClip = _root.createEmptyMovieClip("grande_mc", 2*IMG_array.length+11);
// igual con el clip que contendrá el marco
var bajo_grande:MovieClip = _root.createEmptyMovieClip("bajo_grande_mc", 2*IMG_array.length+10);
// posición vertical fija
grande._y = 30;
// para cargar la foto grnade definimos otro objeto MovieClipLoader
// y otro objeto detector de eventos
var grande_mcl:MovieClipLoader = new MovieClipLoader();
var grandeListener:Object = new Object();
grande_mcl.addListener(grandeListener);
// cargo la foto grande
grande_mcl.loadClip("/originales/"+ruta, grande);
grandeListener.onLoadStart = function(target_mc:MovieClip) {
// aplico una transformación de color que deja el clip
// tintado de blanco
myColor = new Color(target_mc);
myColorTransform = new Object();
myColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:0};
myColor.setTransform(myColorTransform);
};
grandeListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
// aquí podéis poner acciones para mostrar una precarga,
// este caso no lo hemos considerado oportuno
};
grandeListener.onLoadInit = function(target_mc:MovieClip) {
//trace("grandeListener.onLoadInit");
// recolocamos la imagen (todavía está oculta)
target_mc._x = 10+Math.round((556-target_mc._width)*0.5);
// recolocamos el marco que rodea a la foto grande
bajo_grande._x = target_mc._x-5;
bajo_grande._y = target_mc._y-5;
// dibujamos el marco
with (bajo_grande) {
beginFill(0xffffff);
lineStyle(1, 0xEEEEEE, 100);
lineTo(target_mc._width+10, 0);
lineTo(target_mc._width+10, target_mc._height+10);
lineTo(0, target_mc._height+10);
lineTo(0, 0);
endFill();
}
// con estas rutinas hacemos la transición de color desde el blanco
var indiceColor:Number = 255;
intervaloColor = setInterval(cambiarColor, .005);
function cambiarColor() {
myColorTransform = {ra:100, rb:indiceColor, ga:100, gb:indiceColor, ba:100, bb:indiceColor, aa:100, ab:0};
myColor.setTransform(myColorTransform);
indiceColor -= 2;
if (indiceColor == -1) {
clearInterval(intervaloColor);
}
}
};
}
// con esta función desplazo el lienzo de las miniaturas para
// pasar de página
function moverLienzo(posX:Number):Void {
var myTween:Tween = new Tween(lienzo_miniaturas, "_x", mx.transitions.easing.Regular.easeOut, lienzo_miniaturas._x, posX, 1, true);
}
// deshabilito de inicio el botón de volver atrás
// ya que se muestra la página 1
pMenos_btn.enabled = false;
pMenos_btn._alpha = 30;


--------------------------------------------
Esta copiado de un tutorial y modificado a mi gusto.
Y en otra capa tengo los botones ( next y prev) y un movie clip llamado mascara_mc (donde se almacenan y se muestran mis imagenes en pequeño, 5 por cada pagina.).

Y luego tengo la pelicula principal que hace una serie de cosas y cuando llega a la seccion de portafolio, tengo un boton que intenta cargar la pelicula secundaria:
------------------
on (release) {
contenedor_designs.loadMovie("designs.swf");
//donde contenedor_designs es un movie clip vacio.
}

--------------------
Por lo que se ve me carga el archivo swf, pero parece como si las imagenes estuvieran detras, porque los botones next y prev funcionan.
No se si me he explicado bien.
saludos.

Por mandrago

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 06:26 pm
hey, prueba a sentenciar esto al principio del codigo
this._lockroot = true

lo que hace es que el _root. de la galeria no entre en conflicto con la swf principal.
he mirado por encima y tienes una par de _root. y no se si _level0[] (que es lo mismo, excepto si escribes lo que digo en el codigo, que hara que _root sea _level1 o _level2 segun la posicion de carga)

Por alvarobos

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 31 Ene 2010 06:31 pm
ah!!; y en cuanto a lo de que carga los botones y las fotos debajo...
no!, lo que pasa es que carga los botones porque no entra en conflicto, sin embargo salta la sentencia _root.createEmptyMovieClip que tienes en tu codigo porque entra en conflicto, el _root es igual a _level0 que es el nivel de la pelicula principal y no el de la pelicula cargada; al poner lo que digo, _root sera igual a _level1 que es el nivel de la pelicula cargada y no el de la principal!

Por alvarobos

6 de clabLevel



 

safari
Citar            
MensajeEscrito el 31 Ene 2010 09:35 pm
Gracias alvarabos.
Lo acabo de probar y funciona cuando lo cargo desde el Flash. Si lo cargo desde fuera del Flash, el archivo principal.swf no funciona, se ven los botones pero las imagenes no, por lo que seguirá existiendo un conflicto del (_root.createEmptyMovieClip). He estado leyendo por diferentes foros y hay un usuario que le pasa lo mismo que a mi, con ese codigo, por lo que habra algo mas de ese codigo que no este bien, (y uno que esta pegao en Action Script) pues la verdad que ya no se que hacer ( que lo mas seguro es que lo haga importando las imagenes directamente a la biblioteca)
Saludos.

Por mandrago

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2010 12:27 am
ya esta solucionado, tenia un error en esta parte del codigo:
-----------------------
miniaturasXML.load("/asp/Miniaturas.asp");
-----------------------
y tenia que poner:

miniaturasXML.load("asp/Miniaturas.asp");

Saludos y gracias

Por mandrago

3 de clabLevel



 

firefox

 

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