• Medlem
  • Stockholm
  • 2009-03-04 16:47

Hallå allesammans. Jag har skapat en mxml-komponent som jag har behov av att ge fem strängar till dess konstruktor (dynamiskt innehåll i 5st Label), så jag får då utöka den med en subklass skriven i ActionScript. Problemet som uppstår är att jag har ställt in att funktionen onLoad() skall köras då superklassen körs, och jag försöker överskugga denna i subklassen skriven i actionscript, men det blir fortfarande superklassens funktion som körs, dvs får Label:arna värdet av superklassens kårdkodade strängar istället för subklassens fem strängar som anges till konstruktorn.

Vad kan vara problemet?

mxml-koden (Action.mxml):

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="800" initialize="onLoad();" height="75" backgroundAlpha="0.0" borderStyle="none" cornerRadius="0">
	<mx:Script>
        protected function onLoad():void{
        	labelMainValue.text = "cat1";
        	labelSubValue.text = "cat2";
        	labelAmount1Value.text = "val1";
        	labelAmount2Value.text = "val2";
        	labelCommentValue.text = "comment";
        }
    </mx:Script>
	
	<mx:Button x="0" y="0" width="800" height="75" enabled="false" id="background"/>
	
	<mx:Label x="10" y="10" text="Handlingstyp:" id="labelMain"/>
	<mx:Label x="208" y="10" text="Kategoti:" id="labelSub"/>
	<mx:Label x="380" y="10" text="Mängd 1:" id="labelAmount1"/>
	<mx:Label x="554" y="10" text="Mängd 2:" id="labelAmount2"/>
	<mx:Label x="17" y="47" text="Kommentar:" id="labelComment"/>
	
	<mx:Button x="728" y="8" label="-" height="57" width="62" id="buttonAdd" fontSize="12"/>
	
	<mx:Label x="100" y="10" width="100" id="labelMainValue" textAlign="left"/>
	<mx:Label x="272" y="10" width="100" id="labelSubValue" textAlign="left"/>
	<mx:Label x="446" y="10" width="100" id="labelAmount1Value" textAlign="left"/>
	<mx:Label x="620" y="10" width="100" id="labelAmount2Value" textAlign="left"/>
	<mx:Label x="100" y="47" width="620" id="labelCommentValue" textAlign="left"/>
</mx:Canvas>

ActionScript-koden (TestAction.ac):

package components{
	import flash.events.Event;
	
	public class TestAction extends Action{
		private var cat1:String;
		private var cat2:String;
		private var val1:String;
		private var val2:String;
		private var comment:String;
		
		public function TestAction(a:String,b:String,c:String,d:String,e:String){
			super();
			cat1 = a;
			cat2 = b;
			val1 = c;
			val2 = d;
			comment = e;
		}
		
		public function setValues(_cat1:String,_cat2:String,_val1:String,_val2:String,_comment:String):void{
			cat1 = _cat1;
			cat2 = _cat2;
			val1 = _val1;
			val2 = _val2;
			comment = _comment;
        }
        
        override protected function onLoad():void{
        	labelMainValue.text = cat1;
        	labelSubValue.text = cat2;
        	labelAmount1Value.text = val1;
        	labelAmount2Value.text = val2;
        	labelCommentValue.text = comment;
        }
		
	}
}