Accès au objet sur la scène en utilisant les Class

Résolu
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 27 déc. 2010 à 23:56
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 - 2 janv. 2011 à 16:28
Bonjour,

je suis au cour de création d'un jeux 2D rpg simple mais j'ai eu un petit problème

j'ai créer une classe appelé "mure" pour empêcher mon héros de passé sur les arbres les maison... etc


package 
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.*;

public class Blockdown extends MovieClip  
{
public function Blockdown() 
{
              this.addEventListener(Event.ENTER_FRAME,pushdown);
  trace("constructeur");  
}

private function pushdown(e:Event) 
{
               if(this.hitTestObject(stage.hero))
  {
  stage.hero.x--;
  }
}
}
}


l'erreur :1119: Access of possibly undefined property hero through a reference with static type flash.display:Stage.

donc il est impossible de accédé a la scène et poussé mon héros comment peut je corrigé cette erreur ?

merci d'avance

2 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
29 déc. 2010 à 14:44
Hello,

Dans ton constructeur il faut passer un evenement ADDED_TO_STAGE, et ensuite seulement tu pourras accèder au Stage.

A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
2 janv. 2011 à 16:28
merci Orange73

la correction du Class et la suivant pour ce qui cherche un exemple simple

hero: et le MovieClip de nom joueur
block1: et un MovieClip qui vous pousse si vous le toucher ("un Mure")

package 
{

import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.*;
import flash.display.Sprite;


public class Blockup extends MovieClip
{
private var core:Object;
        private var hitMe:Collection = new Collection();
public function Blockup()
{
//this.addEventListener(Event.ENTER_FRAME,testup);
this.addEventListener(Event.ADDED_TO_STAGE,onadd);
}
private function onadd(e:Event):void
{
core = MovieClip(root);
addEventListener(Event.ENTER_FRAME,loop);
}

private function loop(e:Event)
{
if (this.hitTestObject(core.hero))
{
core.hero.y-=6;
}

}

}
};


vous pouver ajouter des Bloke qui pousse a droite gauche en bat ...etc
vous aller juste poussez le hero a la direction contraire de votre mure
core.hero.x-=6; ou core.hero.x+=6;
...


merci
3
Rejoignez-nous