Flash AS3

Fermé
Robert - 16 mai 2011 à 14:55
simon37 Messages postés 23 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 15 décembre 2015 - 2 juin 2011 à 09:50
Bonjour,

j'aimerai appliquer un cookie a se code pour ne pas pouvoir refaire le quiz ? comment faire ? Je voudrait aussi que si la personne à déja fais le questionnaire qu'on lui affice que son résultat la prochaine fois.


AIDEZ moi SVP.



//// VARIABLES GLOBALES PRINCIPALES (à modifier au besoin) ////

// Delais d'affichage du résultat (bien joué ou oups)
var DELAIS_AFFICHAGE_RESULTAT:Number = 0.4;

// Delais d'affichage des bonnes réponses (quand erronées) en seconde (ex:0.75)
var DELAIS_AFFICHAGE_BONNES_REPONSES:Number = 0.75;

// Duree de l'animation 'fade' des bonnes réponses en seconde (ex:0.5)
var DUREE_FADE_BONNES_REPONSES:Number = 0.4;

// Drag items à jumeler (nombre peut varier: 2,3,4...)
// Il faut également ajouter autant de boutons nommés:
// 'btn_drag1', 'btn_drop1', 'btn_drag2' ...
// et de blocs texte individuels nommés 'mc_blocReponse1', 'mc_blocReponse2'...
var DRAG_ITEMS:Array = [
'Bûche roulante', // 1
'Mât de descente', // 2
'Bascules sans ressorts' // 3
];

// Bon match
// À gauche incrementer 1,2,3,4.., à droite indiquer les bonnes réponses
var BON_MATCH:Object = {
1: 3,
2: 1,
3: 2
};

//// CONSTANTES DE L'APPLICATION, NE PAS MODIFIER INUTILEMENT ////

const COULEUR_CADRE_BONNE_REP:uint = 0x33B6AC;
const COULEUR_CADRE_MAUVAISE_REP:uint = 0xFF0000;
const COULEUR_BLOC_APRES_VALIDEZ:uint = 0xE6E6E6;

//// IMPORTS ////

import flash.display.MovieClip;
import fl.transitions.Tween;
import fl.transitions.easing.Regular;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.geom.ColorTransform;
import flash.utils.getDefinitionByName;

//// PROGRAMMATION (pas besoin de modifier) ////

stop();
init();

// Initialisation de l'application
function init():void
{
// Initialication du bouton valider
initBtnValidez( btn_validez );
btn_validez.setInteractive( true );

// Cacher le texte 'Les bonnes reponses...'
MovieClip(this['mc_lesBonnesReponses']).visible = false;

// Initialisation des boutons drag & drop
this.dragButtons = new Array();
this.dropButtons = new Array();
var vue:MovieClip;
var len:int = DRAG_ITEMS.length;
for ( var iItem:int = 1 ; iItem <= len ; iItem++ )
{
var texte:String = DRAG_ITEMS[iItem-1];
// drag buttons
vue = this['btn_drag'+iItem];
// Afficher le texte du bouton
TextField( vue['field_text'] ).text = texte;
TextField( vue['field_text'] ).mouseEnabled = false; // Enleve possibilité de focus sur texte
initDragButton( vue, iItem );
vue.setInteractive( true );
this.dragButtons.push( vue );
// drop buttons
vue = this['btn_drop'+iItem];
initDropButton( vue, iItem );
this.dropButtons.push( vue );
}
}

// Initialisation d'un bouton
function initBtnValidez( vue:MovieClip ):void
{
vue.setInteractive = function( bool:Boolean )
{
this.useHandCursor = bool;
this.buttonMode = bool;
if( bool )
{
this.addEventListener( MouseEvent.CLICK, _onClickValidezBtn );
this.addEventListener( MouseEvent.ROLL_OVER, _onRollOverValidezBtn );
this.addEventListener( MouseEvent.ROLL_OUT, _onRollOutValidezBtn );
}
else
{
this.removeEventListener( MouseEvent.CLICK, _onClickValidezBtn );
this.removeEventListener( MouseEvent.ROLL_OVER, _onRollOverValidezBtn );
this.removeEventListener( MouseEvent.ROLL_OUT, _onRollOutValidezBtn );
}
}
}

// Initialisation d'un bouton drag
function initDragButton( vue:MovieClip, itemId:int ):void
{
vue.itemId = itemId; // intialisation dynamique de propriété
vue.dropItemId = 0;
vue.oriPos = new Point( vue.x, vue.y );
vue.setInteractive = function( bool:Boolean )
{
this.useHandCursor = bool;
this.buttonMode = bool;
if( bool )
{
this.addEventListener( MouseEvent.MOUSE_DOWN, _onMouseDownDragBtn );
this.addEventListener( MouseEvent.MOUSE_UP, _onMouseUpDragBtn );
}
else
{
this.removeEventListener( MouseEvent.MOUSE_DOWN, _onMouseDownDragBtn );
this.removeEventListener( MouseEvent.MOUSE_UP, _onMouseUpDragBtn );
}
}
// Retourne un bouton dropItem disponible
vue.getDropItemIdCandidate = function():MovieClip
{
for each( var dropVue:MovieClip in MovieClip(root).dropButtons )
if( !dropVue.dragItemId )
if( dropVue.hitTestObject( this ) )
return dropVue;
return null;
}
}

// Initialisation d'un bouton drop
function initDropButton( vue:MovieClip, itemId:int ):void
{
vue.itemId = itemId; // intialisation dynamique de propriété
vue.dragItemId = 0;
// Un drag item survol le drop item
vue.hiliteOver = function( bool:Boolean ):void
{
this.alpha = ( bool ? 0.4 : 1 );
}
}

// Un bouton drag item est 'Mouse down' pour 'drag'
function _onMouseDownDragBtn( evt:MouseEvent ):void
{
var vue:MovieClip = evt.currentTarget as MovieClip;
// place on top
this.addChild( vue );
var dropVue:MovieClip;
var dragView:MovieClip;

if( vue.dropItemId )
{
dropVue = this.dropButtons[ vue.dropItemId - 1 ];
dropVue.dragItemId = 0;
vue.dropItemId = 0;
}
vue.startDrag( false );
for each( dragView in this.dragButtons )
dragView.setInteractive( dragView == vue );

vue.rollOverDropBtn = null; // ajout propriété dynamique
vue.addEventListener( Event.ENTER_FRAME, _onDragItem );
}
// Un bouton drag item est 'Mouse up' pour 'drop'
function _onMouseUpDragBtn( evt:MouseEvent ):void
{
var vue:MovieClip = evt.currentTarget as MovieClip;
var dragView:MovieClip;

vue.stopDrag();

// Vérifier sur au-dessus d'un drop item disponible
var candidateDropBtn:MovieClip = vue.getDropItemIdCandidate();
var tweenGotoX:int;
var tweenGotoY:int;
if( candidateDropBtn )
{
tweenGotoX = candidateDropBtn.x;
tweenGotoY = candidateDropBtn.y;
// Jumeler
vue.dropItemId = candidateDropBtn.itemId;
candidateDropBtn.dragItemId = vue.itemId;
candidateDropBtn.hiliteOver( false );
}
else
{
tweenGotoX = vue.oriPos.x;
tweenGotoY = vue.oriPos.y;
}

var distance:Number = Point.distance( new Point( vue.x, vue.y ), new Point( tweenGotoX, tweenGotoY ) );
var duration:int = distance / 30;

duration = Math.max( 1, duration );
duration = Math.min( 8, duration );
vue.tweenX = new Tween( vue, 'x', Regular.easeOut, vue.x, tweenGotoX, duration, false );
vue.tweenX.start();
vue.tweenY = new Tween( vue, 'y', Regular.easeOut, vue.y, tweenGotoY, duration, false );
vue.tweenY.start();

for each( dragView in this.dragButtons )
dragView.setInteractive( true );

vue.removeEventListener( Event.ENTER_FRAME, _onDragItem );
}

function _onDragItem( evt:Event ):void
{
var vue:MovieClip = evt.currentTarget as MovieClip;
// Vérifier sur au-dessus d'un drop item disponible
var candidateDropBtn:MovieClip = vue.getDropItemIdCandidate();
if( candidateDropBtn && !vue.rollOverDropBtn )
candidateDropBtn.hiliteOver( true );
else if( !candidateDropBtn && vue.rollOverDropBtn )
vue.rollOverDropBtn.hiliteOver( false );
else if( candidateDropBtn != vue.rollOverDropBtn )
{
candidateDropBtn.hiliteOver( true );
vue.rollOverDropBtn.hiliteOver( false );
}
vue.rollOverDropBtn = candidateDropBtn;
}

// Le bouton validez est cliqué
function _onClickValidezBtn( evt:MouseEvent ):void
{
// Verifier que toutes les étiquettes sont placées
var tousPlaces:Boolean = true;
var dropBtn:MovieClip;
var bonneReponse:int;
for each( dropBtn in this.dropButtons )
if( !dropBtn.dragItemId )
{
tousPlaces = false;
break;
}

if( !tousPlaces )
{
this.messages_mc.gotoAndStop('pas_de_reponse');
return;
}

// Empecher interactivite partout
btn_validez.setInteractive( false );
btn_validez.gotoAndStop('dimmed');

for each( var dragBtn:MovieClip in this.dragButtons )
dragBtn.setInteractive( false );

var delaisInMilliseconds:int = DELAIS_AFFICHAGE_RESULTAT*1000;
this.timeoutId = setTimeout( afficherResultat, delaisInMilliseconds ); // creation propriete dynamique
}

function afficherResultat():void
{
var toutBon:Boolean = true;
var dropBtn:MovieClip;
var bonneReponse:int;
for each( dropBtn in this.dropButtons )
{
var reponseDonnee:int = dropBtn.dragItemId;
bonneReponse = BON_MATCH[ dropBtn.itemId ];
// Ajout propriété dynamique
dropBtn.succes = ( reponseDonnee == bonneReponse );
toutBon &&= dropBtn.succes;
}

// Afficher le résultat
this.messages_mc.gotoAndStop( toutBon ? 'bonne_reponse' : 'mauvaise_reponse' );

// Griser les blocs
var len:int = DRAG_ITEMS.length;
var ct:ColorTransform;
for( var ibloc:int = 1 ; ibloc <= len ; ibloc++ )
{
var blocBg:MovieClip = this['mc_blocReponse'+ibloc]['blocReponseBackground_mc'];
ct = new ColorTransform();
ct.color = COULEUR_BLOC_APRES_VALIDEZ;
blocBg.transform.colorTransform = ct;
}

for each( dropBtn in this.dropButtons )
{
var dragBtn:MovieClip = this.dragButtons[ dropBtn.dragItemId - 1 ];
dragBtn.gotoAndStop('reponse_placee');
// Afficher la couleur de bg du bouton
var color:uint = ( dropBtn.succes ? COULEUR_CADRE_BONNE_REP : COULEUR_CADRE_MAUVAISE_REP );
ct = new ColorTransform();
ct.color = color;
MovieClip( dragBtn['cadre_mc'] ).transform.colorTransform = ct;
}

// Ajout des bonne réponses si tout pas bon
if( !toutBon )
{
var delaisInMilliseconds:int = DELAIS_AFFICHAGE_BONNES_REPONSES*1000;
this.timeoutId = setTimeout( afficherBonnesReponses, delaisInMilliseconds ); // creation propriete dynamique
}
}

// Affiche le texte 'les bonnes reponses sont:'
function afficherBonnesReponses():void
{
clearTimeout( this.timeoutId );

this.l_tween = new Array(); // creation propriete dynamique
// Afficher le texte 'Les bonnes reponses...'
var bonneReponseTxtMc:MovieClip = this['mc_lesBonnesReponses'];
bonneReponseTxtMc.visible = true;
bonneReponseTxtMc.alpha = 0;

var fps:int = DUREE_FADE_BONNES_REPONSES*stage.frameRate;
var tw:Tween = new Tween( bonneReponseTxtMc, 'alpha', null, 0, 1, fps, false );
this.l_tween.push( tw );
// Afficher les étiquettes avec les bonnes réponses.
var len:int = DRAG_ITEMS.length;
for( var iItem:int = 1 ; iItem <= len ; iItem++ )
{
var originalDragBtn:MovieClip = this.dragButtons[ iItem-1 ];
var cl:Class = getDefinitionByName('dragBtn') as Class;
var placeMc:MovieClip = new cl() as MovieClip;
addChild( placeMc );
placeMc.alpha = 0;
tw = new Tween( placeMc, 'alpha', null, 0, 1, fps, false );
this.l_tween.push( tw );

placeMc.x = originalDragBtn.oriPos.x;
placeMc.y = originalDragBtn.oriPos.y;
// Afficher le bon texte
var bonneReponse:int = BON_MATCH[ iItem ];
var texte:String = DRAG_ITEMS[ bonneReponse - 1 ];
TextField( placeMc['field_text'] ).text = texte;
placeMc.gotoAndStop('bonne_reponse_affiche');
// Couleur bg
var ct:ColorTransform = new ColorTransform();
ct.color = COULEUR_CADRE_BONNE_REP;
MovieClip( placeMc['cadre_mc'] ).transform.colorTransform = ct;
}
}

// Le bouton validez a été survolé, effet grossissant
function _onRollOverValidezBtn( evt:MouseEvent ):void
{
var vue:MovieClip = evt.currentTarget as MovieClip;
vue.gotoAndStop('over');
}

// Le bouton validez quitte le survol, effet normal
function _onRollOutValidezBtn( evt:MouseEvent ):void
{
var vue:MovieClip = evt.currentTarget as MovieClip;
vue.gotoAndStop('off');
}



A voir également:

1 réponse

simon37 Messages postés 23 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 15 décembre 2015 10
2 juin 2011 à 09:50
il te faut te plonger dans l'équivalent des cookies pour flash, ie les "shared objects" cf un tuto a cette adresse http://www.journaldunet.com/developpeur/tutoriel/fla/040126flash_shared_objects1a.shtml
0