Bonjour a tous.
J'ai un gros problème, j'ai récupéré un dock style mac en flash. Avec des bulles d'aide sur chaque icone. Quand je teste le fichier directement dans flash tout est bien calé. Mais dès que je le met dans ma page web les bulles d'aide ne corresponde plus aux icones, je pense que le problème vient du fichier xml. Mais je mis connait pas encore assez pour trouver d'ou vient le pb.
Voila le fichier xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
pictureWidth="50"
pictureHeight="64"
mouseOverZoomSize="60"
imageSpacing="30"
mouseOverZoomSpeed="50"
mouseOverZoomInfluence="160"
Mouseover_y="-200"
maxScrollSpeed="20"
minScrollX="-0"
maxScrollX="0"
startPos="0"
enRefl="off"
reflSize="20"
reflAlpha="16"
reflDist="-10"
brighten="12"
enTt="on"
tooltipType="black"
tooltipPosition="top"
tooltipOffset_y="15"
strokeSize="0"
strokeColour="0x00ff00"
rollStrokeSize="0"
rollStrokeColour="0xffff00"
selStrokeSize="0"
selStrokeColour="0x0000ff"
></menu>
<pictures>
<picture thumb="test-images/01.png" description="REPERTOIRES
professionnels" name="http://sites.wamland.nc/quefontils.nc/indexx.php/" param="_self"></picture>
<picture thumb="test-images/02.png" description="IMMOBILIER.NC
petites annonces" name="http://www.immobilier.nc/home.php/" param="_self"></picture>
<picture thumb="test-images/03.png" description="ANNONCES.NC
petites annonces" name="http://www.annonces.nc/" param="_self"></picture>
<picture thumb="test-images/04.png" description="AUTOMOBILES.NC
petites annonces" name="http://www.automobiles.nc/" param="_self"></picture>
<picture thumb="test-images/05.png" description="NAUTISME.NC
petites annonces" name="http://www.nautisme.nc/" param="_self"></picture>
<picture thumb="test-images/06.png" description="EMBAUCHE.NC
petites annonces" name="http://www.embauche.nc/" param="_self"></picture>
<picture thumb="test-images/07.png" description="RENCONTRES.NC
petites annonces" name="http://www.rencontres.nc/" param="_self"></picture>
<picture thumb="test-images/08.png" description="BATIMENT.NC
devis gratuits" name="http://www.batiment.nc/" param="_self"></picture>
<picture thumb="test-images/09.png" description="KALOLO.COM
chat, webmail..." name="http://www.kalolo.com/" param="_self"></picture>
<picture thumb="test-images/10.png" description="WAMLAND.COM
creation de sites" name="http://www.wamland.com/" param="_self"></picture>
</pictures>
Je met aussi l'AS qui est dans mon flash:
voila le premier morceau de code:
/click on picture
//user click on a picture and param is "action" in xml on that picture
function pictureClick(par)
{
//ex1: put name=1 or name=2 ... in xml
//myMovie.gotoAndStop(par);
//par will be 1,2,...
//ex2: put a name path of a file(swf,jpg..etc)
//myMovie.loadMovie(par);
//par will be that name path
}
// slideshow initial values and parameters
_lockroot=false;
stop();
Stage.align="TL";
Stage.scaleMode="noScale";
var inst=this;
guide._visible=false;
mcTooltip._visible=false;
poze._visible=false;
anim._alpha=0;
this._visible=false;
var fixWidth=0;
inst.varNeeded=["pictureWidth","pictureHeight","mouseOverZoomSize"
,"imageSpacing","mouseOverZoomSpeed","mouseOverZoomInfluence"
,"Mouseover_y","maxScrollSpeed","minScrollX","maxScrollX","startPos"
,"enRefl","reflSize","reflAlpha","reflDist","brighten","enTt","tooltipType","tooltipPosition","tooltipOffset_y"
,"strokeSize","strokeColour","rollStrokeSize","rollStrokeColour","selStrokeSize","selStrokeColour"
];
inst.valsNeeded=[];
inst.picsNeeded=[];
//setting path needed for loading pictures
var mainRoot=this._parent;
this.pathFile2=_root[this._name+"_pathFile"];
if (this.pathFile2!=undefined)
{
this.pathFile=this.pathFile2;
}
if (this.pathFile==undefined)
{
var spl=this._name.split("_" );
if (spl.length==3)
{
this.pathFile=spl[1]+"."+spl[2];
}
else
{
this.pathFile="settings.xml";
}
}
//loading settings from xml
loadSettingsFromXml(this.pathFile,true);
//remove all elements from current obiect
function removeAllElements()
{
for (i in pictures)
{
removeMovieClip(pictures[i]);
}
}
//the settings are loaded from xml and parsing to function fct
function loadSettingsFromXml(path,par)
{
removeAllElements();
var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load(path);
myXML.onLoad = function(success)
{
if (success)
{
var node1="";
var node2="";
for (var i=1;i<=myXML.childNodes.length;i++)
{
var node=myXML.childNodes[i-1];
if (node.nodeName=="menu" ) node1=node;
if (node.nodeName=="pictures" ) node2=node;
}
for (var i=1;i<=inst.varNeeded.length;i++)
{
var val=node1.attributes[inst.varNeeded[i-1]];
if (isNaN(Number(val))) inst.valsNeeded[inst.varNeeded[i-1]]=val;
else inst.valsNeeded[inst.varNeeded[i-1]]=Number(val);
}
var pics=node2.childNodes;
for (var i=1;i<=pics.length;i++)
{
inst.picsNeeded[i-1]=new Object();
inst.picsNeeded[i-1].thumb=pics[i-1].attributes["thumb"];
inst.picsNeeded[i-1].descr=pics[i-1].attributes["description"];
inst.picsNeeded[i-1].aux=pics[i-1].attributes["name"];
inst.picsNeeded[i-1].param=pics[i-1].attributes["param"];
}
inst.gotoAndStop(2);
}
}
}
Et voila le deuxieme:
stop();
//inital values for that object
import flash.geom.Transform;
import flash.geom.ColorTransform;
var mainRoot=this._parent;
var isSel="";
var auxDist=0;
var waitForRollOut=3;
var cPos=valsNeeded["startPos"];
var cSpeed=0;
var allLoaded=false;
var nrLoaded=0;
var nrp=0;
var alphaSpeed=5;
var animAlphaSpeed=15;
var minAlpha=50;
// values form xml
var fixWi=valsNeeded["pictureWidth"];
var fixHe=valsNeeded["pictureHeight"];
var zoomMax=valsNeeded["mouseOverZoomSize"];
var spacing=valsNeeded["imageSpacing"];
var zoomSpeed=valsNeeded["mouseOverZoomSpeed"];
var zoomDist=valsNeeded["mouseOverZoomInfluence"];
var up=valsNeeded["Mouseover_y"]/10;
var speed=valsNeeded["maxScrollSpeed"];
var minX=valsNeeded["minScrollX"];
var maxX=valsNeeded["maxScrollX"];
var enRefl=makeBool("on",valsNeeded["enRefl"]);
var reflSize=valsNeeded["reflSize"];
var reflAlpha=valsNeeded["reflAlpha"];
var reflDist=valsNeeded["reflDist"];
var pictureWidth=fixWi;
var pictureHeight=fixHe;
var enBi=true;
var biSpeed=valsNeeded["brighten"];
var biMax=biSpeed;
var ttAlSpeed=biSpeed;
var enTt=makeBool("on",valsNeeded["enTt"]);
var tooltipType=Number(retValFromArr(["white","black"],[1,2],valsNeeded["tooltipType"]));
var tooltipPosition=Number(retValFromArr(["top","bottom","follow"],[1,2,3],valsNeeded["tooltipPosition"]));
var offBgrTooltip=10;
var factBi=100;
var ttDepY=valsNeeded["tooltipOffset_y"];
var strokeSize=valsNeeded["strokeSize"]
var strokeColour=valsNeeded["strokeColour"]
var rollStrokeSize=valsNeeded["rollStrokeSize"]
var rollStrokeColour=valsNeeded["rollStrokeColour"]
var selStrokeSize=valsNeeded["selStrokeSize"]
var selStrokeColour=valsNeeded["selStrokeColour"]
var selSize=strokeSize;
var isPress="";
//inital position and values for movieclips
maska._width=this._width;
this._xscale=100;
this._visible=true;
///////////////////////////////////////////HERE THE CODE START\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//animation loop for pictures loader
anim.onEnterFrame=function()
{
this._alpha+=animAlphaSpeed;
if (this._alpha>=100)
{
this._alpha=100;
delete this.onEnterFrame;
}
}
//loading pictures from varabile tooked from xml
for (var i=1;i<=picsNeeded.length;i++)
{
addPicture();
}
//////////////////////////////////////FUNCTION NEEDED FOR THAT OBJECT\\\\\\\\\\\\\\\\\\\\\\\\
//adding a picture
function addPicture(th,des,aux,param)
{
allLoaded=false;
nrp+=1;
if (th==undefined)
{
th=picsNeeded[nrp-1].thumb;
}
var mc=pictures.attachMovie("holder","img"+nrp,pictures.getNextHighestDepth());
mc.mcTooltip=pictures.attachMovie("mcToolTip","tt"+nrp,pictures.getNextHighestDepth());
mc.mcTooltip._alpha=0;
mc._x=0;
mc._y=0;
mc._alpha=0;
var mclListener:Object = new Object();
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip(th,mc.holder_son);
mclListener.onLoadInit = function(son:MovieClip)
{
var mc2=mc.attachMovie("holder2","refl",mc.getNextHighestDepth());
var mclListener2:Object = new Object();
var image_mc2:MovieClipLoader = new MovieClipLoader();
image_mc2.addListener(mclListener2);
image_mc2.loadClip(th,mc2.holder_son);
mclListener2.onLoadInit = function(son2:MovieClip)
{
mc._alpha=0;
mc.desc=picsNeeded[nrLoaded].descr;
son.aux=picsNeeded[nrLoaded].aux;
son.param=picsNeeded[nrLoaded].param;
mc.mcTooltip._alpha=0;
nrLoaded+=1;
son._width=fixWi;
son._height=fixHe;
son._x=-son._width/2;
son._y=-son._height/2;
son.smoothing=true;
mc2._yscale=-100;
son2._width=son._width;
son2._height=son._height;
son2._x=-son._width/2;
son2._y=-son._height-son._height/2-reflDist;
son2.smoothing=true;
mc2.swapDepths(son);
mc2._alpha=reflAlpha;
mc2.maska._y=mc2.holder_son._y+mc2.holder_son._height-mc2.maska._height;
mc.holder_son.forceSmoothing=true;
mc2.holder_son.forceSmoothing=true;
mc2.holder_son.cacheAsBitmap=true;
mc2.maska.cacheAsBitmap=true;
mc2.maska2.cacheAsBitmap=true;
mc2.desen.cacheAsBitmap=true;
mc2.holder_son.setMask(mc2.maska);
mc2.desen.setMask(mc2.maska2);
mc.id=nrLoaded;
mc.sc=100;
setPicture(mc);
mc.isOk=true;
if (nrLoaded==picsNeeded.length) allLoaded=true;
mc.holder_son.onPress=function()
{
isPress=this._parent;
if (this.param=="action" )
{
pictureClick(this.aux);
}
else
{
getURL(this.aux,this.par);
}
}
}
}
}
//detecting hitest on that object
guide.onEnterFrame=function()
{
guide._height=pictures._height/2-reflDist/2;
guide._y=0;
if (nrLoaded==picsNeeded.length && anim._alpha==100)anim.onEnterFrame=function()
{
this._alpha-=animAlphaSpeed;
if (this._alpha<=0)
{
this._alpha=0;
delete this.onEnterFrame;
}
}
globalRefresh();
this.isOn=this.hitTest(mainRoot._xmouse,mainRoot._ymouse);
if (isSel=="" )
{
if (this.canDoRollOut==undefined) this.canDoRollOut=0;
this.canDoRollOut+=1;
if (this.canDoRollOut>=waitForRollOut)
{
this.canDoRollOut=waitForRollOut;
}
}
else this.canDoRollOut=0;
}
//this function is calling all the time
function globalRefresh()
{
if (guide.isOn)
{
if (guide.point=="" ) guide.point=_xmouse;
else
{
var maxPos=_xmouse-guide.point;
if (maxPos!=0) cSpeed=maxPos*speed/300;
cPos-=cSpeed;
}
}
else
{
guide.point="";
}
if (cPos>=maxX) cPos=maxX;
if (cPos<=minX) cPos=minX;
if (allLoaded) calculateAll();
maska._height=pictures._height*2;
if (enTt)
{
ttAlSpeed=biSpeed;
if (biSpeed<=10) ttAlSpeed=10;
}
}
//punt condition on effects min max per picture
function conditions(mc)
{
if (mc._alpha<0)
{
mc._alpha=-1;
mc._visible=false;
}
else
{
mc._alpha+=alphaSpeed;
mc._visible=true;
if (mc._alpha>=100) mc._alpha=100;
}
if (enBi)
{
biMax=biSpeed*12;
if (mc.bi==undefined) mc.bi=1;
if (mc.sel)mc.bi+=biSpeed/factBi;
else {mc.bi-=biSpeed/factBi;}
if (mc.bi>=biMax/factBi) mc.bi=biMax/factBi;
if (mc.bi<=1) mc.bi=1;
var transformer:Transform = new Transform(mc);
var colorTransformer:ColorTransform = transformer.colorTransform;
colorTransformer.redMultiplier =mc.bi;
colorTransformer.greenMultiplier = mc.bi;
colorTransformer.blueMultiplier = mc.bi;
transformer.colorTransform = colorTransformer
}
if (enTt)
{
mc.mcTooltip.gotoAndStop(tooltipType);
if (mc.mcTooltip._alpha>=100) mc.mcTooltip._alpha=100;
mc.mcTooltip.swapDepths(pictures.getNextHighestDepth());
mc.mcTooltip.mcttText.scris.autoSize=true;
mc.mcTooltip.mcttText.scris.text=mc.desc;
mc.mcTooltip.mcttText.scris._x=2;
mc.mcTooltip.bgr.bgr_son._width=mc.mcTooltip.mcttText.scris._width+offBgrTooltip;
if (mc.sel)
{
mc.mcTooltip._alpha+=ttAlSpeed;
mc.mcTooltip._xscale+=20;
mc.mcTooltip._yscale+=20;
}
else
{
mc.mcTooltip._alpha-=ttAlSpeed;
mc.mcTooltip._xscale-=20;
mc.mcTooltip._yscale-=20;
}
if (mc.mcTooltip._alpha>=100) mc.mcTooltip._alpha=100;
if (mc.mcTooltip._alpha<=0) mc.mcTooltip._alpha=0;
if (mc.mcTooltip._xscale>=100)
{
mc.mcTooltip._xscale=100;
mc.mcTooltip._yscale=100;
}
if (mc.mcTooltip._xscale<=0)
{
mc.mcTooltip._xscale=0;
mc.mcTooltip._yscale=0;
}
}
else
{
mc.mcTooltip._alpha=0;
}
mc.mcTooltip._x=mc._x-mc.mcTooltip._width/2+offBgrTooltip/2;
mc.mcTooltip.bgr.arrow._visible=false;
if (tooltipPosition==1) mc.mcTooltip._y=mc._y-mc._height/2+mc._height/4+reflDist/2-mc.mcTooltip._height+ttDepY;
if (tooltipPosition==2)
{
var val=minMaxInterval(0,15,100,15,reflSize);
var dif=mc._height/2+val;
mc.mcTooltip._y=dif/2+up+ttDepY;
}
if (tooltipPosition==3)
{
if (mc.sel)
{
mc.mcTooltip._x=_xmouse-mc.mcTooltip._width/2;
mc.mcTooltip._y=_ymouse-mc.mcTooltip._height+ttDepY;
}
mc.mcTooltip.bgr.arrow._visible=true;
mc.mcTooltip.bgr.arrow._x=mc.mcTooltip._width/2-mc.mcTooltip.bgr.arrow._width/2;
mc.mcTooltip.bgr.arrow._y=mc.mcTooltip.bgr.bgr_son._height;
mc.mcTooltip.bgr.arrow._yscale=100;
if (ttDepY>0)
{
mc.mcTooltip._y=_ymouse+mc.mcTooltip.bgr.arrow._height+ttDepY;
mc.mcTooltip.bgr.arrow._y=0;
mc.mcTooltip.bgr.arrow._yscale=-100;
}
}
}
//draw border for picture
function drawBorder(sz,col,mc)
{
if (sz>0)
{
mc.desen.lineStyle(sz,col);
mc.desen.moveTo(mc.holder_son._x,mc.holder_son._y);
mc.desen.lineTo(-mc.holder_son._x,mc.holder_son._y);
mc.desen.moveTo(-mc.holder_son._x,mc.holder_son._y);
mc.desen.lineTo(-mc.holder_son._x,-mc.holder_son._y);
mc.desen.moveTo(-mc.holder_son._x,-mc.holder_son._y);
mc.desen.lineTo(mc.holder_son._x,-mc.holder_son._y);
mc.desen.moveTo(mc.holder_son._x,-mc.holder_son._y);
mc.desen.lineTo(mc.holder_son._x,mc.holder_son._y);
}
}
//draw border for reflection picture
function drawBorder2(sz,col,mc,mc2)
{
if (sz>0)
{
mc.desen._yscale=-100;
mc.desen.lineStyle(sz,col);
mc.desen.moveTo(mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height);
mc.desen.lineTo(-mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height);
mc.desen.moveTo(-mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height);
mc.desen.lineTo(-mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height+mc.holder_son._height);
mc.desen.moveTo(mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height);
mc.desen.lineTo(mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height+mc.holder_son._height);
mc.desen.moveTo(mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height+mc.holder_son._height);
mc.desen.lineTo(-mc2.holder_son._x,mc2.holder_son._y+mc2.holder_son._height+mc.holder_son._height);
}
}
//calculate all positions and scales for each picture
function calculateAll()
{
var totalWidth = 0;
for (var j = 1; j<=picsNeeded.length; j++)
if (pictures["img"+j].isOk)
{
var mc=pictures["img"+j];var pos=mc._xmouse;
mc.refl._visible=enRefl;
if (!guide.isOn) pos=-5000;
var xm= (Math.abs(pos))/zoomDist;
var val=1;
zm=zoomMax/50;
if (xm < 1) val=1- xm+zm;
if (guide.isOn) mc.sc+=((val - mc.sc/100) *zoomSpeed);
else mc.sc+=((val - mc.sc/100) *zoomSpeed*1);
if (mc.sc<=100) mc.sc=100;
var difHe=pictureHeight-fixHe;
mc.holder_son._width=pictureWidth;
mc.holder_son._height=pictureHeight;
mc.holder_son._x=-pictureWidth/2;
mc.holder_son._y=-pictureHeight/2;
mc.refl.holder_son._width=pictureWidth;
mc.refl.holder_son._height=pictureHeight;
mc.refl.holder_son._x=-pictureWidth/2;
mc.refl.holder_son._y=-pictureHeight-pictureHeight/2;
mc.refl._y=reflDist;
mc.refl.maska._width=pictureWidth;
mc.refl.maska._height=minMaxInterval(0,0,100,pictureHeight*1.2,reflSize);
mc.refl.maska._x=mc.refl.holder_son._x;
mc.refl.maska._y=mc.refl.holder_son._y+mc.refl.holder_son._height-mc.refl.maska._height;
mc.refl.maska2._width=mc.refl.maska._width+selSize;
mc.refl.maska2._height=mc.refl.maska._height+selSize;
mc.refl.maska2._x=mc.refl.maska._x-selSize/2;
mc.refl.maska2._y=mc.refl.maska._y+selSize/2;
mc.refl._alpha=reflAlpha;
mc._y=up/100*(mc.sc-100);
totalWidth+=mc._width;
if (spacing>0) mc.swapDepths(mc.sc);
}
var posI =-(totalWidth+(nrLoaded - 1) * spacing)/2;
isSel="";
for (var k = 1; k<=picsNeeded.length; k++)
{
var mc=pictures["img"+k];
if (mc.isOk)
{
var dep= mc._width/2;
if (k > 1) posI +=dep;
posI += spacing +dep;
mc._x= posI-dep+cPos+fixWi/2-spacing;
}
if (mc.sc==undefined) mc.sc=100;
mc._xscale=mc.sc;
mc._yscale=mc.sc;
setPicture(mc);
var col=mc.holder_son.hitTest(mainRoot._xmouse,mainRoot._ymouse);
mc.desen.clear();
mc.refl.desen.clear();
if (col)
{
isSel=mc;
mc.sel=true;
drawBorder(rollStrokeSize,rollStrokeColour,isSel);
drawBorder2(rollStrokeSize,rollStrokeColour,isSel.refl,isSel);
mc.swapDepths(pictures.getNextHighestDepth());
}
else
{
mc.sel=false;
drawBorder(strokeSize,strokeColour,mc);
drawBorder2(strokeSize,strokeColour,mc.refl,mc);
}
if (isPress!="" )
{
if (isPress!="" && selStrokeSize!=0)
{
drawBorder(selStrokeSize,selStrokeColour,isPress);
drawBorder2(selStrokeSize,selStrokeColour,isPress.refl,isPress);
}
}
conditions(mc);
}
}
// return a value from an array coresponding to a value from an array arr=["a","b"],vals=[-1,1]
//val="a" return -1,val ="b" return 1
function retValFromArr(arr,vals,val)
{
var rez=vals[0];
for (var i=1;i<=arr.length;i++)
{
if (arr[i-1]==val)
{
rez=vals[i-1];
break;
}
}
return rez;
}
//if val is str return true otherwise return false
function makeBool(str,val)
{
var rez=false;
if (val==str) rez=true;
return rez;
}
////////////////////////////////////// OTHER MATH FUNCTIONS \\\\\\\\\\\\\\\\\\\\\\\\
//minimum values of 2 values
function min(_a,_b) { if (_a<=_b) return _a;else return _b;}
//maximum value of 2 values
function max(_a,_b) { if (_a>=_b) return _a;else return _b;}
//calculate radians value of an angle
function radiani(_angle){return _angle*Math.PI/180;}
//degree value of a radian angle
function grade(_angle){return _angle*180/Math.PI;}
// create a vector object from 2 parameters
function vector(_px,_py,_pz){var v=new Object();v._x=_px;v.y=_py;v.z=_pz;return v;}
// transform movieclip coordinates _x,_y to vector (x,y)
function point_vector(mc){return vector(mc._x,mc._y,0)};
// put movieclip (position) to vector coordinates (x,y)
function vector_point(v,mc){mc._x=v._x;mc._y=v.y}
// round to x number of decimals
function zecimale(number:Number,precision):Number{var correction:Number = Math.pow(10, precision);return Math.round(correction * number) / correction;}
// sum 2 vectors
function suma(_v1,_v2){var v=new Object();v._x=_v1._x+_v2._x;v.y=_v1.y+_v2.y;v.z=_v1.z+_v2.z;return v;}
// substract 2 vectors
function diferenta(_v1,_v2)
{
var v=new Object();v._x=_v2._x-_v1._x;v.y=_v2.y-_v1.y;v.z=_v2.z-_v1.z;return v;
}
// length of a vector
function modul(_v1){return Math.sqrt(Math.pow(_v1._x,2)+Math.pow(_v1.y,2)+Math.pow(_v1.z,2));}
// multiply a vector with a scalar
function multiplica(_v1,_val){var v=new Object();v._x=_v1._x*_val;v.y=_v1.y*_val;v.z=_v1.z*_val;return v;}
// make a vector coordinates equal to other vector coordinates
function makeVector(v){return vector(v._x,v.y,v.z)};
// distance between 2 vectors
function distance(_v1,_v2){var di=Math.sqrt(Math.pow(_v2.y-_v1.y,2)+Math.pow(_v2._x-_v1._x,2)+Math.pow(_v2.z-_v1.z,2));if (_v1._x==_v2._x and _v1.y==_v2.y and _v1.z==_v2.z) di =0; return di;}
// calculate position between 2 vectors starting from first vector to distance d
function gaseste_vector(_v1,_v2,_d){var v=suma(_v1,multiplica(diferenta(_v1,_v2),_d));return v;}
// calculate position between 2 in procent starting from first vector
function gaseste_vector_lungime(_v1,_v2,_l){var v1=diferenta(_v1,_v2);var d=_l/modul(v1);var v=suma(_v1,multiplica(v1,d));return v;}
//trace vector value x,y
function debug(_v){trace("x="+_v._x+" y="+_v.y+" z="+_v.z);}
//calculate position on a point from a 4 points bezier
function bezierPosition(arr,t)
{
var t = Math.min(Math.max(t,0),1)
var a = 3* (arr[1]._x - arr[0]._x)
var b = 3* (arr[2]._x - arr[1]._x) - a
var c = arr[3]._x - arr[0]._x - a-b
var px = c*Math.pow(t,3) + b*Math.pow(t,2) + a*Math.pow(t,1) + arr[0]._x;
if (isNaN(px))
{
px=arr[1]._x;
}
a = 3* (arr[1].y - arr[0].y)
b = 3* (arr[2].y - arr[1].y) - a
c = arr[3].y - arr[0].y - a-b
var py = c*Math.pow(t,3) + b*Math.pow(t,2) + a*Math.pow(t,1) + arr[0].y;
if (isNaN(py))
{
py=arr[0].y;
}
var v=vector(px,py);
return v;
}
// calculate position(pos) between 2 values mi1 mi2 like that on mi1 value is ma1 on mi2 value is ma2
function minMaxInterval(_mi1,_Ma1,_mi2,_Ma2,_pos)
{
// calculate a position between 2 values min max
function procInterval(_mi,_ma,_pos)
{
var pr=(_pos-_mi)/(_ma-_mi);
if (_pos<=_mi) pr=0;
if (_pos>=_ma) pr=1;
return pr;
}
// calculate a position between 2 values min max in procent
function calcProcInterval(_mi,_ma,_proc)
{
var nr=(_ma+_mi)*_proc;
if (_proc<=0) nr=_mi;
if (_proc>=1) nr=_ma;
return nr;
}
var pr=procInterval(_mi1,_mi2,_pos);
var nr=_Ma1+(_Ma2-_Ma1)*pr;
if (_pos<=_mi1) nr=_Ma1;
if (_pos>=_mi2) nr=_Ma2;
return nr
}
if (mainRoot.hasPanel!=undefined)
{
mainRoot.hasPanel.initGUI();
}
Je remercie d'avance ceux qui pourront m'aider.