2010-06-10 6 views
3

Comment utiliser la classe AS3 suivante dans MXML?Comment utiliser la classe AS3 en MXML?

classe AS3:

package mtm 
{ 
    import flash.display.MovieClip; 
    import flash.display.Shape; 

    public class TestClass extends MovieClip 
    { 

     public function TestClass() 
     { 
      var s:Shape = new Shape(); 
      s.graphics.beginFill(0x000000, 1); 
      s.graphics.drawRect(0, 0, 60, 60); 
      s.graphics.endFill(); 
      addChild(s); 
     } 
    } 
} 

MXML Document:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
     <mx:Panel width="75%" height="75%" paddingTop="10" paddingLeft="10"> 

    </mx:Panel> 
</mx:Application> 

Ai-je besoin de déclarer mon propre espace de noms? Je suppose qu'il est possible de faire quelque chose comme:

//Where 'mtm' is my own namespace 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mtm="com.mtm.*"></mx:Application> 

Et puis faire quelque chose comme ça? Je suis nouveau à Flex et MXML, mais pas nouveau à AS3. Merci!

Répondre

3

Oui, vous avez la bonne idée. Votre xmlns personnalisé est une URL relative, pointant vers les classes de composants personnalisées, donc si TestClass est dans un dossier appelé Components, vous devez mettre xmlns:mtm="components.*". Votre MXML est correct.

Voici le lien LiveDocs correspondant. C'est un bon endroit pour trouver des informations MXML/AS3: http://livedocs.adobe.com/flex/3/html/help.html?content=intro_3.html

+0

Merci! J'ajoutais "com" à l'espace de noms quand il n'y a pas de répertoire "com". Votre exemple spécifique a aidé à résoudre le problème. Et merci pour le lien! –

3

Il me semble que votre question a déjà votre réponse. Oui, vous devez déclarer votre propre espace de noms exactement comme vous l'avez fait; en le spécifiant sur l'étiquette de niveau supérieur - dans votre exemple d'application.

Et oui, alors vous pouvez référencer votre classe en utilisant cet espace de noms, comme vous l'avez dit dans votre exemple.

Avez-vous un problème spécifique? Puisque votre composant personnalisé n'élève pas UIComponent; Je soupçonne que vous pourriez rencontrer des bizarreries; car votre composant wwont 'possède des méthodes Flex Component LifeCycle telles que createChildren(), commitProperties(), et updateDisplayList() qui vont probablement perturber les classes du gestionnaire Flex.

+0

Merci, je ne connaissais pas 'UIComponent'. –

Questions connexes