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

Flex Discussion :

Drag'n drop entre Flash et Flex


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Drag'n drop entre Flash et Flex
    Bonjour,

    je viens de me mettre a Flex, ayant déja quelques bases en Flash.

    je suis en train de faire un éditeur de plan dans lequel je veux placer des objets, et des personnages qui seront associés a certains objets.
    j'utilise un Sprite AS3 pour le plan (sur lequel il a d'autres Sprite pour représenter les différents objets et perso),
    le Sprite du plan je l'ai ajouté dans un UIComponent pour pouvoir l'afficher en Flex.

    j'ai une liste de personnages sur le coté dans un DataGrid, et je fait un drag'n drop de ces personnages sur l'UIComponent du plan pour les ajouter,
    j'arrive ensuite a savoir quel objet du plan est touché en utilisant la fonction AS3 getObjectsUnderPoint()

    jusque la tout va bien...
    mon probleme c'est que j'aimerai bien pouvoir faire la meme chose dans l'autre sens : le drag'n drop d'un Sprite du plan pour le remettre dans le DataGrid.
    Est ce que c'est possible ?
    j'ai vu la methode doDrag() du DragManager mais elle prends en parametre un UIComponent, et mes objets qui sont sur le plan sont des Sprite.


    Merci.

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Salut,

    Je pense en effet que la solution est d'utiliser la classe DragManager, pour tes sprites tu devrais pouvoir les caster en UIComponent je pense.

    Si tu souhaites des infos sur le DragManager j'avais fais 2 tutos sur omn blog :

    Utilisation simple du drag & drop avec les composants natifs du framework

    Gestion complete du drag & drop avec la classe DragManager

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Invité
    Invité(e)
    Par défaut
    merci pour la réponse,

    le cast d'un Sprite en UIComponent ne fonctionne pas.

    j'ai trouvé une astuce en fait qui est de créer un UIComponent avec visible="false" dans mon fichier mxml, et utiliser ce composant en faisant un addChild du Sprite au moment du doDrag() ...
    mais c'est un peu du bricolage, et Flex affiche juste un rectangle pendant le drag'n drop, pas l'objet Sprite.

    est ce qu'il y a un moyen de créer dynamiquement des UIComponent en AS3 ?
    pour afficher du texte correspondant a l'objet que je drag,
    ou aussi (dans l'autre sens) pour customiser l'affichage du drag'n drop d'un élément d'une Datagrid ?

  4. #4
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    pour afficher une image du composant que tu drag , utilise le dans la méthode doDrag le parametre dragImage. pour cela clone ton composant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var icon:IFlexDisplayObject = tonComposantSprite.clone();
    DragManager.doDrag(initiator, data, evt, icon);
    La méthode clone c'est à toi de la coder mais c'est simple il suffit de faire qq chose comme ceci (en supposant que _param1 est une donnée membre et que le constructeur en ai besoin):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function clone():TonComposantSprite
    {
       var clo:TonComposantSprite = new TonComposantSprite(_param1, ...);
       return clo;
    }

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Invité
    Invité(e)
    Par défaut
    je voit pour le parametre dragImage,
    par contre, mon Sprite est un Sprite Flash (flash.display.Sprite)
    donc il ne peut pas le transformer en IFlexDisplayObject

  6. #6
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    dans le pire des cas, tu imbrique ton Sprite dans un UIComponent pour le clonage... (un peu de la bricole mais j'ai pas trop d'outil sous la main pour t'aider)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var icon:IFlexDisplayObject = dragInitiator.clone() as IFlexDisplayObject;
    et ta méthode clone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function clone():UIComponent
    {
       var clo:TonComposantSprite = new TonComposantSprite(_param1, ...);
       var retour:UIComponent = new UIComponent();
       retour.rawchildren.addChild(clo);
       return retour;
    }

    PS: fait à la volée donc a revoir au niveau de la syntaxe

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]drag and drop entre deux listbox
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/06/2012, 14h37
  2. Drag and Drop entre 2 JTree
    Par Lebas dans le forum Composants
    Réponses: 1
    Dernier message: 07/02/2007, 11h59
  3. [Débutant(e)][VB.NET] Drag and drop entre 2 treeviews
    Par - Manuella Leray - dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/10/2005, 15h54
  4. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10
  5. Drag and Drop entre listbox
    Par zwoke dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/07/2004, 14h10

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