2010-03-16 55 views
0

是否有可能有一个子类这增加了美国的一套在基类中定义的状态?目前它看起来像我的子类覆盖了基类中的所有状态。Flex中,美国和继承

+0

你能举个例子吗? – Robusto 2010-03-16 19:00:20

回答

0

在你的子组件,创建声明状态的一个单独的数组,并在preinitialize事件将它们连接起来。看到这个例子。

<!-- MyParent --> 
<?xml version="1.0" encoding="utf-8"?> 
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="onCreationComplete()"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Button; 
      private function onCreationComplete():void { 
       for each(var state:State in states) { 
        var button:Button = new Button(); 
        button.label = state.name; 
        button.addEventListener(MouseEvent.CLICK, onClick); 
        addChild(button); 
       } 
      } 

      private function onClick(event:MouseEvent):void { 
       currentState = Button(event.target).label; 
      } 
     ]]> 
    </mx:Script> 
    <mx:states> 
     <mx:State name="Red"> 
      <mx:SetStyle name="backgroundColor" value="#FF0000" /> 
     </mx:State> 
     <mx:State name="Green"> 
      <mx:SetStyle name="backgroundColor" value="#00FF00" /> 
     </mx:State> 
     <mx:State name="Blue"> 
      <mx:SetStyle name="backgroundColor" value="#0000FF" /> 
     </mx:State> 
    </mx:states> 
</mx:VBox> 


<!-- MyChild --> 
<?xml version="1.0" encoding="utf-8"?> 
<MyParent xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" preinitialize="onPreinitialize()"> 
    <mx:Script> 
     <![CDATA[ 

      private function onPreinitialize():void { 
       states = states.concat(newStates); 
      } 
     ]]> 
    </mx:Script> 
    <mx:Array id="newStates"> 
     <mx:State name="Cyan"> 
      <mx:SetStyle name="backgroundColor" value="#00FFFF" /> 
     </mx:State> 
     <mx:State name="Purple"> 
      <mx:SetStyle name="backgroundColor" value="#FF00FF" /> 
     </mx:State> 
    </mx:Array> 
</MyParent> 


<!-- MyApp --> 
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    minWidth="955" 
    minHeight="600" xmlns="*"> 

    <MyParent width="50%" height="100%" /> 
    <MyChild width="50%" height="100%" right="0" /> 

</mx:Application>