begin process at 2012 05 26 18:27:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

Comment empecher la modification de variables ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment empecher la modification de variables ?

jeudi 13 avril 2006 à 12:40:20 | Comment empecher la modification de variables ?

Thylo

Bonjour, je vient de réaliser un code pour generer aléatoirement le sol de mon jeu (un genre de Worms), mais horreur en mettant un _root.sol._x ++ sur la frame suivante pour pouvoir "scroller"  mon  décor, mon décor se réinitialisais a chaque passage sur la frame 1. Ce qui est normal en soit mais tres dérangeant quand on ne veut po avoir un décor qui se réinitalise aléatoirement tt les 1/12 de seconde. Sourtout que je ne peut pas mettre de stop() sur ma timeline sinon tt la programation existante de mon jeu tombe a l'eau...

Mon code pour le sol est :

_root.createEmptyMovieClip("sol", 1);
//Valeurs aléatoire des x et y pour la carte
A = 0;
AY = Math.round(Math.random()*(400-0))+50;
AB = Math.round(Math.random()*(100-0))+0;
ABY = Math.round(Math.random()*(400-0))+50;
B = 100;
BY = Math.round(Math.random()*(400-0))+50;
BC = Math.round(Math.random()*(100-0))+0;
BCY = Math.round(Math.random()*(400-0))+50;
trace(BC);
//
...ainsi de suite
//
K = 1000;
KY = Math.round(Math.random()*(400-0))+50;
KL = BC=Math.round(Math.random()*(100-0))+0;
KLY = Math.round(Math.random()*(400-0))+50;
L = 1100;
LY = Math.round(Math.random()*(400-0))+50;
with (_root.sol) {
    lineStyle(0, 0x0000FF, 100);
    beginFill(0xFF0000);
    moveTo(A, AY);
    curveTo(AB, ABY, B, BY);
//
...ainsi de suite
//
    curveTo(J+JK, JKY, K, KY);
    curveTo(K+KL, KLY, L, LY);
    lineTo(L, 0);
    lineTo(L, 400);
    lineTo(0, 400);
    lineTo(0, AY);
    endFill();
}

La question qui me trotte donc est comment empecher l'enterframe sur des variables ? Ne serais ce pas une histoire de onLoad quelque chose ?

Autre bete question tant que j'y suis, j'arrive a définir une fonction dans une "frame action" mais po dans un "movieclip action" est ce normal ?
test=function() {
}

??



vendredi 14 avril 2006 à 09:27:14 | Re : Comment empecher la modification de variables ?

cbil


Bonjour,

J'ai quelques idees pour ton probleme (mais je ne comprend pas pourquoi tu ne peux pas mettre de stop, une fois que ton sol est créé, il est créé) :

Ton premier probleme :

Si tu as besoin de boucler : met tes variables aleatoires dans la frame 1, et dans la frame 2 ton code qui doit etre executer a chaque fois. Au lieu de faire une boucle qui revient a la frame 1, elle revient a la frame 2, "gotoAndPlay(2)". Comme ca, tes variables auront une valeur aletoire uniquement lors du lancement de l'animation.

Enfin, ton code, j'ai l'impression, creer les lignes, sols..... dans l'animation pur (non ?), Utilise plutot un Clip (vide au depart) pour creer ton sol, ex :

Au lieu de faire  curveTo(J+JK, JKY, K, KY); fais clip.curveTo(J+JK, JKY, K, KY); .

Comme ca pour le scroller, le bouger.....tu as juste a manipuler le clip, du type : clip._x += 5 ...... (et place ton clip dans un masque peut-etre pour qu'il ne depasse pas visiblement la taille de l'anim).

Ce ne sont que des idees parce que j'ai pas tres bien saisie ton probleme....

Pour ton second probleme :
 (test=function() {})

Les fonctions créées-les tous dans la premiere frame (dans un calque "fonctions" par ex). Ensuite tu peux les appeler un par un n'importe ou en faisant : _root.nomDeLaFonction(); , Meme dans un movieClip.


A+
Et bonne chance !
Cbil
 
vendredi 14 avril 2006 à 11:00:17 | Re : Comment empecher la modification de variables ?

Thylo

En fait,pour etre plus clair, j'ai déja réalisé la majeure partie de mon jeu, ce qui est a dire : un perso animé ne se déplaçant pas reellement mais faisant défiler l'axe des x du décor sous lui, un ennemi doté d'une "IA" lui permettant de faire des rondes de garde et de detecter/suivre mon Perso selon un cone de vue Vert/Rouge, de ne pas detecter mon perso lorsqu'il est planqué derriere une caisse, de tirer une fois a portée de tir... Bref ça c pour le jeu en lui meme, mais fénéant comme je suis, je n'ai po envie de creer une campagne complete, donc generateur de maps, et plaçage aléatoire des ennemis et des caisses.

Mon probleme était donc de pouvoir creer ma map au chargement du jeu et de l'empecher de changer jusqu'a la prochaine fois. Mais ton idée de mettre mon code sur la frame un est po bete du tt. en plus cela me permetrait d'utiliser cette frame pour définir mes variables de chargement.
 
Je suis aussi a la recherche d'un tuto, lien,etc sur comment faire une gestion correcte d'un tir (la balle sort du canon de l'arme, canon attaché au MC bras dans le MC Perso, le bras faisant une rotation selon la souris)

Voila le code que j'avais trouvé.contenu dans le MC perso dans un enterframe mais je ne sais po pour quel obscur raison, les balles partent du milieu de l'écran quand je lui dit de prendre le _x du canon

if (openfire == 1) {
   this.Bras.Rocket._alpha = 0;
   this._parent.RocketRoot.duplicateMovieClip("Rocket"+k, k);
   //--------Pas moyen de faire partir les balles du canon lui meme
   this._parent["Rocket"+k]._alpha = 100;
   this._parent["Rocket"+k]._x = this._x-15;
   this._parent["Rocket"+k]._y = this._y-15;
   this._parent["Rocket"+k]._rotation = this.Bras._rotation;
   this._parent["Rocket"+k].progressx = 20*Math.cos(Math.PI/180*(this.Bras._rotation));
   this._parent["Rocket"+k].progressy = 20*Math.sin(Math.PI/180*(this.Bras._rotation));
   k++;
  }

//la suite du code est contenue dans le mc Rocket

onClipEvent(enterFrame){
 this._x += progressx
 this._y += progressy

if (this._x<=15) {
removeMovieClip(this);
}
if (this._x>=370) {
removeMovieClip(this);
}
if (this._y<=30) {
removeMovieClip(this);
}
if (this._y>=370) {
removeMovieClip(this);
}
}



Cette discussion est classée dans : math, lineto, random, round, sol


Répondre à ce message

Sujets en rapport avec ce message

AIDE: Math.random() [ par c0nsur ] Bonjour,  j'ai besoin d'aide pour faire un script très simple...je dois faire apparaitre 5 textfields  aux endroits X-Y donné au hazard...numX = Math. probleme avec une fonction et les occurences [ par PetiteNonne ] Bonjour, j'ai un problème avec une fonction que je suis en train de concevoir La fonction est placée dans un calque(action2) sur un symbole graphiqu adapter un script "onClipEvent" en un "onEnterFrame" [ par bofman ] bonjour, j'ai trouvé ce script qui sert à faire trembler un élément, hélàs le code doit directement être sur le clip car il est pointé par "this". o Erreur 1009 en actionscript 3.0 sur une animation de bouton fait en clip [ par TheBuzzer ] Je travaille présentement en Actionscript 3.0 dans la CS3 de Adobe, j'ai une erreur 1009 lorsque je demande à mon script dans mon clip utilisé comme b Math.ceil(), Math.floor() ou Math.round() ?! 8-) [ par pako56 ] Bonjour,alors je me suis fait mon préloader comme toute le monde, mais en m'inspirant d'exemples ici et là, j'ai vu que l'utilisait une de ces trois f duplicateMovieClip [ par dvdavan04 ] Bonjour à tous, Je suis nouveau sur le forum et dans flash aussi. J'ai récupérer 1 script sur flashfrance pour dupliquer mon clip b jeu de cartes (math.random) [ par ben1002 ] Bonjour,je voudrai savoir utiliser la fonction math.random dans un jeu de cartes :on clique sur la carte (bouton) et ça nous envoi sur l'image 1,2,3 o probléme de duplicateMovieClip() et masque [ par deedjy ] Bonjour, je fais bouger un clib que je nomme A avec de l'actionscript. ensuite je le duplique... jusquela tout va bien... mais mon soucie est que le t random entre 5, 10, 22 ou 30 [ par fjx ] bonjour,j'essaie de faire un random entre 4 nombres précis,pour exemple j'ai 5, 10, 22, 38 et je voudrais faire un choix aléatoire entre c'est 4 nombr faire une pause dans une animation [ par earthworms ] Bonjour a tous,J'ai trouvé un tutorial qui m'expliquait comment créer un feu d'artifice. Jusque la tout va bien, je suis tout content, je le modifie a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales