Forums Développement Multimédia

Aller au contenu

Duplication d'un tableau provenant d'une classe

tableau classe as3 CODE Actionscript

23 réponses à ce sujet

#1 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 19 November 2012 - 13:48 PM

Bonjour à tous,

En parcourant un maximum le forum je n'ai pas trouver de solution à mon problème,
Peut-être ai-je mal cherché, possible...

Cependant voici mon problème :
J'ai créer ce fichier as3 à l'aide de classe : Module_Final.swf
Fichier joint  Final.zip   500.05 Ko   3 téléchargement(s)
(oui c'est un fichier zip car en important le .swf il manquait une partie (colorpicker)

donc "normalement" si vous sélectionner en premier la couleur vous pouvez ensuite, à votre guise changer la couleur des pixels.
Le bouton est sensé faire une remise à 0 mais c'est pas tout à fait au point...

Cependant mon problème n'est pas celui là mais ce qui suis :
En intégrant le tableau de pixel à une classe, et voulant l'importer dans ma classe ModuleFinal.as
L'importation est faite (vérification grace aux : "trace" ), cependant il m'est impossible de le faire afficher..
Erreur afficher :


TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.

Ci-joint le zip contenant la classe à problème...
Fichier joint  Duplication tableau.zip   502.32 Ko   5 téléchargement(s)

Merci d'avance pour votre aide,

PS : Si vous souhaitez que je poste le code directement, ou si vous savez comment faire en sorte que le swf s'importe correctement dite le moi et je m'occuperais de la modification. Le code peut paraître un peux brouillon, veuillez m'en excusez...

#2 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 November 2012 - 19:19 PM

Bonjour Kainry, et bienvenue,

Pour augmenter tes chances d'avoir une réponse, essaie toujours de faire en sorte que ton problème soit explicite à la seule lecture de ta question. Comme tu t'y es pris, cela demande de télécharger et décompresser 2 zip, puis d'ouvrir les fichiers, à seule fin de déterminer si oui ou non on comprend ton problème et si on peut t'aider. Ça décourage :)
Par exemple, là, j'ai eu la flemme!
Donc oui, poste le code directement, et le minimum possible, quitte à devoir fabriquer un exemple qui reproduit uniquement ton problème, et pas l'intégralité de ton projet. D'ailleurs, je ne compte plus le nombre de fois où j'ai trouvé la solution tout seul en faisant cela.
Tu trouveras surement beaucoup d'aide ici si tes questions sont bien posées.


Autre suggestion: Coche "Autoriser le déboguage" dans les paramètres de publication. Ton message d'erreur contiendra alors le numéro de la ligne de code qui déclenche l'erreur.

#3 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 19 November 2012 - 20:22 PM

Bonsoir lilive,

Merci pour cette information, j'hésitais justement au départ comment le présenter,
Ducoup je reprend :
Voici mon code de la création du tableau étant dans la classe Momo.as (tous est dans le même dossier) :


public function Momo() {
   trace ("j'suis là"); //test d'importation de classe = OK
   PlaceUnits(72);
  }
    public function PlaceUnits( amount:int ):void
  {
 
   module = new Array();
 
    //function initmodule(){ //nbUnit = 0;
    for(var i:int = 0; i < amount; i++){ //création du module à base du MovieClip Unit.
    trace("moi aussi mais tu me vois pas");// vérification de l'importation du tableau = OK
    unit = new Unit();
    unit.x = (i % nbUnitX) * 18.5 + unit.width * .5 // positionnement du MC sur l'axe des X + mise à l'échelle
    unit.y = int(i / nbUnitX) * 18.5 + unit.height * .5; // positionnemnet du MC sur l'axe des Y + mise à l'échelle
    module.push( unit );
    stage.addChild( module[i] );
    }
 

Et maintenant lorsque je l'appelle dans ma classe ModuleFinal.as :

import Momo;
(...)
Module = new Momo();
   stage.addChild(Module);
 

et voici l'erreur que j'obtient :


TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at Momo/PlaceUnits()
at Momo()
at ModuleFinal()

Si vous avez d'autres question n'hésitez pas...

Merci d'avance, et j'espère avoir été un peux plus clair cette fois-ci (:

#4 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 November 2012 - 20:42 PM

On comprend bien maintenant!

Quand tu crées un objet Momo avec new Momo() la méthode constructeur de Momo est appelé.
Dans cette méthode tu fais: PlaceUnits(72);
Et dans la fonction PlaceUnits tu as:
stage.addChild( module[i] );

stage est une propriété des DisplayObject (les MovieClip, les Sprite, les Shape, etc)
Si un DisplayObject est ajouté sur scène, stage est bien une référence à la scène.
Mais si le DisplayObject n'est pas sur la scène, stage vaut null.
Dans ton cas, vu que tu appelles PlaceUnits(72) avant le stage.addChild(Module), stage vaut null, d'où le message d'erreur
que tu obtiens en tentant de faire stage.addChild( module[i] )

C'est une erreur classique, qui se résoud de différentes manières, par exemple en écoutant l'évènement ADDED_TO_STAGE qui est diffusé quand un DisplayObject est ajouté à la scène.
Tu trouveras pleins d'exemples de comment faire en faisant une recherche sur le forum, avec par exemple les mots clés de recherche "stage 1009". (désolé, j'ai pas le lien idéal sous la main)

#5 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 November 2012 - 20:47 PM

Voir le messagelilive, le 19 November 2012 - 20:42 PM, dit :

(désolé, j'ai pas le lien idéal sous la main)
Il y a déjà ici la réponse de Goabonga: http://forums.mediab...ost__p__1079249

#6 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 19 November 2012 - 20:48 PM

Merci pour votre réponse rapide,

Je vais m'y pencher de suite, cependant je me permet de pauser une autre question, pour dupliquer le tableau qui apparaîtra (une fois qu'il sera visible (: )
Je pensais importer la classe plusieurs fois donc créer un tableau ainsi :

public var ctr : Array = [ Module, Module,];

stage.addChild(ctr);

ça devrait fonctionner comme ça? ou c'est pas si simple ?

Merci encore de votre réponse

#7 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 19 November 2012 - 21:56 PM

Nos derniers posts se sont croisés je crois, j'ai ajouté un lien vers un exemple avec le ADDED_TO_STAGE, je sais pas si tu l'as vu.

Pour répondre à ta deuxième question: On ne peut pas afficher deux fois un même objet d'affichage.


Une précision:

Importer une classe, c'est faire un
import UneClasse;
Ceci permet de pouvoir utiliser la classe UneClasse, codée dans le fichier .as de cette classe.

Ensuite, tu peux créer des objets de cette classe. On dit créer des instances de cette classe.
C'est ce que tu fais ici:
Module = new Momo();
Et c'est mieux de déclarer ta variable avant, je ne sais pas si tu l'as fait:
var Module:Momo;
Module = new Momo();
ou encore en plus court
var Module:Momo = new Momo();
Module est alors un objet, une instance de la classe Momo.
J'imagine que ta classe Momo hérite de MovieClip, ou Sprite, c'est pour cela que tu peux faire le
stage.addChild(Module);
Si ce n'est pas le cas et que Momo n'hérite pas de MovieClip, de Sprite, ou d'un autre DisplayObject, tu as un problème.
Si je te parle chinois, tu auras tout intérêt à lire le chapitre 4 du livre de T. Imbert http://forums.mediab...on/pratique_as3 qui parle des objets graphiques (les DisplayObject) et de la liste d'affichage. Ensuite tu pourras lire au chapitre 9 la section "Etendre les classes graphiques".
Il y a aussi les très bons tutos de Nataly:
http://forums.mediab...hageimbrication pour la liste d'affichage,
et http://forums.mediab...ases/classesqqc pour comprendre les histoire de POO (dans ton cas, créer une classe qui hérite de la classe MovieClip ou Sprite)




La suite:

Quand ceci sera clair, tu pourras créer des instances de la classe Momo, et les afficher.
Chaque instance sera un objet différent, qui pourra contenir les cases à colorier.
Dans la méthode PlaceUnits() tu pourras faire, plutôt que
stage.addChild( module[i] );
ceci:
this.addChild( module[i] );
Comme ceci, les cases du tableau seraient des enfants de l'objet. Tu pourras alors faire des choses comme:

var module1:Momo = new Momo();
var module2:Momo = new Momo();
module1.x = 0;
module2.x = 200;
addChild(module1);
addChild(module2);
 
Et tes tableaux colorés apparaitront les uns à côtés des autres.

Tu pourras si tu as besoin les mettre dans un Array:
var modules:Array = [ module1, module2 ];
et aussi par exemple:
modules.push( new Momo() ); // Crée un 3e module et l'ajoute au tableau

Ça va ;) ?

#8 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 19 November 2012 - 22:29 PM

Hey bah merci pour ces explications !!

Oui c'est tous a fait clair, j'ai tous compris (a mon grand étonnement),
donc tous d'abord pour l'appel de variable oui j'ai bien effectué le "public var Module:Momo;"

Mais serait t'il possible de créer les différents module automatiquement grâce à une boucle, ou si vous préférez,
Dire que le tableaux Modules créer des instances de Momo (si j'ai bien compris le principe des instances) tous les 200 px (pour prendre la continuité de ton exemple), et tous les 5 modules on retourne à la ligne jusqu'a créer 25modules?
Ou je devrais les écrire en dure ?

Désolé de toute ces questions à la suite mais je me permets de vous les posez tous de suite comme ça au moins c'est fait...

Encore merci pour vos explications

#9 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 00:18 AM

Je ne suis pas bien sûr de ce que tu cherches à faire en fait. Les noms et le vocabulaire que tu utilise prêtent un peu à confusion.
J'ai compris ceci, dis-moi si je me trompe (oui je dis "tu", c'est l'usage ici ;) )
- Tu veux afficher des damiers composés de plusieurs lignes et colonnes de carrés coloriables de différentes couleurs
- Dans ton vocabulaire, tu appelles ces damiers des "tableaux", et aussi des modules
- Un tableau est une instance de la classe Momo
- Chaque tableau est composé de plusieurs carré coloriables appelés "Unit"
- Tu veux pouvoir créer et afficher plusieurs tableaux, en les disposant côte à côte 5 par 5, sur 5 lignes, ces lignes étant les unes en dessous de autres.
J'ai bon? Si oui il faudrait choisir si tu appelles ça un tableau, un module, ou un Momo, ou autre chose
Par exemple si tu dis que ça s'appelle un damier, tu écris une classe qui s'appelle Damier, et pas Momo, et puis tu codes par exemple:


var damier1:Damier = new Damier(); // Un premier damier
var damier2:Damier = new Damier(); // Un deuxieme damier
var damiers:Array = [ damier1, damier2 ]; // Un array contenant tous les damiers
 

Sinon on s'y perd!

Autre exemple de confusion: tu appelles module une instance de la classe Momo, et en plus, dans le code de la fonction PlaceUnits(), tu as un tableau qui s'appelle lui aussi module et qui contient des instances d'Unit. C'est le bazar :mrgreen:

Pour ce qui est de placer des objets répartis sur des lignes et des colonnes tu as déjà le code qui fait cela, puisque tu arrives à placer correctement tes Unit.

Peux-tu éclaircir tout ça? D'ailleurs, si tu pouvais décrire quel est exactement ton but, ce serait plus facile de t'apporter une aide pertinente.


NB: La convention, en ActionScript, et d'écrire les noms de variables et de fonctions en commençant par une minuscule, et les noms de classes par une majuscule.

#10 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 00:46 AM

Merci pour l'information sur la convention je ne la connaissais pas ...

Tous d'abord je t'avouerais (à mon tour je me permets de dire tu), que mon code est basé sur du copy/paste baigner à ma sauce, ce qui rend les noms un peux extravertis, et également pourquoi Momo, Module, Tableau signifie la même chose pour moi car je me base sur une suite de test que j'expérimente et il est vrai que quand ça marche je pense pas à renommer tous correctement...

Donc pour ce qui est du projet, je vais tous d'abord te donner quelque explications sur les variables et noms utilisés...

Momo, Tableau, Module = Un Module contenant 72 Unit
Unit = 1 pixel

En ce qui concerne le projet je souhaiterais réaliser un générateur de code à la suite de la création d'une image, ce code ce génèrera sur un écran... (voici la fin de la fin)

Mais pour le moment je m'occupe uniquement de la duplication des modules, car il me paraissait plus simple pour la génération de code, je m'explique :

On va dire qu'une ligne de code est égale à ça en français : Ce "pixel" Appartenant au "Module" du "Conteneur" à tel "Couleur",

C'est pourquoi je créer l'objet "Unit" (représentant le Pixel) qui se génère dans un "Module" (72 px) qui par la suite ce "Module" fera partie du "Conteneur".
Dans ma logique il me paraissait plus simple de pouvoir générer le code si on découpait le procédé de la création de l'écran de pixel...

Tous ça pour dire que oui tu avais bien compris le fond de mes pensées, et maintenant j'espère que tu comprend un peux mieux où je voudrais en venir au final.

En tous cas je te remercie de ta réactivité et du temps que tu m'accorde

#11 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 10:15 AM

Voir le messageKainry, le 20 November 2012 - 00:46 AM, dit :

Tous ça pour dire que oui tu avais bien compris le fond de mes pensées, et maintenant j'espère que tu comprend un peux mieux où je voudrais en venir au final.
A vrai dire, c'est pas encore ça :)
Je ne comprends pas bien ce que tu essaies de réaliser (désolé :) )

Exemples de questions que je me pose:
- pourquoi il veut faire ça, un générateur de code?
- pourquoi plusieurs modules, plutôt qu'un grand module contenant plus de cases à colorier?
- que veut-il dire par "pixel"? Un pixel, quand on parle de flash, c'est un point à l'écran. Là je ne vois pas de pixels, mais des cases coloriables, qui sont elles-même des carré de plusieurs pixel
- pourquoi parle-t'il d'image? Je ne vois pas d'image, mais une grille, un damier de cases coloriables.

Ces exemples pour te dire que si tu pouvais expliquer avec des mots de tous les jours ton projet, en évitant les termes techniques comme module, pixel, conteneur, unit, cela aiderai beaucoup dans notre discussion. Tu pourrais éventuellement ajouter à ton explication des captures d'écran, des dessins que tu aurais réalisé dans un logiciel de dessin, pour faire comprendre le résultat final que tu veux.

Je sais, ça peut sembler difficile. Mais sans cela, je ne peux que répondre un peu à l'aveuglette, comme je l'ai fait jusqu'ici. D'ailleurs ces réponses te suffisent peut-être, car j'ai répondu à tes dernières questions et peut-être as-tu pu avancer depuis. A toi de voir ;)

Si ça se trouve, il y a une façon bien plus simple de réaliser ce que tu veux, mais en l'état, je ne peux pas dire...

Voir le messageKainry, le 20 November 2012 - 00:46 AM, dit :

Tous d'abord je t'avouerais (à mon tour je me permets de dire tu), que mon code est basé sur du copy/paste baigner à ma sauce
Il est bien possible également que tu aies besoin d'acquérir quelques bases d'actionscript supplémentaires pour t'en sortir avec ton projet (voir par exemple les tutoriels de Nataly que je t'ai donné en liens plus haut). Le copier/coller de bouts de codes qu'on ne comprend pas est une assez mauvaise façon de s'y prendre quand on débute. On voit ça souvent sur le forum, des personnes bloquées car il leur manque trop de bases, car elles sont dans un projet trop compliqué par rapport à leurs connaissances.

Voir le messageKainry, le 20 November 2012 - 00:46 AM, dit :

En tous cas je te remercie de ta réactivité et du temps que tu m'accorde
Avec plaisir :)

#12 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 11:38 AM

Alors pour commencer je vais essayer de te ré-expliquer le projet au plus simple.

Je souhaiterais créer un outil dynamique et interactif, avec le quelle on pourrait créer des images ou réaliser du pixel art (j'espère que ça te parle (: ), qui par la suite devra être transmis à un écran d'affichage.
L'utilisation du mot pixel est justement dût au fait de représenter un écran. Donc si tu préfère mes carrés blancs coloriables sont des représentations de pixel, (1 carré = 1 pixel).
Certe il est possible d'interagir directement sur une image bitmap en flash, mais le but ici est de créer soit même sont images... (laisser libre court à son imaginations ^^).

Citation

- pourquoi il veut faire ça, un générateur de code?

Donc pour répondre à cette question le générateur de code permettra par la suite, l'affichage de l'image créer.

Citation

pourquoi plusieurs modules, plutôt qu'un grand module contenant plus de cases à colorier?

Etant donner que le nombre de carré blanc peut accroître rapidement il était plus simple de les répertorier.
D'où mon explication du code en français : ce "carré" qui appartient au "groupe 1" qui appartient à "l'école A" à une "couleur" (j'ai changé un peux d'exemple pour que ce soit encore plus clair.. enfin je l'espère)

Citation

- que veut-il dire par "pixel"?

J'espère avoir répondu à cette question avec les réponses au dessus mais sinon je reprend : je me permets de parlé de pixel car au final la création sera transmise à un écran donc afin de "virtualiser" cette écran j'ai donc représenté un pixel par un carré blanc.

Citation

pourquoi parle-t'il d'image?

Justement la Grille que tu vois sera la base de ton image, c'est comme ouvrir un cahier de coloriage et colorier dans les traits, la on va dire que ta grille est ton coloriage et c'est a toi de faire ton image.

Citation

Le copier/coller de bouts de codes qu'on ne comprend pas est une assez mauvaise façon de s'y prendre quand on débute.

Lors de la lecture de cette phrase j'ai souris :), car il est vrai que faire du copier coller au p'tit bonheur la chance et quand ça marche on est content, hors moi j'aime bien connaître le pourquoi du comment c'est pour ça que j'ai beau prendre des bouts de code à droite à gauche je cherche avant tous a comprendre comment ça ce fait qu'il fonctionne, mais encore, je précise que j'fais parti de ceux qui aime écrire l'algorithme en français avant de codé (et oui ça existe encore le bon papier crayon), au moins comme ça je cible mes recherches, mais dès lors que je suis bloqué ou que ma logique n'étais pas la bonne (ce qui arrive de temps à autres ^^), je réfléchis à plusieurs manière de faire et je fais mes recherche, c'est pourquoi je tenais a préciser tous de même que je ne faisais pas qu'un simple copier/coller mais que derrière ça il y avait quand même un but.
Bien évidement je vais tous de même regarder les tutoriels de Nataly, car de je suis qui pour dire que je connais l'AS3 (: et également je me pencherais à la lecture du livre que tu ma citer plus haut :)

Citation

D'ailleurs ces réponses te suffisent peut-être, car j'ai répondu à tes dernières questions et peut-être as-tu pu avancer depuis. A toi de voir ;)

Donc oui peut-être que tes réponses sont suffisantes mais même ça ne m'empêche pas de vouloir explorer d'autre manière afin de rendre mon code plus intuitif, et également plus lisible pour tous, car c'est bien beau de pondre un truc qui fonctionne mais si personne peux s'en aider pour quoi que ce soit ou même soit même on s'y perd (ça m'est pas encore arrivé ^^) c'est pas la joie...
Pour info je me penche cette après midi sur les modifications à aporter avec l'aide que tu m'as apporté.

En tous cas j'espère avoir été au plus clair, sinon n'hésite pas je retraduirais ça...

Encore merci pour tous !

#13 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 12:22 PM

Tu fais un logiciel de dessin en flash alors?
Mais qui au lieu de dessiner au niveau du pixel travaille sur des unités graphiques plus grosses, des carrés de plusieurs pixels de côté. Dans la veine du pixel art. J'ai bon?

Je ne comprends pas ceci:
qui par la suite devra être transmis à un écran d'affichage

Qu'appelles-tu un écran d'affichage?
- une zone de rendu graphique, placée sur la scène à côté de l'éditeur proprement dit, qui affiche le résultat sous une autre forme (carrés coloriés plus petits? collés les uns aux autres?)
- une autre application flash qui communique avec l'éditeur?
- un autre écran physique (une application AIR en dualscreen)?

(Et mes excuses si je sous-estime tes connaissances de l'AS :) )

#14 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 12:41 PM

Non tu ne sous estime pas mes connaissances de l'AS au contraire tu me fais comprendre que je mes explications ne sont pas claire pour tous le monde et c'est la l'intérêt du truc (: (désolé si j'ai donné l'apparence d'un être arrogant et sur de soit ce qui est loin d'être le cas)

On peux dire que oui, il s'agirait d'un logiciel de dessin...

Pour ce qui est du pixel c'est surtout que pour la représentation de base faire un caré équivalent à 1px c'est pas très visible, et donc pas très pratique lors de modification de ces derniers. c'est comme si on avait "zoomé" sur une partie d'un écran.

Pour le principe de l'écran, donc il s'agit d'un outil offline qui une fois le code obtenu le transfèrera à un écran physique... pour être plus claire c'est comme si tu dessine sur papier, que tu le scan et tu le vectorise sous illustrator, le dessin papier serait l'outil as3, le scan serait le code généré, et la vectorisation sous illustrator serait l'affichage sur un écran.

J'espère avoir été précis dans les explications sinon n'hésite pas !

#15 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 13:07 PM

Voir le messageKainry, le 20 November 2012 - 12:41 PM, dit :

Pour le principe de l'écran, donc il s'agit d'un outil offline qui une fois le code obtenu le transfèrera à un écran physique... pour être plus claire c'est comme si tu dessine sur papier, que tu le scan et tu le vectorise sous illustrator, le dessin papier serait l'outil as3, le scan serait le code généré, et la vectorisation sous illustrator serait l'affichage sur un écran.
Mais concrétement, pour l'utilisateur, tu veux qu'il ait quoi:
- Une grande fenêtre dans laquelle il y a d'un côté l'éditeur, de l'autre le rendu?
- Deux fenêtre séparées, une pour l'éditeur, l'autre pour le rendu?
Le 2e choix va être largement plus compliqué à mettre en place.

Peux-tu fabriquer une image qui donnerait un aperçu du résultat que tu cherches? (un bon dessin valant mieux.....)

#16 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 13:55 PM

Fichier joint  Img_Présentation.jpg   314.18 Ko   12 téléchargement(s)

Donc voici une petite explication, qui maintenant aurait peut être dû être fait avant car il se pourrait qu'elle t'aide à comprendre cette petite complication ^^

Donc à ta gauche il y a la grille rempli de couleur et qui forme une image.

En haut à droite il y a le choix des couleurs (ColorPicker)

Ensuite nous avons un bouton reset

Puis "Générer le Code" (et c'est la que j'aurait peut être du préciser) : On va générer un fichier qui sera ensuite utiliser dans un autre programme pour ensuite faire le lien entre le code et l'écran physique...

Et ensuite un bouton pour le "zoom" permettant justement de voir a taille réel le rendu de l'image....

Est-ce plus clair ainsi?

#17 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 13:58 PM

Voir le messagelilive, le 20 November 2012 - 13:07 PM, dit :

Mais concrétement, pour l'utilisateur, tu veux qu'il ait quoi:
- Une grande fenêtre dans laquelle il y a d'un côté l'éditeur, de l'autre le rendu?
- Deux fenêtre séparées, une pour l'éditeur, l'autre pour le rendu?

Si j'ai bien compris ta question de base au final l'utilisateur aura directement sont rendu dans l'éditeur....

#18 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 18:38 PM

Si je comprends bien tu fais un éditeur de dessin qui permet de sauvegarder le dessin pour l'utiliser dans une autre application flash.

Pourquoi tu veux sauvegarder cela sous forme de code? Une simple image PNG ne ferait-elle pas l'affaire?

En tout cas, un bon croquis, ça aide. Je sens que le bout du tunnel est proche :D

#19 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 19:06 PM

Ouiii tu comprend bien !!

L'autre application n'est pas une application flash, d'où l'intérêt de créer un code.

Oui malheureusement c'est pas si simple que ça :smile:

Pour reprendre mon exemple du dessin sous illustrator, on va dire que mon application flash consiste a créer le dessin et le scanner, et pour ce qui est de vectoriser le dessins sous illustrator c'est le passage du code dans une autre application.

Y vois tu plus clair ducoup?

Pour en revenir au code, merci pour le "ADDED_TO_STAGE" ça marche niquel cependant un autre problème intervient (oui le bonheur du code c'est que quand tu règle un problème un nouveau intervient...

Je m'explique :

Il m'est impossible de sélectionner un carré blanc, le problème vient de ma fonction "CheckForSelection" (j'en suis presque sûr héhé ^^)

public function CheckForSelection():void
    {
   for each( var unit:Unit in Module) // Pour chaque unit présant dans le module
   {
   
    if( unit.hitTestObject( selectionSprite ) ) //Si le rectangle de sélection touche un pixel
    {
         unit.select();// Select the unit.
         test = true; // Variable  test = true permettant de garder la sélection...
         unit.transform.colorTransform = cT; // permet le changement de couleur durant la sélection
         //Test();
    }
    else if (test == false)
    {
         unit.deselect();// De-select the unit.
    }
   
   }
 
 
  }
 

Plus précisément dans la boucle "for each (var unit:Unit in Module)"
Il ne vois pas les carrées blanc qui sont sur le "stage"
Et pourtant j'ai essayé avec "Module:Momo" ; "stage" ; "Momo" etc.

Et bien-sûr aucune erreur intervient...

Je pensais utiliser un DispatchEvent.... mais bon c'est pas un évènement ma création de Damier
(J'ai utiliser ta description de mon projet Damier, Carré blanc afin que tu t'y retrouve tous de suite)

J'espère avoir été claire

Et encore une fois merci pour l'aide et le temps que tu m'accorde ^^

#20 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 20:49 PM

Ha! C'est pour utiliser dans un autre programme que du flash? Et c'est quoi, par curiosité?

Sinon pour ta dernière question, excuses-moi, mais je ne crois pas que je vais avoir la patience et l'intérêt de t'accompagner pas à pas dans toutes les étapes de ton projet :)

Comme maintenant je comprends ton but, je t'ai fait un exemple d'une autre façon de s'y prendre.
La démarche est celle-ci:
- Ton dessin est composé de pixels. J'utilise donc, pour mémoriser la couleurs des pixels, l'objet qui est dédié à cela en ActionScript, à savoir le BitmapData. Chaque pixel du BitmapData nommé "dessin" dans mon code contient le code de couleur d'un pixel du dessin.
- On peut très simplement afficher un BitmapData (avec un objet appelé Bitmap), mais si on zoome dessus avec scaleX et scaleY, il n'y a pas moyen d'avoir un résultat où on a le rendu que tu souhaites, en voyant les pixels comme de gros carré. Et c'est dommage, ça aurait bien simplifié ton projet
- Du coup j'ai créé une fonction qui colorie "à la main", point par point, les pixels d'un deuxième BitmapData, nommé aperçu dans mon code. Cet aperçu montre les pixels du dessin, mais en zoomant dessus. Si la taille de l'aperçu n'est pas suffisante pour montrer tous les pixels du dessin, seule une partie des pixels et visible.

Je te mets ceci en pièce jointe. Je n'ai pas codé la possibilité de changer de couleur, ni de zoom, ni l'emplacement de la partie zoomé, mais tout ceci est prévu (variable couleurCrayon pour la couleur de dessin, variable zoom pour le zoom, variables aperçuX et aperçuY pour le pixel qui doit s'afficher en haut à gauche de l'aperçu).

La deuxième version est juste un peu plus compliquée, avec la possibilité de dessiner en glissant la souris.
Si cette démarche te plait et que tu butes sur certains points je pourrais essayer de te les expliquer d'avantage. J'ai largement commenté mon code pour t'aider à le comprendre.


NB:Il y a surement mieux à faire niveau performances...

Fichier(s) joint(s)



#21 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 21:00 PM

Tous d'abord pour la suite du projet je ne sais pas réellement de quoi il s'agit, on va dire que pour ce projet je dois m'occuper de ça et que ça doit faire ça. (:

Ensuite je ne te le dirais jamais assez mais merci pour ton aide précieuse et ce gain de temps que tu ma permis d'avoir.

Merci pour l'aide et le code que tu ma donné, je pourrais ainsi me pencher dessus et avoir la possibilité de voir mon projet d'un autre oeil...

Je reposterais le code dans ce topic une fois fini afin que tu puisse voir l'avancé et l'évolution du programme et que tous le monde puisse en profiter des fois que ça peux servir ^^

Merci encore!

PS : si quelqu'un à une idée pour mon problème du message d'avant je suis preneur ! =D

#22 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 20 November 2012 - 21:14 PM

Voir le messageKainry, le 20 November 2012 - 21:00 PM, dit :

Je reposterais le code dans ce topic une fois fini afin que tu puisse voir l'avancé et l'évolution du programme et que tous le monde puisse en profiter des fois que ça peux servir ^^
Je regarderai cela avec plaisir.

Voir le messageKainry, le 20 November 2012 - 21:00 PM, dit :

PS : si quelqu'un à une idée pour mon problème du message d'avant je suis preneur ! =D
Pas sûr que tu aies des réponses, car déjà il faut lire nos nombreux messages pour arriver à la question!

En l'absence de réponse, je te conseille de chercher encore un peu seul.
Si tu ne trouves pas, tu peux ouvrir une nouvelle discussion. Je reprends alors mon conseil du début:
Pour poser ta question de façon claire et compréhensible, isole bien le problème, crée même un programme plus petit où tu essaies de reproduire le problème. souvent, faisant cela, on trouve la réponse tout seul avant d'avoir fini de poser la question. Ce qui démontre que l'effort d'énoncer clairement un problème est déjà un grand pas vers sa solution.

Bon courage!

#23 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 20 November 2012 - 21:52 PM

Merci pour l'info, je m'y penche dès ce soir (:

#24 Kainry

    Ceinture Orange

  • Members
  • PipPipPip
  • 46 messages

Posté 21 November 2012 - 11:51 AM

Bonjour !!

Si quelqu'un suivait le post pour ma dernière question j'ai trouver la solution.
Tous d'abord mes variables "unit" et "module" (Unit étant les carrés blanc et Module le tableau contenant les carrés)
Etait créer de tel sorte (dans une classe Momo):

public var module:Array = new Array();
public var unit:Unit = new Unit();
 
Et j'ai juste du a rajouter "static" pour pouvoir les utiliser dans ma classe Main
Ce qui donne ceci :

public static var module:Array = new Array();
public static var unit:Unit = new Unit();
 

Et dans ma fonction de CheckForSelection j'ai du modifier mes paramètre du for each
ce qui donne ceci :

public function CheckForSelection():void
    {
   for each( var unit:Unit in Momo.module) // Pour chaque MovieClip Unit dans le module de la classe Momo
 

Voili Voilou (:



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP