Voici la classe:Comment remplir les paramètres requis dans une balise MXML personnalisée?
package fnc {
import mx.containers.Canvas;
public class Deck extends Canvas {
protected var _chipCount:int;
public function Deck(chipCount:int) {
/* Associate some chips with this deck */
_chipCount = chipCount;
}
public function get chipCount():int {
return _chipCount;
}
}
}
Voici le MXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="fnc.*">
<ns1:Deck horizontalCenter="0" verticalCenter="0">
</ns1:Deck>
</mx:Application>
L'exécution de cette application obtient cette erreur:
ArgumentError: Error # 1063: Argument non-concordance de comptage sur fnc :: Deck (). Prévu 1, a obtenu 0. à mx.core :: Conteneur/createComponentFromDescriptor() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ cadre \ src \ mx \ core \ Container.as: 3579] à mx. core :: Conteneur/createComponentsFromDescriptors() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ cadre \ src \ mx \ core \ Conteneur.as: 3493] at mx.core :: Container/createChildren() [C : \ autobuild \ 3.2.0 \ frameworks \ projets \ cadre \ src \ mx \ core \ Container.as: 2589] à mx.core :: UIComponent/initialize() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ framework \ src \ mx \ core \ UIComponent.as: 5370] à mx.core :: Conteneur/initialize() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ framework \ src \ mx \ core \ Container.as:2526] à mx.core :: Application/initialiser() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ cadre \ src \ mx \ core \ Application.as: 846] à Practi ce/initialize() [C: \ Documents and Settings \ LocalService \ Mes documents \ Flex Builder 3 \ Practice \ src \ Practice.mxml: 0] à mx.managers :: SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C: \ autobuild \ 3.2.0 \ frameworks \ projets \ framework \ src \ mx \ gestionnaires \ SystemManager.as: 2009] at mx.managers :: SystemManager/initializeTopLevelWindow() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ framework \ src \ mx \ managers \ SystemManager.as: 3234] at mx.managers :: SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[C: \ autobuild \ 3.2.0 \ frameworks \ projets \ framework \ src \ mx \ gestionnaires \ SystemManager.as: 3064] at mx.managers: : SystemManager/docFrameListener() [C: \ autobuild \ 3.2.0 \ frameworks \ projets \ cadre \ src \ mx \ managers \ SystemManager.as: 2916]
Ajout de chipCount="0"
au MXML l ike ceci:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="fnc.*">
<ns1:Deck chipCount="0" horizontalCenter="0" verticalCenter="0">
</ns1:Deck>
</mx:Application>
Obtient cette erreur de compilation:
gravité et description Chemin ressources Localisation Création temps Id propriété 'chipcount' est en lecture seule. Practice/src Practice.mxml line 3 1242656555328 26
Comment spécifier le nombre initial de puces?
Gah, tu me bats à elle! – quoo
Vous pouvez aller plus loin en utilisant le schéma d'invalidation UIComponent. Ajoutez une propriété "chipCountChanged", définissez-la sur true dans le setter pour chipCount, puis appelez invalidateProperties(). Ensuite, remplacez commitProperties() si chipCountChanged == true, traitez le changement à ce moment-là. C'est ainsi que la plupart des UIComponents intégrés fonctionnent. –
Je souhaite avoir compris ce que vous voulez dire - mais je ne peux pas sans le code exemple complet. –