|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 1 ![]() |
Salut à tous,
Voilà plusieurs jours que je suis bloqué sur un problème de cast J'ai une classe personalisée Vignette qui extends Sprite, les objets vignette sont contenus dans un objet canvas. Je tente de récupérer une à une chaque vignette pour appeller une méthode de Vignette. Voilà les techniques de conversion des specifications d'AS3 que j'ai testé: conversion implicite : var vignette : Vignette = canvas.getChildAt(i); à la compilation j'obtiens directement l'erreur "1118: Implicit coercion of a value with static type flash.display: DisplayObject to a possibly unrelated type Vignette" utilisation de cast var vignette : Vignette = Vignette( canvas.getChildAt(i) ); là ça compile mais une fois que la fonction contenant ce code est apellé j'obtiens l'erreur "1034: Echec de la contrainte de type : conversion de flash.display::Sprite@1a533f51 en Vignette impossible." utilisation de l'opérateur as var vignette : Vignette = canvas.getChildAt( i ) as Vignette; ça compile et à l'appel de la fonction Error "1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul". J'ai voulu vérifier la nature de vignette en traçant les valeurs ''vignette is Vignette", "vignette is Sprite" et "vignette is DisplayObject" et dans tous les cas j'obtiens false, assez bizarre!! Voilà je m'arrache un peu les cheveux alors j'espère que quelqu'un pourra m'aider. Merci. |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() Étudiant Inscription : décembre 2003 Messages : 916 ![]() |
Salut,
Visiblement tu dois avoir un problème de ciblage quelque part... Ta classe Vignette étend bien MovieClip ou Sprite ? As-tu essayé de tracer ce que tu récupères ??? @++ |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 1 ![]() |
Salut Isydore,
En premier lieu, vérifie que tu ais bien fait un import flash.display.Sprite dans ta classe Vignette et dans celle que tu utilise pour fouiller dans canvas. Si tu désires seulement fouiller chaque propriété d'un objet (de l'objet canvas qui lui contient tes objets Vignette), utilise une boucle for...in et trace des données pour commencer à comprendre ce qui ne va pas... Par ailleurs, je ne vois pas pourquoi tu tentes des type cast. Si tu cherches au mauvais endroit et que tu essaies des trucs qui n'ont rien à voir, c'est normal d'avoir d'autres messages d'erreur qui surviennent à gauche et à droite. Design Cyboïde |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : avril 2007 Messages : 126 ![]() |
Hummm...
Ta première erreur var vignette:Vignette = convas.getChildAt(i); est normale, car dans la doc, il est spécifié que getChildAt() renvoie un DisplayObject, pas un Vignette. Les deux autres solutions devraient fonctionner. Je ne comprends pas la seconde erreur, a moins que l'objet renvoyé pas getChildAt() ne soit pas une vignette, mais autre chose. La dernière erreur semble indiquer que getChildAt() t'as renvoyé "null", à savoir qu'il n'y avait pas d'objet à cet index dans la pile graphique... Je pense que ton problème réside plutôt ailleurs que dans le cast. Il semble que tu essayes de récupérer des objets qui n'existent pas, ou qui existent ailleurs que là où tu essayes de les trouver. Une solution simple, serait de renseigner un Array au moment ou tu crées tes vignettes. C'est plus facile de faire une bouche sur un Array que sur la pile graphique. Sinon, pour aller dans ton sens, essaye d'abord d'afficher ce que contient ta pile graphique. A savoir, le nombre d'enfants, puis le type des enfants. Avec un truc du genre: Code :
Mais essaye déjà de regarder dans ton canvas comme je te l'ai montré, t'y verras certainement plus clair. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com