Hoy tengo un problemilla con una web de interface 100% flash. Resulta que casa sección carga dentro de un contenedor, una d estas es un libro (tipico efecto de hojas...) Cuando vemos el libro por primera vez funciona correctamente, en cambio al pasar de sección y volver al libro, este no responde, es decir no se abre.
Aquí os dejo el código para que lo podais aprovechar tb
GRACIAS!!!
La web es la siguiente: www.forjarte.es el fallo se encuentra en la sección de productos, la primera vez funcionará, pero la siguiente no
Esta es la llamada:
Código :
stop();
Mouse.addListener(mousecontroll);
onEnterFrame = oef;
resetPages();
reset();
function removeML() {
Mouse.removeListener(mousecontroll);
}
Código :
pw = 300;
ph = 400;
addPage("start");
addPage("page1");
addPage("page2");
addPage("page3");
addPage("page4");
addPage("page5");
addPage("page6");
addPage("page7");
addPage("page8");
addPage("page9");
addPage("page10");
addPage("page11");
addPage("page12");
addPage("page13");
addPage("page14");
addPage("page15");
addPage("page16");
addPage("page17");
addPage("page18");
addPage("page19");
addPage("page20");
addPage("page21");
addPage("page22");
addPage("page23");
addPage("page24");
addPage("end");
page = 0;
hcover = true;
clickarea = 100;
afa = 56;
gs = 2;
ps = 5;
es = 3;
canflip = true;
_global.mcnt = 0;
gpage = 0;
gflip = false;
gdir = 0;
gskip = false;
gtarget = 0;
aflip = false;
flip = false;
flipOff = false;
flipOK = false;
hflip = false;
rotz = -30;
preflip = false;
ctear = false;
tear = false;
teard = 0;
tlimit = 5;
removedPages = new Array();
mpx=0, mpy=0;
sx = sy=0;
x = 0;
y = 0;
ax = 0;
ay = 0;
acnt = 0;
aadd = 0;
aamp = 0;
AM = Math.PI/180;
function addPage(ename, tear) {
if (ename == "start") {
pageOrder = new Array();
pageCanTear = new Array();
page = 0;
ename = "blankpage";
}
if (ename == "end") {
maxpage = page-1;
ename = "blankpage";
}
tear = tear == undefined ? false : tear;
pageOrder[page] = ename;
pageCanTear[page] = tear;
page++;
}
function reset() {
pages.p0.page._x = -pw;
pages.p0._x = 0;
pages.p1.page._x = -pw;
pages.p1._x = 0;
pages.flip.p2.page._x = -pw;
pages.flip.p2._x = pw;
pages.flip.p3.page._x = -pw;
pages.flip.p3._x = 0;
pages.p4.page._x = -pw;
pages.p4._x = pw;
pages.p5.page._x = -pw;
pages.p5._x = pw;
pages.pgrad._visible = pages.mask._visible=pages.flip._visible=false;
pages.flip.p3mask._width = pages.pgmask._width=pw*2;
pages.center._height = pages.flip.p3mask._height=pages.pgmask._height=ph;
pages.flip.fmask.page.pf._width = pw;
pages.center._width = 6;
pages.flip.fmask.page.pf._height = ph;
pages.mask._height = pages.pgrad._height=pages.flip.p3shadow._height=pages.flip.flipgrad._height=2*Math.sqrt(ph*ph+pw*pw);
pageNumber = new Array();
for (i=0; i<=(maxpage+1); i++) {
pageNumber[i] = i;
}
}
mousecontroll = new Object();
mousecontroll.onMouseDown = function() {
if (flip && !aflip) {
flipOK = false;
if (sx<0 && pages._xmouse>0) {
flipOK = true;
}
if (sx>0 && pages._xmouse<0) {
flipOK = true;
}
flipOff = true;
flip = false;
} else if ((flipOff || aflip || !canflip) && !preflip) {
trace("donothing");
} else {
var oox = ox;
var ooy = oy;
var osx = sx;
var osy = sy;
var hit = hittest();
if (hit) {
anim._visible = false;
flip = true;
flipOff = false;
tear = false;
ox = sx=hit*pw;
if (preflip) {
aflip = preflip=false;
ox=oox, oy=ooy;
sx=osx, sy=osy;
}
pages.flip.setMask(pages.mask);
mpx=pages._xmouse, mpy=pages._ymouse;
}
}
};
mousecontroll.onMouseUp = function() {
if (flip && !tear) {
if ((Math.abs(pages._xmouse)>(pw-afa) && Math.abs(pages._ymouse)>(ph/2-afa) && Math.abs(pages._xmouse-mpx)<afa) || preflip) {
flip = false;
preflip = false;
autoflip();
} else if (!preflip) {
preflip = false;
flipOK = false;
if (sx<0 && pages._xmouse>0) {
flipOK = true;
}
if (sx>0 && pages._xmouse<0) {
flipOK = true;
}
flipOff = true;
flip = false;
}
}
};
function hittest() {
var x = pages._xmouse;
var y = pages._ymouse;
var pmh = ph/2;
if (y<=pmh && y>=-pmh && x<=pw && x>=-pw) {
var r = Math.sqrt(x*x+y*y);
var a = Math.asin(y/r);
var y = Math.tan(a)*pw;
if (y>0 && y>ph/2) {
y = ph/2;
}
if (y<0 && y<-ph/2) {
y = -ph/2;
}
oy = sy=y;
r0 = Math.sqrt((sy+ph/2)*(sy+ph/2)+pw*pw);
r1 = Math.sqrt((ph/2-sy)*(ph/2-sy)+pw*pw);
pageN = eval("pages.flip.p2.page");
pageO = eval("pages.flip.p3");
offs = -pw;
pages.flip.fmask._x = pw;
if (x<-(pw-clickarea) && page>0) {
pages.flip.p3._x = 0;
hflip = checkCover(page, -1);
setPages(page-2, page-1, page, page+1);
ctear = pageCanTear[page-1];
return -1;
}
if (x>(pw-clickarea) && page<maxpage) {
pages.flip.p3._x = pw;
hflip = checkCover(page, 1);
setPages(page, page+2, page+1, page+3);
ctear = pageCanTear[page+2];
return 1;
}
} else {
return 0;
}
}
function checkCover(p, dir) {
if (hcover) {
if (dir>0) {
if (p == (maxpage-2) || p == 0) {
return true;
}
} else {
if (p == maxpage || p == 2) {
return true;
}
}
}
return false;
}
function corner() {
var x = Math.abs(pages._xmouse);
var y = Math.abs(pages._ymouse);
if (x>(pw-afa) && x<pw && y>(ph/2-afa) && y<(ph/2)) {
return true;
}
return false;
}
function oef() {
_global.mcnt++;
if (!flip && corner()) {
preflip = true;
if (!autoflip()) {
preflip = false;
}
}
if (preflip && !corner()) {
preflip = false;
flip = false;
flipOK = false;
flipOff = true;
}
getm();
if (aflip && !preflip) {
y = (ay += (sy-ay)/(gflip ? gs : ps));
acnt += aadd;
ax -= aadd;
if (Math.abs(acnt)>pw) {
flipOK = true;
flipOff = true;
flip = false;
aflip = false;
}
}
if (flip) {
if (tear) {
x = tox;
y = (toy += teard);
teard *= 1.2;
if (Math.abs(teard)>1200) {
flipOff = true;
flip = false;
}
} else {
x = (ox += (x-ox)/(gflip ? gs : ps));
y = (oy += (y-oy)/(gflip ? gs : ps));
}
calc(x, y);
}
if (flipOff) {
if (flipOK || tear) {
x = (ox += (-sx-ox)/(gflip ? gs : es));
y = (oy += (sy-oy)/(gflip ? gs : es));
calc(x, y);
if (x/-sx>0.99 || tear) {
flip = false;
flipOK = flipOff=false;
pages.pgrad._visible = pages.flip._visible=false;
if (tear) {
removePage((sx<0) ? page : page+1);
page += (sx<0) ? -2 : 0;
} else {
page += (sx<0) ? -2 : 2;
}
if (gskip) {
page = gtarget;
}
setPages(page, 0, 0, page+1);
tear = false;
if (gpage>0 && !gskip) {
gpage--;
autoflip();
} else {
gflip = gskip=false;
}
}
} else {
x = (ox += (sx-ox)/3);
y = (oy += (sy-oy)/3);
calc(x, y);
if (x/sx>0.99) {
flip = false;
flipOff = false;
aflip = false;
pages.pgrad._visible = pages.flip._visible=false;
setPages(page, 0, 0, page+1);
}
}
}
}
function calc(x, y) {
if (hflip) {
var xp = (sx<0) ? -x : x;
if (xp>0) {
sp2._visible = false;
sp3._visible = true;
scalc(sp3, x);
} else {
sp3._visible = false;
sp2._visible = true;
scalc(sp2, x);
}
pages.flip.setMask(null);
pages.flip._visible = true;
pages.flip.fgrad._visible = false;
pages.flip.p2._visible = pages.flip.p3._visible=false;
return;
} else {
pages.flip.fgrad._visible = true;
}
var rr0 = Math.sqrt((y+ph/2)*(y+ph/2)+x*x);
var rr1 = Math.sqrt((ph/2-y)*(ph/2-y)+x*x);
if ((rr0>r0 || rr1>r1) && !tear) {
if (y<sy) {
var a = Math.asin((ph/2-y)/rr1);
y = (ph/2-Math.sin(a)*r1);
x = (x<0) ? -Math.cos(a)*r1 : Math.cos(a)*r1;
if (y>sy) {
if ((sx*x)>0) {
y=sy, x=sx;
} else {
y=sy, x=-sx;
}
}
if ((rr1-r1)>tlimit && ctear) {
teard = -5;
tear = true;
tox = ox=x;
toy = oy=y;
}
} else {
var a = Math.asin((y+ph/2)/rr0);
y = Math.sin(a)*r0-ph/2;
x = (x<0) ? -Math.cos(a)*r0 : Math.cos(a)*r0;
if (y<sy) {
if ((sx*x)>0) {
y=sy, x=sx;
} else {
y=sy, x=-sx;
}
}
if ((rr0-r0)>tlimit && ctear) {
teard = 5;
tear = true;
tox = ox=x;
toy = oy=y;
}
}
}
if ((sx<0 && (x-sx)<10) || (sx>0 && (sx-x)<10)) {
if (sx<0) {
x = -pw+10;
}
if (sx>0) {
x = pw-10;
}
}
pages.flip._visible = true;
pages.flip.p3shadow._visible = pages.pgrad._visible=!tear;
pages.flip.p2._visible = pages.flip.p3._visible=true;
//equation of the line
var vx = x-sx;
var vy = y-sy;
var a1 = vy/vx;
var a2 = -vy/vx;
cx = sx+(vx/2);
cy = sy+(vy/2);
var r = Math.sqrt((sx-x)*(sx-x)+(sy-y)*(sy-y));
var a = Math.asin((sy-y)/r);
if (sx<0) {
a = -a;
}
ad = a/AM;
pageN._rotation = ad*2;
r = Math.sqrt((sx-x)*(sx-x)+(sy-y)*(sy-y));
rl = (pw*2);
if (sx>0) {
pages.mask._xscale = 100;
nx = cx-Math.tan(a)*(ph/2-cy);
ny = ph/2;
if (nx>pw) {
nx = pw;
ny = cy+Math.tan(Math.PI/2+a)*(pw-cx);
}
pageN.pf._x = -(pw-nx);
pages.flip.fgrad._xscale = (r/rl/2)*pw;
pages.pgrad._xscale = -(r/rl/2)*pw;
pages.flip.p3shadow._xscale = (r/rl/2)*pw;
} else {
pages.mask._xscale = -100;
nx = cx-Math.tan(a)*(ph/2-cy);
ny = ph/2;
if (nx<-pw) {
nx = -pw;
ny = cy+Math.tan(Math.PI/2+a)*(-pw-cx);
}
pageN.pf._x = -(pw-(pw+nx));
pages.flip.fgrad._xscale = -(r/rl/2)*pw;
pages.pgrad._xscale = (r/rl/2)*pw;
pages.flip.p3shadow._xscale = -(r/rl/2)*pw;
}
pages.mask._x = cx;
pages.mask._y = cy;
pages.mask._rotation = ad;
pageN.pf._y = -ny;
pageN._x = nx+offs;
pageN._y = ny;
pages.flip.fgrad._x = cx;
pages.flip.fgrad._y = cy;
pages.flip.fgrad._rotation = ad;
pages.flip.fgrad._alpha = (r>(rl-50)) ? 100-(r-(rl-50))*2 : 100;
pages.flip.p3shadow._x = cx;
pages.flip.p3shadow._y = cy;
pages.flip.p3shadow._rotation = ad;
pages.flip.p3shadow._alpha = (r>(rl-50)) ? 100-(r-(rl-50))*2 : 100;
pages.pgrad._x = cx;
pages.pgrad._y = cy;
pages.pgrad._rotation = ad+180;
pages.pgrad._alpha = (r>(rl-100)) ? 100-(r-(rl-100)) : 100;
pages.flip.fmask.page._x = pageN._x;
pages.flip.fmask.page._y = pageN._y;
pages.flip.fmask.page.pf._x = pageN.pf._x;
pages.flip.fmask.page.pf._y = pageN.pf._y;
pages.flip.fmask.page._rotation = pageN._rotation;
}
function scalc(obj, x) {
if (x<-pw) {
x = -pw;
}
if (x>pw) {
x = pw;
}
var a = Math.asin(x/pw);
var rot = a/AM/2;
var xs = 100;
var ss = 100*Math.sin(rotz*AM);
x = x/2;
var y = Math.cos(a)*(pw/2)*(ss/100);
placeImg(obj, rot, ss, x, y);
pages.pgrad._visible = pages.flip._visible=true;
pages.pgrad._xscale = x;
pages.pgrad._alpha = pages.flip.p3shadow._alpha=100;
pages.flip.p3shadow._xscale = -x;
pages.flip.p3shadow._x = 0;
pages.flip.p3shadow._y = 0;
pages.flip.p3shadow._rotation = 0;
pages.pgrad._x = 0;
pages.pgrad._y = 0;
pages.pgrad._rotation = 0;
}
function placeImg(j, rot, ss, x, y) {
var m = Math.tan(rot*AM);
var f = Math.SQRT2/Math.sqrt(m*m+1);
var phxs = 100*m;
var phRot = -rot;
var xs = 100*f;
var ys = 100*f;
j.ph.pic._rotation = 45;
j.ph.pic._xscale = (phxs<0) ? -xs : xs;
j.ph.pic._yscale = ys*(100/ss);
j.ph._rotation = phRot;
j.ph._xscale = phxs;
j._yscale = ss;
j._x = x;
j._y = y;
j._visible = true;
}
function setPages(p1, p2, p3, p4) {
p0 = p1-2;
p5 = p4+2;
if (p0<0) {
p0 = 0;
}
if (p5>maxpage) {
p5 = 0;
}
if (p1<0) {
p1 = 0;
}
if (p2<0) {
p2 = 0;
}
if (p3<0) {
p3 = 0;
}
if (p4<0) {
p4 = 0;
}
trace("setpages ->"+p1+","+p2+","+p3+","+p4);
pleft = pages.p1.page.pf.ph.attachMovie(pageOrder[p1], "pic", 0);
pages.p1.page.pf.ph._y = -ph/2;
pleftb = pages.p0.page.pf.ph.attachMovie(pageOrder[p0], "pic", 0);
pages.p0.page.pf.ph._y = -ph/2;
if (hflip) {
var tm = pages.flip.hfliph.attachMovie("sph", "sp2", 0);
sp2 = tm.ph.pic.attachMovie(pageOrder[p2], "pic", 0);
sp2._y=-ph/2, sp2._x=-pw/2;
sp2 = eval("pages.flip.hfliph.sp2");
var tm = pages.flip.hfliph.attachMovie("sph", "sp3", 1);
sp3 = tm.ph.pic.attachMovie(pageOrder[p3], "pic", 0);
sp3._y=-ph/2, sp3._x=-pw/2;
sp3 = eval("pages.flip.hfliph.sp3");
} else {
pages.flip.hfliph.sp2.removeMovieClip();
pages.flip.hfliph.sp3.removeMovieClip();
sp2 = pages.flip.p2.page.pf.ph.attachMovie(pageOrder[p2], "pic", 0);
pages.flip.p2.page.pf.ph._y = -ph/2;
sp3 = pages.flip.p3.page.pf.ph.attachMovie(pageOrder[p3], "pic", 0);
pages.flip.p3.page.pf.ph._y = -ph/2;
}
pright = pages.p4.page.pf.ph.attachMovie(pageOrder[p4], "pic", 0);
pages.p4.page.pf.ph._y = -ph/2;
prightb = pages.p5.page.pf.ph.attachMovie(pageOrder[p5], "pic", 0);
pages.p5.page.pf.ph._y = -ph/2;
}
function resetPages() {
setPages(page, 0, 0, page+1);
}
function autoflip() {
if (!aflip && !flip && !flipOff && canflip) {
acnt = 0;
aamp = Math.random()*(ph/2)-(ph/4);
var x = gflip ? (gdir*pw)/2 : ((pages._xmouse<0) ? -pw/2 : pw/2);
var y = Math.random()*(ph/2)-(ph/4);
var pmh = ph/2;
var r = Math.sqrt(x*x+y*y);
var a = Math.asin(y/r);
var yy = Math.tan(a)*pw;
if (y>0 && y>ph/2) {
y = ph/2;
}
if (y<0 && y<-ph/2) {
y = -ph/2;
}
oy = sy=yy;
ax = (pages._xmouse<0) ? -pw/2 : pw/2;
var l = ((ph/2)-y);
ay = y+((Math.random()*2*l)-l)/2;
trace("autoflip from "+ax+","+ay);
offs = -pw;
var hit = 0;
if (x<0 && page>0) {
pages.flip.p3._x = 0;
hflip = (hcover && gskip) ? gtarget == 0 : checkCover(page, -1);
if (!(preflip && hflip)) {
if (gskip) {
setPages(gtarget, gtarget+1, page, page+1);
} else {
setPages(page-2, page-1, page, page+1);
}
}
hit = -1;
}
if (x>0 && page<maxpage) {
pages.flip.p3._x = pw;
hflip = (hcover && gskip) ? gtarget == maxpage : checkCover(page, 1);
if (!(preflip && hflip)) {
if (gskip) {
setPages(page, gtarget, page+1, gtarget+1);
} else {
setPages(page, page+2, page+1, page+3);
}
}
hit = 1;
}
if (hflip && preflip) {
hit = 0;
preflip = false;
return false;
}
if (hit) {
anim._visible = false;
flip = true;
flipOff = false;
ox = sx=hit*pw;
pages.flip.setMask(pages.mask);
aadd = hit*(pw/(gflip ? 5 : 10));
aflip = true;
pages.flip.fmask._x = pw;
if (preflip) {
oy = sy=(pages._ymouse<0) ? -(ph/2) : (ph/2);
}
r0 = Math.sqrt((sy+ph/2)*(sy+ph/2)+pw*pw);
r1 = Math.sqrt((ph/2-sy)*(ph/2-sy)+pw*pw);
pageN = eval("pages.flip.p2.page");
pageO = eval("pages.flip.p3");
oef();
return true;
}
} else {
return false;
}
}
function getm() {
if (aflip && !preflip) {
x = ax;
y = ay;
} else {
x = pages._xmouse;
y = pages._ymouse;
}
}
function gotoPage(i, skip) {
i = getPN(i);
gskip = (skip == undefined) ? false : skip;
if (i<0) {
return false;
}
var p = int(page/2);
var d = int(i/2);
if (p != d && canflip && !gflip) {
if (p<d) {
gdir = 1;
gpage = d-p-1;
} else {
gdir = -1;
gpage = p-d-1;
}
gflip = true;
if (gskip) {
gtarget=d*2, gpage=0;
}
autoflip();
} else {
gskip = false;
}
}
function getPN(i) {
var find = false;
for (j=1; j<=maxpage; j++) {
if (i == pageNumber[j]) {
i = j;
find = true;
break;
}
}
if (find) {
return i;
} else {
return -1;
}
}
function removePage(i) {
trace("remove page "+i);
i = (Math.floor((i-1)/2)*2)+1;
removedPages.push(pageNumber[i], pageNumber[i+1]);
for (j=(i+2); j<=(maxPage+1); j++) {
pageOrder[j-2] = pageOrder[j];
pageCanTear[j-2] = pageCanTear[j];
pageNumber[j-2] = pageNumber[j];
}
trace("removed pages "+i+","+(i+1));
trace(removedPages.join(", "));
maxPage -= 2;
}
Si a alguien se le ocurre cual puede ser el fallo, se lo agradecería de corazón!
