IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

POO par l'utilisation du prototype


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 41
    Points
    41
    Par défaut POO par l'utilisation du prototype
    Bonjour tout le monde,

    Je suis actuellement dans le développement d'un petit jeu en javascript en utilisant le framework easeljs.

    Je voudrais créer un objet "CShip1" que je pourrais réutiliser à l'infinie. Cet objet est hérité de createjs.BitmapAnimation du framwork.

    Quand je l'instancie une fois, il n'a aucun problème. Quand je veux en instancier plusieurs, ils sont tous identique comme si toutes mes instances étaient des pointeur d'une variable unique.

    Voici plusieurs heure que je cherche et sans résultats. Pouvez-vous me dire ce qu'il cloche dans mon code ?

    Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    (function(){
        var screen_width;
        var screen_height;
     
        this.ListShip = new Array();
     
        this.init = function(){
            this.canvas = document.getElementById("testCanvas");
     
            this.ListShip.push(new CShip1(this, 1, 150,150,90))
            this.ListShip.push(new CShip1(this, 2, 10,10,90))
            startGame();
        }
     
        this.startGame = function () {
            this.stage = new createjs.Stage(this.canvas);
            this.stage.addChild(this.ListShip[0]);
            this.stage.addChild(this.ListShip[1]);
            (...)
        }
     
        this.tick = function () {
            this.stage.update();
        }      
    })();
    Mon objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    (function (window) {
     
        var CShip1 = function (Parent, Joueur_ID, x, y, degr) {
            this.initialize(Parent, Joueur_ID, x, y, degr);
        }
        var p = CShip1.prototype = new createjs.BitmapAnimation();
     
        p.tourcomplet = 2 * Math.PI;
        p.Rad2Degr = 180 / Math.PI;
     
        //comportement déplacement
        p.Speed = 5;
        p.RayonBracage = 10;
     
        p.Cible = null;
     
        p.BitmapAnimation_initialize = p.initialize;
        p.BitmapAnimation_tick = p._tick; 
     
        p.initialize = function (Parent, Joueur_ID, x, y, degr) {
            this._Parent = Parent;
            this._joueurID = Joueur_ID;
     
            (...)
     
            this.BitmapAnimation_initialize(this.spriteSheetChips1);
     
            (...)
        }
     
        p._tick = function() {
            this.BitmapAnimation_tick();
            // Avant tout, on demande ce que veut faire le vaiseau
            this._IAMove();
            p.x += p.Speed * Math.cos(p.rotation/ p.Rad2Degr);
            p.y += p.Speed * Math.sin(p.rotation/ p.Rad2Degr);
        }
        (...)
        window.CShip1 = CShip1;
    } (window));
    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    new ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.CShip1 = new CShip1();

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 41
    Points
    41
    Par défaut
    Salut,

    Je ne sais pas tester étant au travail mais quand je regardes les class existante du framework, ils n'utilisent pas le new à cet endroit (voir ici par exemple) alors que le comportement est comme celui que je désire.

    c'est ceci qui ferait la différence ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.createjs = this.createjs||{};
    Merci à toi

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    cette ligne le crée si il n'existe pas mais ne crée pas une nouvelle instance

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/01/2007, 10h01
  2. [POO] Comment l'utiliser convenablement.
    Par Sinclair dans le forum Langage
    Réponses: 23
    Dernier message: 25/07/2006, 21h12
  3. [POO] BUG PHP ?? Utilisation référence
    Par aurapp dans le forum Langage
    Réponses: 6
    Dernier message: 04/04/2006, 14h25
  4. Réponses: 3
    Dernier message: 09/03/2006, 15h12
  5. Réponses: 5
    Dernier message: 22/01/2006, 09h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo