Aide - Recherche - Membres - Calendrier
Version complète : Problème de ciblage
Centre de Formation Flash - Forums Adobe Flash > Adobe Flash > Programmation Actionscript > Actionscript 3
Joni
Bonjour à tous,

Je continue mon chemin de croix dans l'apprentissage de l'AS3 et je suis confronté à un sérieux problème de ciblage que je ne comprends pas.

Au début de mon code, je crée un movieClip comme ceci:

Action Script


var player_mc:MovieClip = new MovieClip();
this.addChild(player_mc);
player_mc.x = 100;
player_mc.y = 100;


Ensuite j'appelle une fonction qui va placer mes éléments dans ce MovieClip ainsi que les Listener comme ceci :

Action Script


function placeElements():void
{
// Mise en place du volume avec separateur
var volume_mc:VolumeFader = new VolumeFader();
var volume_separator:VolumeSeparator = new VolumeSeparator();
player_mc.addChild(volume_mc);
player_mc.addChild(volume_separator);
volume_mc.x = 20;
volume_mc.y = fond_princ_mc.height - 20;
volume_separator.x = 40;
volume_separator.y = fond_princ_mc.height - 15;

// Mise en place des ecouteurs
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_DOWN, onVolumeDown);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_UP, onVolumeUp);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_OVER, onVolumeOver);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_OUT, onVolumeOut);

}



Le problème survient dans les fonctions onVolumeXXX qui ressemblent à ceci :

Action Script


function onVolumeUp(evt:Event):void
{
volume_mc.volume_btn_mc.stopDrag();
volume_mc.volume_btn_mc.removeEventListener(MouseEvent.MOUSE_MOVE,onVolumeChange
);
}
function onVolumeDown(evt:Event):void
{
volume_mc.volume_btn_mc.filters = [filtDown];
volume_mc.volume_btn_mc.startDrag(false,new Rectangle(0, -100, 0, 100));
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_MOVE,onVolumeChange);
}
function onVolumeOver(evt:Event):void
{
volume_mc.volume_btn_mc.filters = [filtOver];
}
function onVolumeOut(evt:Event):void
{
volume_mc.volume_btn_mc.filters = null;
}

function onVolumeChange(evt:Event):void
{
sndVolume = sndChannel.soundTransform;
sndVolume.volume = volume_mc.volume_btn_mc.y * -0.01;
sndChannel.soundTransform = sndVolume;
}


A l'execution, Flash me sors cette erreur dans toutes mes fonctions ecouteurs :

Citation
1120: Accès à la propriété non définie volume_mc.



J'ai essayé de cibler avec player_mc en racine de volume_mc, mais là, à l'execution, Flash me dit que je tente d'accéder à un élément qui n'a pas de propiétés ...

Citation
TypeError: Error #1010: A term is undefined and has no properties.
at mp3Player_fla::MainTimeline/onVolumeOver()[mp3Player_fla.MainTimeline::frame1:378]


Je pense que mon ciblage de volume_mc n'est pas correct, mais je ne vois pas comment faire.

Merci d'avance,

Joni
monz
Citation (Joni @ Dec 1 2008, 10:13 AM) *
Bonjour à tous,

Je continue mon chemin de croix dans l'apprentissage de l'AS3 et je suis confronté à un sérieux problème de ciblage que je ne comprends pas.

Au début de mon code, je crée un movieClip comme ceci:

Action Script


var player_mc:MovieClip = new MovieClip();
this.addChild(player_mc);
player_mc.x = 100;
player_mc.y = 100;


Ensuite j'appelle une fonction qui va placer mes éléments dans ce MovieClip ainsi que les Listener comme ceci :

Action Script


function placeElements():void
{
// Mise en place du volume avec separateur
var volume_mc:VolumeFader = new VolumeFader();
var volume_separator:VolumeSeparator = new VolumeSeparator();
player_mc.addChild(volume_mc);
player_mc.addChild(volume_separator);
volume_mc.x = 20;
volume_mc.y = fond_princ_mc.height - 20;
volume_separator.x = 40;
volume_separator.y = fond_princ_mc.height - 15;

// Mise en place des ecouteurs
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_DOWN, onVolumeDown);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_UP, onVolumeUp);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_OVER, onVolumeOver);
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_OUT, onVolumeOut);

}

Le problème survient dans les fonctions onVolumeXXX qui ressemblent à ceci :

Action Script


function onVolumeUp(evt:Event):void
{
volume_mc.volume_btn_mc.stopDrag();
volume_mc.volume_btn_mc.removeEventListener(MouseEvent.MOUSE_MOVE,onVolumeChange
);
}
function onVolumeDown(evt:Event):void
{
volume_mc.volume_btn_mc.filters = [filtDown];
volume_mc.volume_btn_mc.startDrag(false,new Rectangle(0, -100, 0, 100));
volume_mc.volume_btn_mc.addEventListener(MouseEvent.MOUSE_MOVE,onVolumeChange);
}
function onVolumeOver(evt:Event):void
{
volume_mc.volume_btn_mc.filters = [filtOver];
}
function onVolumeOut(evt:Event):void
{
volume_mc.volume_btn_mc.filters = null;
}

function onVolumeChange(evt:Event):void
{
sndVolume = sndChannel.soundTransform;
sndVolume.volume = volume_mc.volume_btn_mc.y * -0.01;
sndChannel.soundTransform = sndVolume;
}


A l'execution, Flash me sors cette erreur dans toutes mes fonctions ecouteurs :
J'ai essayé de cibler avec player_mc en racine de volume_mc, mais là, à l'execution, Flash me dit que je tente d'accéder à un élément qui n'a pas de propiétés ...
Je pense que mon ciblage de volume_mc n'est pas correct, mais je ne vois pas comment faire.

Merci d'avance,

Joni


Salut,

Ce n'est pas un pb de ciblage.

C'est juste que tu définis volume_mc dans ta function placeElements(). Donc, ta var volume_mc n'existe pas à l'extérieure de cette fonction.

Joni
Mais quel boulet !!! Mais quel boulet !!! (je parle de moi, hein, pas de toi Monz)

Merci beaucoup Monz.

A+

Joni
paodao
Citation
Mais quel boulet !!! Mais quel boulet !!!


+1



























icon_mrgreen.gif

a+
Joni
C'est pas gentil de se moquer Paodao !

En plus c'est lundi matin, tout ça, tout ça ...


Et puis j'ai bien le droit de faire mon boulet de temps en temps, non ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.