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 confirmé
    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
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    new ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.CShip1 = new CShip1();
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    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
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    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
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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