Hier ist die Klasse:Wie fülle ich erforderliche Parameter in einem benutzerdefinierten MXML-Tag?
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;
}
}
}
Hier ist der 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>
Ausführen dieser Anwendung dieser Fehler wird:
Argumenterror: Error # 1063: Mismatch Argument Zahl auf FNC :: Deck (). Erwartete 1, erhalten 0. bei mx.core :: Container/createComponentFromDescriptor() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ core \ Container.as: 3579] bei MX. core :: Container/createComponentsFromDescriptors() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ core \ Container.as: 3493] bei mx.core :: Container/createChildren() [C : \ autobuild \ 3.2.0 \ Framework \ Projekte \ Framework \ src \ mx \ core \ Container.as: 2589] bei mx.core :: UIComponent/initialize() [C: \ autobuild \ 3.2.0 \ Frameworks \ projekte \ framework \ src \ mx \ core \ UIComponent.as: 5370] bei mx.core :: Container/initialize() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ core \ Container.as:2526] unter mx.core :: Application/initialize() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ core \ Application.as: 846] bei Practi ce/initialize() [C: \ Dokumente und Einstellungen \ LocalService \ Eigene Dateien \ Flex Builder 3 \ Praxis \ src \ Praxis.mxml: 0] bei mx.managers :: SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ Manager \ SystemManager.as: 2009] bei mx.managers :: SystemManager/initializeTopLevelWindow() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ managers \ SystemManager.as: 3234] unter mx.managers :: SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ Manager \ SystemManager.as: 3064] bei mx.managers: : SystemManager/docFrameListener() [C: \ autobuild \ 3.2.0 \ Frameworks \ Projekte \ Framework \ src \ mx \ manager \ SystemManager.as: 2916]
Hinzufügen von chipCount="0"
zu dem MXML l diese ike:
<?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>
Ruft diesen Compiler-Fehler:
Severity und Beschreibung Pfad Resource Location Erstellungszeit Id Property 'Chipcount' ist schreibgeschützt. Practice/src Practice.mxml Zeile 3 1242656555328 26
Wie lege ich die anfängliche Chipanzahl fest?
gah, Sie schlugen mich darauf! – quoo
Sie können einen Schritt weiter gehen, um das UIComponent-Invalidierungsschema zu verwenden. Fügen Sie eine Eigenschaft "chipCountChanged" hinzu, legen Sie sie im Setter für chipCount auf "true" fest und rufen Sie anschließend invalidateProperties() auf. Überschreiben Sie dann commitProperties(), falls chipCountChanged == true, und verarbeiten Sie die Änderung zu diesem Zeitpunkt. So arbeiten die meisten integrierten UIComponents. –
Ich wünschte, ich hätte verstanden, was du meinst - aber ich kann nicht ohne den vollständigen Beispielcode. –