1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| import flash.display.BitmapData;
import flash.geom.ColorTransform;
import flash.geom.Transform;
import flash.geom.Matrix;
var nSpin:Number;
var nInterval:Number;
activateButton(true);
var bd:BitmapData = new BitmapData(100, 100, false);
/* Fonction qui active/désactive le bouton */
function activateButton(b:Boolean) {
if(b) {
btn.gotoAndStop(1);
btn.onRelease = actionButton;
} else {
btn.gotoAndStop(2);
delete btn.onRelease;
}
}
function runWheel() {
if (nSpin <= 0){
// Si le "nombre de rotation" est inférieur à 0
// On arrete la roue
clearInterval(nInterval);
// On ré-active le bouton
activateButton(true);
/* On récupère le résultat */
// On récupère l'angle du rotation de la roue
var mat:Matrix = new Matrix();
mat.rotate(mcWheel._rotation * Math.PI / 180);
// On dessine la roue auquel on applique l'angle de rotation
bd.draw(mcWheel, mat);
// On affiche le résultat
setColor(mcResult, completeColorLabel(bd.getPixel(50, 40).toString(16)));
} else {
// On continue à faire tourner la roue;
mcWheel._rotation += nSpin -= 0.5;
}
}
/* Fonction lancée sur le clic du bouton */
function actionButton() {
nSpin = 24 + Math.floor(Math.random()*10); // On détermine de manière aléatoire le "nombre de rotation"
nInterval = setInterval(runWheel, 80); // On lance la roue
activateButton(false); // On désactive le bouton
}
/*
* Fonction pour changer la couleur d'un clip
* mc représentant le clip dont on veut changer la couleur
* s chaine réprésetant la couleur à appliquer au format RVB
*/
function setColor(mc:MovieClip, s:String) {
var r:Number = Number("0x" + s.substr(0,2)); //Composante R
var v:Number = Number("0x" + s.substr(2,2)); //Composante V
var b:Number = Number("0x" + s.substr(4,2)); //Composante B
var colorTrans:ColorTransform = new ColorTransform(0, 0, 0, 0, r, v, b, 255);
var trans:Transform = new Transform(mc);
trans.colorTransform = colorTrans;
}
/* Fonction qui rajoute au début de la chaine 0 jusqu'à ce que la chaine fasse 6 caractères */
function completeColorLabel(s:String):String {
var sResult:String = s;
while(sResult.length < 6) {
sResult = "0" + sResult;
}
return sResult;
} |
Partager