Deplacer un clip par AS et acceleration

Résolu
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010
- 17 janv. 2006 à 16:37
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010
- 18 janv. 2006 à 19:03
bonjour, je n'arrive pas a faire déplacer un clip..
Sur un rollover je voudrai que mon clip monte progressivement !
le code que j'ai ecrit est:
vitesse = 0.001;

puis dans un bouton :

on(rollOver)
{
for (i=1; i<100; i++)
{
droit._y -= i*vitesse;
vitesse= vitesse+0.0001;
}
vitesse = 0.001;
}

Ca ne marche pas, le clip est en bas puis des que je passe la souris dessus il va direct en haut, sans impression de mouvement (ondirai qu'il disparait et réapparaît en haut).

Si quelqu'un peut m'aider SVP


Zoso

7 réponses

daffy17
Messages postés
106
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
22 avril 2010

17 janv. 2006 à 17:07
normal qu'il aille directement en haut car la boucle for va etre analyser aussi rapidement que ton processeur le peux.
donx pour le cerveau humain impossible de voir les etapes de deplacement et il l'analyse donc comme un déplacement unique (bon c de la physique apres).
si tu veux executer un deplacement qui se vois met ton déplacement sur le onClipEvent("enterframe"){
function deplacement();
}
de plus évite de mettre des chiffres du genre 0.0001 car j'ai remarqué souvent que flash les arrondissait
il vaut donc mieux que tu utilise un grand nombre que tu redivisera le moment voulu

//Sur ton clip que j'ai appelé "monClip"
onClipEvent (load) {
var seDeplace:Boolean = false;
var maHauteur:Number = 0;
var maVitesse:Number = 100;
}
onClipEvent (enterFrame) {
if (seDeplace) {
if (this._y>maHauteur) {
this._y -= 10*maVitesse/1000;
maVitesse += 100;
}
else
{
seDeplace = false;
}
}
}

//Sur ton bouton
on (release) {
_root.monClip.seDeplace = true;
}

ensuite a toi de varier les valeurs pour donner l'effet désirer
il y'a surement d'autre facon mais celle-ci me conviens

Moi, tout ce que je veux, c'est aider mon prochain et que mon prochain m'aide
3
daffy17
Messages postés
106
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
22 avril 2010

17 janv. 2006 à 18:10
je te l'ai indiquer, le premier est a mettre sur ton clip qui contient la photo
onClipEvent (load) {
var seDeplace:Boolean = false;
var maHauteur:Number = 0;
var maVitesse:Number = 100;
}
onClipEvent (enterFrame) {
if (seDeplace) {
if (this._y>maHauteur) {
this._y -= maVitesse/100;
maVitesse += 100;
}
else
{
seDeplace = false;
}
}
}
le deuxieme a mettre sur le bouton(n'oublie de remplacer monClip par le nom de ton clip image)
on (release) {
_root.monClip.seDeplace = true;
}

la solution fonctionne car je l'ai testée et surtout pas de boucle for si tu veux un effet de deplacement(et encore moins while)

Moi, tout ce que je veux, c'est aider mon prochain et que mon prochain m'aide
3
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010

17 janv. 2006 à 18:00
Nan toujours pareil !!

J'ai mis maVitesse a 1 et je l'ai divisée par 10000000000 et ca fait toujours pareil.

Par contre j'ai laissé le code dans le bouton car en le mettant la où tu ma dis ca marchait pas

Peux tu me repréciser où exactement il faut le mettre ?


Zoso
0
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010

17 janv. 2006 à 18:17
Yes !! ca marche bien !!!

En fait y fallait que j'enleve le _root car je me trouve dans un clip...

Merci bien c'est très très cool.


Zoso
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010

17 janv. 2006 à 21:53
Re daffy, j'ai juste une question au sujet du code tout a l'heure...

Que sont les lignes: var seDeplace:Boolean = false;



var maHauteur:Number = 0;



var maVitesse:Number = 100;

A quoi sert le var devant ?

Ce sont des variables propres au clip ? des methodes ?



Merci


Zoso
0
daffy17
Messages postés
106
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
22 avril 2010

18 janv. 2006 à 09:38
oui se ce sont des variables propres au clip car elle sont déclaré au chargement de celui-ci(
onClipEvent (load) ).cependant elles reste accessible par les autres objet de ton animation par réferencement (_root, _parent, monClip.maVariable)

Le onClipEvent (enterFrame) exécute ton code à l'intérieur a chaque fois que la tete de lecture se déplace d'une frame et que ton clip s'y trouve.
Par exemple s'y tu à une animation à 24 images/sec et que ton clip se trouve sur 24 frames alors le code à l'intérieur sera éxecuté 24 fois en une seconde (si qui peut te permettre de temporisé une animation, malheureusement si ton animation est affiché en qualité inférieur, le nb d'images par seconde est faussé car le player lit une image sur 2 ou 3 - je ne sais pas exactement - )

En ce qui concerne spécifiquement mes variables :
- var seDeplace:Boolean = false;// permet de définir si le clip doit se déplacer
c'est le déclencheur qui autorise le deplacement à chaque enterFrame
- var maHauteur:Number = 0;// définit la hauteur à laquelle ton clip doit s'arreter
- var maVitesse:Number = 100;// définit la vitesse de déplacement
elle est incrémenté a chaque éxécution pour un effet accéléré comme tu voulais

Pour ce qui est du var devant la déclaration, voici un extrait de l'aide de FLASH 8

Déclaration des variables

Vous pouvez déclarer les variables sur une
image du scénario, directement dans un objet ou dans un fichier de classe
externe.


Définissez les variables à l'aide du mot clé
var
et respectez leurs conventions d'appellation. Comme dans
l'exemple suivant, vous pouvez déclarer une variable nommée
firstName
:



var firstName:String;


Lorsque vous déclarez une variable, vous lui affectez un type de données.
Dans le cas présent, vous affectez le type String à la variable
firstName
.

Affectation des types de données et typage strict

Dans Flash, les variables vous permettent de
stocker des valeurs dans votre code. Vous pouvez déclarer explicitement le type
d'objet d'une variable lorsque vous la créez. Cette opération est appelée le
typage strict.


Si vous ne déclarez pas de façon explicite qu'un élément contient un nombre,
une chaîne ou tout autre type de donnée, lors de l'exécution du script,
Flash Player tente d'identifier le type de données de cet élément lorsqu'il est
affecté. Si vous affectez une valeur à une variable comme indiqué dans l'exemple
suivant, lors de l'exécution du script, Flash Player évalue l'élément situé à
droite de l'opérateur et détermine qu'il est de type numérique :



var x = 3;


Dans la mesure où
x
n'a pas été déclaré par typage strict, le
compilateur ne peut pas déterminer son type. Ainsi, pour le compilateur, la
variable
x
peut être de n'importe quel type. (Voir la section [00001188.html#825256 Affectation d'un type de données].) Une
affectation ultérieure pourra changer le type de
x
. Par exemple,
l'instruction
x = "hello"
change le type de
x
en
chaîne.


ActionScript convertit toujours les types de données primitifs (tels que
Boolean, Number, String, null ou undefined) automatiquement lorsqu'une
expression en a besoin et que les variables ne
sont pas déclarées par typage strict.


Le typage strict des données offre plusieurs avantages lors de la
compilation. La déclaration des types de données (typage strict) permet de
prévenir et de diagnostiquer les erreurs de votre code au moment de sa
compilation. Pour déclarer une variable par typage strict, utilisez le format
suivant :



var variableName:datatype;


REMARQUE,
,
Le typage strict des variables est parfois
appelé typage fort.

Les incompatibilités de type de données déclenchent des erreurs de
compilation, le typage strict facilite le débogage lors de la compilation et
permet donc d'éviter d'affecter un type de données incorrect à une variable
existante. Lors de la programmation, le typage strict des données active les
conseils de code dans l'éditeur ActionScript (mais vous devez toujours utiliser
les suffixes de nom d'occurrence pour les éléments visuels).


L'utilisation du typage strict vous empêche d'affecter, par inadvertance, un
type de valeur incorrect à une variable. Flash vérifie les erreurs de typage
lors de la compilation. En cas de type de valeur incorrect, il affiche un
message d'erreur. Ainsi, l'application du typage strict permet de s'assurer que
vous ne tentez pas d'accéder à des propriétés ou des méthodes qui ne font pas
partie d'un type d'objet. Le typage strict permet également de bénéficier
automatiquement des conseils de code proposés par l'éditeur d'ActionScript pour
les objets.

J'espère que tout cela t'aura aider, à toi ou ceux qui le liront...

Moi, tout ce que je veux, c'est aider mon prochain et que mon prochain m'aide
0
jimmypage64
Messages postés
164
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
21 septembre 2010

18 janv. 2006 à 19:03
merci !

Zoso
0