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;
}
}
}