begin process at 2012 05 26 03:44:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > CHAMP DE VISION AVEC OBSTACLES - AS3

CHAMP DE VISION AVEC OBSTACLES - AS3


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :Vision, Obstacle, Mouvement, Champ, Color Niveau :Initié Date de création :06/09/2011 Date de mise à jour :09/09/2011 13:41:41 Vu / téléchargé :3 107 / 185

Auteur : t_naulet

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


 Description

Des ennemis sur la scène regardent autour d'eux pour vous chercher. Leur champ de vision tient compte des obstacles qu'ils rencontrent. S'ils vous trouvent, ils vous foncent dessus.
Ce tutoriel est une adaptation d'un tutoriel AS2 que j'ai trouvé ici (http://www.flashkod.com/codes/CHAMP-VISION-AVEC-O BSTACLE-CIBLE-TROUVER_41550.aspx).
Par rapport un tutoriel initial en AS2, j'ai adapté le code pour le passer en AS3. J'ai également inclus une gestion dynamique des ennemis. Ils sont créés par un simple array en début de code.


 Conclusion

Pour diriger votre joueur, utilisez les fléches. Vous pouvez aussi maintenir la touche SHIFT enfoncée pour courir.
J'ai beaucoup modifié ce code depuis pour un jeu que je suis en train de finaliser mais j'ai préféré mettre ce code qui est à la fois court et assez simple plutôt que de mettre un code plus avancé et plus complexe.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 septembre 2011 13:41:42 :
Code non modifié mais ce fla est compatible CS4.

 Sources de la même categorie

Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN par pegase31
Source avec Zip UN JEUX DE VOITURE MULTIJOUEUR OU VOUS CREE VOTRE TERRAIN par hakim255
Source avec Zip JEUX DE TIRE VU DE HAUT par hakim255
Source avec Zip Source avec une capture ERYSOKOBAN V1.02 CS4 AS3 par VBtoTRASH
Source avec Zip MACHINE À SOUS SIMPLE AS3 par marylinepsyche

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRATEUR DE LUMIÈRE par sylbuggy
ADAPTER AUTOMATIQUEMENT LA TAILLE DE POLICE SELON LES DIMENS... par bat_2504
Source avec Zip Source avec une capture MOUVEMENT D'HERBES DANS LE VENT par claviskass
Source avec Zip Source avec une capture DEFILEMEDIA : COMPOSANT AS3 DE GESTION DE GALERIE DE MEDIA +... par tomboul
Source avec Zip CHAMP DE VISION AVEC OBSTACLE ET CIBLE À TROUVER par Slagt

Commentaires et avis

Commentaire de pegase31 le 06/09/2011 17:02:23 administrateur CS

Alors en voyant la source, je me suis dit "chouette, enfin un truc sympa qui rend bien et qui en plus à l'avantage de fonctionner parfaitement" ... Mais ..

Il y a toujours un "mais" dans ce cas, car c'est effectivement de l'AS2 traduit ...
Mais j'avoue ne pas bien saisir le but de l'avoir passé en AS3 si tu ne profites pas de la puissance de cette version de langage.

Quand je vois ça : "MovieClip.prototype.policier = function ()", ça me fait dresser les poils sur les bras ...

Comment dire sans te froisser ?
"Ben oui, mais NON, en fait ..."

Pas de classes des fonctions simplement arrangées pour que ça tourne en AS3 .. quel est l'intérêt final ?

Peg'

Commentaire de top30 le 07/09/2011 10:01:38

Pas compatible CS4 !
De plus semble n'être qu'une simple copie AS3 qui de plus selon Peg, est mal faite !

Commentaire de t_naulet le 07/09/2011 10:51:25

Désolé, c'est une version CS5...

Commentaire de pegase31 le 07/09/2011 11:57:29 administrateur CS

Le Code n'ayant rien de spécifique à cs5, il est possible d'exporter la source en cs4. Cs3 ne faisant pas parti des exports de la version cs5 (j'ai jamais compris pourquoi d'ailleurs).

Pourrais-tu faire cette manipulation ?

Peg'

Commentaire de t_naulet le 09/09/2011 13:43:59

Le fichier enregistré CS4 est en ligne.
@Pegase31 : je ne suis vraiment pas un expert des classes AS3. Mais il va bien falloir que je m'y mette alors si j'ai un peu de temps, j'essaierai de transformer ce fichier... Est ce que tu sais si cela pourrait avoir des répercussions sur les performances du swf ?

Commentaire de pegase31 le 09/09/2011 18:35:30 administrateur CS

Pour les perf, il y a de grandes chances, oui.
Mais c'est surtout pour la réutilisabilité de ton script que ça va avoir des répercutions.
Sans parler de la simplification du code que tu vas obtenir par la suite.

Peg'

Commentaire de tatactic le 12/09/2011 11:15:45

[quote]Pas de classes des fonctions simplement arrangées pour que ça tourne en AS3 .. quel est l'intérêt final ?

Peg'[/quote]
Si AS3 avait une classe main et vérifiait un peu plus les erreurs on n'aurait plus ce genre d'erreur non plus... Et moins de détracteurs pour flash en général.
Genre un exemple vite pondu et évidemment purement théorique quoiqu'il fonctionne:
package classes.main {
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
import flash.utils.getQualifiedSuperclassName;
// ???
import flash.display.MovieClip;
// ? abberation in AS3 ?
// The main class must extends flash.displayMovieClip
// to be the main MovieClip container
// a Main class should be welcome. as here bellow
// this will provide a more intuitive main Method like in java.

public class Appli extends MovieClip{

public static var application:Appli;
protected static var debug:Boolean = true;
protected static var classToString:String;
protected var instanceToString:String;
protected static const TAB:String = " ";
protected static const ARROW:String = TAB + "->" + TAB;
protected static const DEBUG_MODE_ON_MSG:String = ARROW + "Application is running in debug mode.";
protected static const DEBUG_MODE_OFF_MSG:String = ARROW + "Application debug mode is turned off.";
protected static const AS3_REM:String = "AS3 main class must extends flash.display.MovieClip";
protected static const PERSO_ERROR_CODE:int = 123123123;
// -----------------------------------------
// public "Appli"
// -----------------------------------------
public function Appli():void {
/** CONSTRUCTOR */
forceMain();
}
// -----------------------------------------
// public static void "main"
// -----------------------------------------
public static function main(...args):void{
args = toArrayOfString(args);
// force to type args as Array of String
log ("@args = " + args);
// Output @args in debug mode ON

classToString = getDefinitionByName(getQualifiedClassName(Appli)).toString();
application = new Appli();
log(application.toString() + " " + "object successfuly created");
}
// -----------------------------------------
// private static void "toArrayOfString"
// Check type of main(String[] string);
// -----------------------------------------
private static function toArrayOfString(args:Array):Array{
var argsArray:Array = new Array();
for (var n:int = 0; n < args.length; n ++){
try{
//log(getDefinitionByName(getQualifiedClassName(args[n])).toString());
if((getDefinitionByName(getQualifiedClassName(args[n])) == "[class String]")){
argsArray[n] = args[n]
}else{
var msg:String = "argument " + n + " is not a String.\n Fatal Error";
throw new Error(msg,PERSO_ERROR_CODE);
}
}catch(e:Error){
if(e){
throw new Error(e.message,e.errorID);
}
}
}
return (argsArray as Array);
}
// -----------------------------------------
// public static void "log"
public static function log(string:String):void{
if(debug == true){
trace(string);
}
}
// -----------------------------------------
// protected static Boolean "forceMain"
protected static function forceMain():Boolean{
try{
if(classToString == null){
throw new Error("Appli constructor must be called via the main Method",PERSO_ERROR_CODE);
}
}catch(e:Error){
throw e;
}
log(classToString + " " + "constructor called");
classToString = null;
return true;
}
// -----------------------------------------
// Boolean debugVersion setter and getter
// permit log action if set to true
// ommit them if set to false
public static function set debugVersion(bool:Boolean):void{
debug = bool;
}
public static function get debugVersion():Boolean{
return debug;
}
// -----------------------------------------
// String debug_status getter
// tells if the application is running in debug mode
// Output :
// -> Application is running in debug mode. (DEBUG_MODE_ON_MSG)
// or -> Application debug mode is turned off. (DEBUG_MODE_OFF_MSG)
//
public static function get debug_status():String{
var outputString:String = "";
switch (debugVersion){
case true:
outputString = DEBUG_MODE_ON_MSG;
return outputString;
break;
case false:
outputString = DEBUG_MODE_OFF_MSG;
return outputString;
break;
default:
var error:Error = new Error("Debug mode is not set.\nFatal ERROR.",PERSO_ERROR_CODE);
throw error;
break;
return error.message;
}
}
public override function toString():String{
// mark this method as override if this class extends MovieClip !
// unmark this method as override if this class DO NOT extends MovieClip !
return "[" + "object" + " " + "Appli"+ "]";
}
public function get objectToString():String{
var outputString:String = application.toString() + " extends ::" + getDefinitionByName(getQualifiedSuperclassName(Appli)) + " " + AS3_REM;
return outputString;
}
public static function get objectToString():String{
var outputString:String = getDefinitionByName(getQualifiedClassName(Appli)).toString() + " extends ::" + getDefinitionByName(getQualifiedSuperclassName(Appli)) + " " + AS3_REM;
return outputString;
}


}

}

Puis dans le FLA :
1 / Impossible de le lier via le panneau properties du fla.
2 / appel de main :
import classes.main.Appli;

/*
/* if Appli.debugVersion == true
/* permit log outputs
/* if Appli.debugVersion == false
/* ommit log outputs
*/
Appli.main("test","1");
trace(Appli.application);
/*
/* call the main method of void Appli
*/
trace(Appli.debug_status);
/*
/* trace the debug status by default;
/* output :
/* -> Application is running in debug mode.
*/
Appli.debugVersion = false;
/*
/* change the debug status by default;
*/
trace(Appli.debug_status);
/*
/* trace the new debug status;
/* output :
/* -> Application debug mode is turned off.
*/

trace(Appli.application.objectToString);
/*
/* output :
/* [object Appli]
*/
trace(Appli.objectToString);
/*
/* output :
/* [class Appli]
*/

/**
/* if "classes.main.Appli" extends MovieClip and
/* "classes.main.Appli" is specified in the
/* Class field of the properties pannel,
/* this will throw an Error.
/* Error: Appli constructor must be called via the main Method
/* at classes.main::Appli()
/*
/* (THIS FORCE THE CALL TO main method of the class)
/* force to call Appli like this :
/* - - - - - - - - - - - - - - - -
/* import classes.main.Appli;
/* Appli.main(String[] ...args);
*/
J'espère qu'Adobe fera un peu le ménage dans les codeurs en sortant AS4...

Commentaire de aerolyte le 12/09/2011 11:45:45

Bonjour, je ne comprends pas bien des éléments de ton post, tatactic.

- l'as3, fonctionne bien sur une classe main et je ne rencontre pas de pb sur la verification des erreurs.
- il est tout a fait normal que la class main etendent un displayobject (Movieclip ou Sprite).

Et je ne saisie pas l'interet de ton bout de code

Commentaire de tatactic le 12/09/2011 11:59:08

Oui, c'est théorique...
C'est juste que ça ne me semble pas évident de
- ne pas devoir construire le Stage
- d'avoir la classe principale qui doit étendre MovieClip d'office.
Par rapport à Java ça fait un peu drôle... C'est comme si la classe principale héritait d'office de Frame ou JFrame alors que bon...
Les éléments des Arrays pas typés en AS3 (équivalent à Vector)... D'où la vérification du typage des éléments fournis quand on fait un méthode(...args) où ...args n'est pas typé etc etc.
Bref juste une idée pour que AS3 soit plus strict lors de la prochaine version afin d'éviter à certains de coder parfois sans trop se soucier de trucs importants genre un throw qui ne doit pas spécialement avoir un catch...
Ce sont des petites choses qui font que certains ne prennent pas AS3 au sérieux (à tort selon moi) et qui donnent le loisir à certains de coder un peu à l'aveuglette.

Commentaire de pegase31 le 12/09/2011 12:03:23 administrateur CS

Effectivement, ton bout de code n'apporte pas grand chose au shmilblick .. il pourrit limite le visuel par sa longueur ...
L'import d'une classe principale n'ajoute rien aux performances de l'as3, et ce n'est qu'une façon plus claire de coder.

Le problème se situe au niveau de l'architecture de son code qui est bien trop AS2 et non pas à de simples détails qui n'apporteront rien à la performance de la source.

Peg'

Commentaire de aerolyte le 12/09/2011 12:15:00

Personnellement, je pense que c'est un avantage d'avoir la liberté ou non de typer.
Parfois il est meme indispensable de transtyper.
Le tout est d'avoir conscience de ce que cela implique ou non de le faire.

Quant au sérieux d'un language, ca me fait doucement rire, c'est plutot un qualificatif que l'on utilise pour un humain. Sans doute est-ce une marque de ce meme manque chez ces auteurs.

Quant l'obligation d'étendre (directement ou non) la class main avec un displyObject, je la comprend comme justement comme son affectation sur la scene permettant ainsi d'obtenir le "Stage".

Commentaire de pegase31 le 12/09/2011 12:25:55 administrateur CS

En AS3, langage de typage fort, le typage est synonyme de performance ... il n'y a qu'à comparer un Vector et un Array sur de gros traitements pour s'en convaincre...

Peg'

Commentaire de tatactic le 12/09/2011 14:24:40

Le bout de code (très maso je l'avoue!) on peut l'oublier en effet, c'et juste une façon d'illustrer une idée.
C'est long et inutile mais AS4 pourrait être plus strict afin d'éviter certaines choses.
Ou alors dans un environement de travail tomber enfin d'accord sur certaines habitudes à respecter pour ne pas avoir trop de mauvaises surprises lors de modifs un peu brutales quand on n'est pas là... :)
Il y a de plus en plus de graphistes qui se mettent à toucher à du code et ce n'est pas souvent très réutilisable, voir par moments assez cata ;)
Donc je sautais juste sur l'occasion pour dire qu'en effet je ne critiquais pas la source mais que j'étais d'accord avec le principe de "juste une traduction pour AS3", chose qui peut être assez gênante en prod.
Bon, pardon donc et autant pour moi :)

Commentaire de tatactic le 14/09/2011 10:48:56

Oups, et j'oubliais je parlais de flash et pas de flash buider ou flex qui quand on crée un projet rend les choses évidentes...
Juste que dans flash on n'est pas obligé de créer un projet et on peut sans problème surcharger la classe principale spécifiée dans l'onglet propriétés de flash pro (ce qu'on voit souvent)...

Évidemment dans un autre éditeur on verra plus normalement :

//Application.as
package{
import flash.display.Sprite;
import classes.UneAppli;

public class Application extends Sprite{
public function Application(){
UneAppli.main();
}
}
}
//et dans UneAppli.as
package{
public class UneAppli{
public static function main(...args):void {
//code
}
}

}

// vite fait dans le browser... mais ça doit être juste.
un constructeur si nécessaire (pas forcément, vu que en théorie on aura des propriétés et méthodes static)

Désolé de ne pas avoir été clair là-dessus, j'ai remarqué ça ce matin!!!
Sinon oui, le commentaire n'avait pas sa place et au lieu d'AS4 je devais plutôt dire prochaine version de flash (qui sera peut-être AS4) :)

Commentaire de gremlins7 le 16/09/2011 13:47:05

Ce code sent l'AS2 à plein nez, mais je préfère rester sur une note positive car en ce moment on peut pas dire qu'il y ai beaucoup de nouvelles sources de postées...
Je t'invite donc a regarder un peu l'AS3 en comment il s'organise. Il faut absolument se débarrasser de ses vieilles habitudes de codage AS2. Si on est à l'AS3 c'est pas pour rien !!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Accéder aux variables récupérées de PHP [ par mimi94 ] Bonjour,J'ai besoin d'un coup de main urgent.Avec FLash5, j'ai créé un symbole dans ma bibliothèque dans lequel j'ai mis un champ de texte dynamique. Maiheu! [ par Youki ] OK. Petit Probl&egrave;me:Je d&eacute;bute en flash et voici un de mes petits probl&egrave;mes:Quelque part dans l'application que je d&eacute;veloppe Besoin de mouvement... [ par Mulot1980 ] En fait j'ai fait un site en php et il est assez bien d'après les critiques qu'on m'en a fait... mais j'aimerais quand même mettre une intro en flash statique -> dynamique [ par buibui25 ] BuiBuiJe remplis un champ texte dynamique qui est dans un clip depuis un champ texte de saisie qui est sur _root. Losrque j'utilise clip._rotation, le mouvement ActionScript [ par giank ] est-ce que quelqun pourrait m' expliquer comment remplacer une interpolation de mouvement, par du script.j' ai compris comment faire bouger mon MC, ma Pb affichage avec createTextField [ par jleroy ] Bonjour,J'ai un problème lorsque je crée un champ de texte avec la méthode createTextField : si le champ est créé au niveau _root, il n'y a pas de pro Menu en mouvement [ par didier412 ] Salut,J'aimerais reproduire un menu du style de celui trouvé sur www.cfe.fr mais je sais pas comment faire. Qui peux m'aider ?MerciDidier Menu en mouvement [ par didier412 ] Salut,J'aimerais reproduire un menu du style de celui trouvé sur www.cfe.fr mais je sais pas comment faire. Qui peux m'aider ?MerciDidier Champ de texte dynamique et variable [ par Anthraxcite ] Bonjour, j'ai un problème au niveau d'un champ de texte qui doit passer devant mes objets dupliqués, le seul moyen que j'ai trouvé c'est de le transfo [FMX]Envoyer un mail avec ASP [ par flashjean ] Bonjour à tous,J'ai confectionné un *.swf comportant un petit formulaire d'inscription. Ce dernier permet à l'internaute de me faire parvenir on adres


Nos sponsors


Sondage...

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,733 sec (3)

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