CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Flash] j'ai une question pour luxregina

luxregina
luxregina
Niveau 10
11 janvier 2007 à 02:00:40

d´ailleurs, je vais en profiter pour mettre au point un truc qui pourrat etre utile dans ce topic : Je ne suis pas un codeur, je ne l´ai jamais ete, et ne le serai jamais :)

Parfois, au boulot, ou dans mes projets, je code pour depanner, mes collegues ou moi meme, mais je ne suis pas tres efficace a ca : ce n´est pas mon "metier"

L´idee de ce topic est de prodiguer une aide de base pour ceux qui souhaitent debuter en ActionScript. mais, LP, toi-meme, Fil en savez aussi long que moi sur L´AS, si ce n´est plus.
Bien sur, je pourrais essayer de repondre a des questions plus complexes, mais n´etant pas codeur "confirme", cela veut dire que cela me prendra beaucoup plus de temps que normal : aller dans l´aide de Flash, sur google pour trouver des explications, faire des essais de codes, etc ... Bref, lorsqu´un "vrai" codeur prendrait 5 minutes pour vous donner une reponse, moi, il me faudrait quelque chose comme 5 heures :)
Quand je ne bosse pas au bureau, je bosse sur mon jeu, ou me detend : venir sur ces forums fais partie des moments "detente" - de meme que repondre a des questions simples sur l´AS, dans la mesure ou je connais deja la reponse ... par contre, je ne m´alloue pas de temps pour les "devinettes-code" : je prefere utiliser ce temps a travailler sur mon jeu :)

J´espere que tu n´es pas vexe par mon message : j´essaye juste d´expliquer pourquoi je ne veux pas "m´amuser" a retrouver une erreur que tu as deja trouve :)

LPTheKiller_2
LPTheKiller_2
Niveau 9
11 janvier 2007 à 12:20:43

Hihi, moi j´ai trouvé ^^

C´est parce que tu créé un nouvel objet à chaque fois que tu passe sur l´image 1, sans supprimer l´ancien, donc ils incrémentent tous la variable nbclics :ok:

LPTheKiller_2
LPTheKiller_2
Niveau 9
11 janvier 2007 à 12:27:05

Pour remédier à ce problème, c´est tout simple.
Déjà on a pas besoin de créer un objet juste pour ça.

Le code suivant marche parfaitement :
stop();
nbclics = 0;
this.onMouseDown = function() {
nbclics++;
champClic.text = nbclics;
if (nbclics>9) {
play();
this.onMouseDown = function() {
};
// Ca c´est pour virer le onMouseDown (ça surrpime l´ancien)
}
};

(à placer sur la 1e image, à la place de l´autre)

luxregina
luxregina
Niveau 10
11 janvier 2007 à 14:16:33

Je crois que son idee, c´etait de jouer avec les objets et les ecouteurs ...

l´ideal, c´est de se garder une frame (ou une fonction) "init" ou toutes les declarations d´objets, de variables etc ne sont declares qu´une seule fois, et qui n´est jamais rappelee lors de l´execution du code, a l´exception d´un reset

LPTheKiller_2
LPTheKiller_2
Niveau 9
11 janvier 2007 à 16:52:53

Moi en général pour faire ça je met sur la première image :

function Reset(){reset}
if(!$Load){
Reset();
$Load = true
}

Comme ça il n´exécute reset qu´une seule fois, même si on repasse sur l´image.

luxregina
luxregina
Niveau 10
11 janvier 2007 à 17:03:20

oui, c´est l´esprit :) ( par contre, ton $ devant Load ...booooo ! :) on est pas dans PHP :))

LPTheKiller_2
LPTheKiller_2
Niveau 9
11 janvier 2007 à 17:53:08

J´avoue ^^
En fait c´est une vieille habitude, je cherchais un signe spécial pour faire partie du nom de la variable histoire que je ne réutilise pas ce nom dans une autre variable, par inadvertance.
Mais j´utilise aussi ce signe pour différencier le nom des fonctions de mon moteur physique.
Par exemple $Gravite(pt)

luxregina
luxregina
Niveau 10
11 janvier 2007 à 17:59:36

je plaisantais :) .. on a tous nos petites methodes : moi, mes noms de fonction ont toujours 2 syllabes ou plus ( ex : myFonction() ou bien commenceMonJeu() ...) chaque syllabe commencant par une majuscule, excepte la premiere.

Par contre, j´essaye que les variables restent monosyllabiques ( toto ) et si elles on deux ou plus, j´utilse _ pour differencier les syllabes (ma_variable)

_42_
_42_
Niveau 8
11 janvier 2007 à 20:58:46

luxregina--> me detend : venir sur ces forums fais partie des moments "detente" - de meme que repondre a des questions simples sur l´AS,

:lol: c´est tout a fait mon cas :content: , sauf que moi j´ai mes études ( plein d´études )

luxregina-->J´espere que tu n´es pas vexe par mon message : j´essaye juste d´expliquer pourquoi je ne veux pas "m´amuser" a retrouver une erreur que tu as deja trouve

bien sur que je comprend ton point de vue , c´est la meme cause pour moi vue que j´ai plein de boulot , j´arrive a pène de trouver un peu de temps pour flash :snif:

Hihi, moi j´ai trouvé ^^

LPTheKiller_2-->C´est parce que tu créé un nouvel objet à chaque fois que tu passe sur l´image 1, sans supprimer l´ancien, donc ils incrémentent tous la variable nbclics

:ok: , c´est ca oui a chaque retour au premier image il fait un Mouse.addListener(monObjet)de plus (donc il ajoute un ecouteur de plus :-))) )
a part votre méthode LPTheKiller_2 y´a une autre sans changer l´ancien AS
faudrait juste ajouter un Mouse.removeListener(monObjet) au début pour enlever l´ancien écouteur :-) ,

stop();
Mouse.removeListener(monObjet)//enlève l´ancien ecouteur //
nbclics = 0;
monObjet = new Object();
monObjet.onMouseDown = function(){
augmente de 1
nbclics = nbclics + 1;
trace(nbclics);
champClic.text = nbclics;
if(nbclics >= 10){
gotoAndStop(2);
}
}
Mouse.addListener(monObjet);

enfin moi ca m´a fallu du temps pour la trouver :)

LPTheKiller_2-->
function Reset(){reset}
if(!$Load){
Reset();
$Load = true
}

bonne idéé je l´a connais pas , :merci:

en faite LPTheKiller_2 ton moteur que je trouve vachemnt réussi -bravo :ok: - tu l´a fait avec des classe ou avec l´AS 1et2

LPTheKiller_2
LPTheKiller_2
Niveau 9
11 janvier 2007 à 21:42:52

Je l´ai pas fait avec des classes car à l´époque où je l´ai commencé (y´a déjà plus d´un an il me semble), je ne connaissais pas les classes ^^
C´est que à partir de movieClips, d´objets et de fonctions.
Voici par exemple la fonction $Gravite, que j´ai évoqué plus haut, c´est une des fonctions les plus simples :
// Gravite
function $Gravite(pt) {

if (!$Detecte(pt) && grav) {
if (pt._type == 1) {
pt.vitesse_y += _gravite/10;
}
}

}

_gravite c´est une constante : la constante de gravitation universelle appellée en physique "g".
$Detecte(pt) est une fonction qui renvoie true si le point est dans le sol, false s´il ne l´est pas.
(après s´il est dans le sol, il ne suffit pas de ne plus lui appliquer la gravité, il faut aussi le ressortir du sol, ce qui n´est pas une mince affaire).
grav : la variable qui indique si la gravité est active ou pas.

_42_
_42_
Niveau 8
11 janvier 2007 à 22:59:40

oui je comprend bien ton fonction LPTheKiller_2
et aussi "g" en physique

LPTheKiller_2-->l´ai commencé (y´a déjà plus d´un an il me semble), je ne connaissais pas les classes ^^

ben croie le ou pas ,moi j´ai commencé a ton age (16 ans ) et c´est toujours pour le fun , j´essaye toujours d´étre a jour :) .

je pari que t´a des problème au niveau du hitest parceque le hittest ne detecte que le carreau (bleu ) seulement mais pas votre mc , j´ai fait un petit moteur de collision rapidos , qui regle ce problème mais malheureusement c´est une classe pas en AS :

class hir3 {
public var z:MovieClip;
public var k:Number;
public var a:MovieClip;
public function boug(i:Number,perso:MovieClip ,circuit:MovieClip ){

z=perso.duplicateMovieClip("a0",0)
z._visible=false;
if (Key.isDown(Key.RIGHT)) {
z._x+=1;
}
if (Key.isDown(Key.LEFT)) {
z._x-=1;
}

if (Key.isDown(Key.UP)) {
z._y-=1
k=1}

if
((circuit.hitTest(z._x,z._y,true)==false)&&(circui
t.hitTest(z._x+z._width,z._y,true)==false)&&(circu
it.hitTest(z._x,z._y+z._height,true)==false)&&(cir
cuit.hitTest(z._x+z._width,z._y+z._height,true)==f
alse)){
perso._x=z._x
z._y+=1
perso._y=z._y

}
else {z._y+=0
z._x=perso._x;

z._y=perso._y;

}
}
}

puis dans le flash principale :

s._visible=false
var i:Number=0;
import hir2;
var ii1:hir2=new hir2() ;
this.onEnterFrame=function(){
if
(bo.hitTest(perso1)){circuit1.porte._width=0;bo.go
toAndPlay(2)}
else if
(fin.hitTest(perso1)){s._x=100;s._y=100;s._visible
=true}
ii1.boug(i,perso1,circuit1)}

:hum:

enfin je sais que c´est pas trés claire
bon si cela t´interesse je peut la convertir en AS 1 ou 2 :-) .

et vala un petit jeu juste avec ce moteur ( et qui contient la 2ème partie de As que j´ai posté )et qui explique un peu le truc ^^

http://img442.imageshack.us/my.php?image=hittestew1.swf

PS : essaye de terminer le jeu (faire sortir le le super heros ) ca demande boucoups de reflection :o))

LPTheKiller_2
LPTheKiller_2
Niveau 9
12 janvier 2007 à 21:19:36

Je crois que tu t´es beaucoup compliqué la vie, tout ça juste pour la collision d´un rectangle Oo

Sinon pour les hitTest de mes points, ils sont on ne peut plus simples car mes points, comme leur nom l´indique, sont ponctuels, je teste juste la collision en leur position X et Y.
Après j´attache un rond rouge au point pour qu´on puisse le visualiser et le déplacer, mais ce n´est pas le point en lui-même.

Sinon dans le genre trucs inutils pour se compliquer la vie, j´avais fait un moteur de recherche pour un logiciel que je dévelloppais pour un ami. Il recherche dans une liste de strings le mot qu´on a entré.
Mais je ne connaissais aucune fonction qui permet d´intéragir sur les chaînes, donc voilà ce que ça donnait :

stop();
for (i=1; i<21; i++) {
for (j=1; j<8; j++) {
temp = index.data["DVD"+i+"film"+j];
this[index.data["DVD"+i+"film"+j]] = undefined;
}
}
liste = "";
liste += "Résultats trouvés :<br>";
for (i=1; i<21; i++) {
for (j=1; j<8; j++) {
for (k=0; k<index.data["DVD"+i+"film"+j].length; k++) {
temp = index.data["DVD"+i+"film"+j];
if (index.data["DVD"+i+"film"+j].charAt(k) == recherche.charAt(0)) {
/**/
for (l=0, kp=k; l<recherche.length || kp<index.data["DVD"+i+"film"+j].length; l++, kp++) {

//trace(kp+"->"+index.data["DVD"+i+"film"+j].
charAt(kp)+" "+recherche.charAt(l)+"<-"+l);
if (index.data["DVD"+i+"film"+j].charAt(kp) == recherche.charAt(l)) {
if (l == recherche.length-1 && this[temp] == undefined) {
liste += "Dans le DVD"+i+" :<br>";
liste += "film "+j+" : \t"+index.data["DVD"+i+"film"+j]+"<br>";
this[temp] = "disable";
}
} else {
break;
}
}
}
}
}
}

(ah ah j´ose pas imaginer ta tête avec tous ces for ^^)

LPTheKiller_2
LPTheKiller_2
Niveau 9
12 janvier 2007 à 21:22:18

Enfin, aucune fonction à part charAt() et le basique mot clé "add" ou "+"...

_42_
_42_
Niveau 8
12 janvier 2007 à 22:04:22

lesquale35 >> :o)) .... et "gongratulation " pas "gongadulation" :ok:

LPTheKiller_2>> Et oui :ouch2: c’est la première fois que je vois un AS avec 3 for concécutif

y´a des trucs pas claire , mais bon , généralement je comprend ton AS . :)

pour éviter ces for et rendre ton AS plus cool t´airai pu faire :

for (i=1; i<168; i++) {
j=Math.ceil((i-1)/8)
temp = index.data["DVD"+i-j*8+"film"+j+1];

:)

LPTheKiller_2
LPTheKiller_2
Niveau 9
25 janvier 2007 à 22:29:08

Oui j´aurais pu mais je trouve ça plus clair comme c´est fait.
Et puis d´après les tests que je viens de réaliser, ton truc pour mettre un seul for prend environs 1.57 fois plus de temps au processeur pour être exécuté :)

Car j´ai fait un petit programme qui test le temps de calcul de deux fonctions et trace celui-ci.

Pour le télécharger :
http://pierre.parreaux.free.fr/Autres/OptizonsDansLaJoie.fla

J´ai fait plusieurs tests et remarqué certaines choses assez intéressantes (voir les commentaires).
Il faut écrire sa fonction dans le calque prévu pour, et pour que le prog la test il faut la mettre dans un des paramètres de "Execute", enfin vous comprendrez ^^

Bon les résultat sont assez variable.
Il vaut mieux fermer tous les logiciels qui tournent en même temps sur le PC pour faire les tests.

LPTheKiller_2
LPTheKiller_2
Niveau 9
27 janvier 2007 à 17:56:28

Ben vouzetes plus là ?

_42_
_42_
Niveau 8
28 janvier 2007 à 00:44:22

chui toujours là , je teste ca et je te repond

LPTheKiller_2
LPTheKiller_2
Niveau 9
04 février 2007 à 15:35:44

T´es mort ?

Lol.
Mais si t´as la flemme de mater ou de répondre, ou si tu veux pas pour une toute autre raison, je comprendrais hein...

Ou alors peut-être que mon bench a généré un bug dans ton ordinateur, et que celui-ci a explosé, générant une véritable explosion nucléaire et que tu es dans l´impossibilité en ce moment de faire usage de tes doigts pour taper au clavier ^^ (qui sait?)

luxregina
luxregina
Niveau 10
04 février 2007 à 18:32:50

si nucleaire elle est, l´explosion, je doute que seuls ses doigts soient handicapes :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware