Volledige versie bekijken : Custom component plaatsen via addChild()
A.Dres
%Europe/Berlin %921 %2008, 22:06
Is het mogelijk om een custom component via addChild() direct op de state (of HBox) te plaatsen?
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import components.myComp
public function placeComp():void {
hb1.addChild(components.myComp);
}
]]></mx:Script>
<mx:HBox id="hb1">
<mx:Button label="Place Component" click="placeComp()"/>
</mx:HBox>
</mx:Application>
Flex 2 geeft een error Implicit coercion of a value of type Class to an unrelated type flash.display.DisplayObject.
Op de adobe live staat Example: Dynamically adding a Button control.
http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000931.html
Of probeer ik een methode die niet door Flex 2 wordt ondersteund?
theFlashWizard
%Europe/Berlin %026 %2008, 00:38
Zou je niet eerst een instance van je component maken voordat je hem probeert toe te voegen aan de displaylist?
Vandaar dat flash namelijk ook aangeeft dat je het type Class met DisplayObject verwart.
TheDutch
%Europe/Berlin %255 %2008, 06:08
Dat zou zo kunnen:
import components.myComp
public function placeComp():void {
hb1.addChild(new myComp);
}
A.Dres
%Europe/Berlin %584 %2008, 14:01
Super bedank theDutch en theFlashWizard.
De custom component wordt netjes aan Hbox "hb1" toegevoegd.
Voorts als ik een button -<> die een functie met removeChild(hb1) trickert <>- aan hb1 toevoegt wordt de Hbox
en dus ook component verwijderd.
Aansluitend op mijn vraag:
In mijn applicatie wordt custom component (myComp) via actionscript aangemaakt en toegevoegt aan een bijvoorbeeld canvas.
Als ik het juist heb wordt via "new MyComp" de component in het geheugen geladen.
De vraag is hoe kan men in flex 2 een custom component verwijderen (via bijvoorbeeld removeChild)
zodat de component beschikbaar is voor hergebruik (uit het geheugen?)
en opnieuw records uit een MySQL database kunnen worden ingeladen.
Ter verduidelijking myComp plaats een x aantal images en x aantal textArea 's.
Het aantal en content van de images en/of textArea's kunnen per keer wijzigen.
Nu ik toch bezig ben met vragen stellen:
Hoe wordt via actionscript een ID toegevoegd aan een custom component die door actionscript wordt gegenereerd.
myComp.id = "myComp_id";
of
this.id ="myComp_id";
geeft niet het juiste resultaat.
Aanvulling: (14:43);
In de actionscript van MyComp.as.
public var myVar = "Een tekst";
// -- In myAPP.mxml
<mx:Script>
<![CDATA[
var myCompAlias = new MyComp;
addChild(myCompAlias);
Alert.show(myCompAlias. myVar);
//geeft als result "Een tekst";
]]>
</mx:Script>
Met andere woorden moet je ipv een id myCompAlias gebruiken.
(Dit heb ik al eerder getest maar gaf een error nu werkt het gelukkig wel,
wellicht een type fout of zoiets)
theFlashWizard
%Europe/Berlin %622 %2008, 14:56
Door removeChild te gebruiken en dan de reference op null te zetten.
Alle UIComponents (en subclasses) hebben een id property.
Is het niet verstandiger eerst een behoorlijk boek over Flex te gaan lezen? Je bent nu wel erg, erg in het duister aan het tasten.
A.Dres
%Europe/Berlin %631 %2008, 15:08
Aanpassing vorige bericht opgenomen in dit bericht.
// In de actionscript van MyComp.as.
public var myVar = "Een tekst";
// -- In myAPP.mxml
<mx:Script>
<![CDATA[
var myCompAlias = new MyComp;
addChild(myCompAlias);
Alert.show(myCompAlias. myVar);
//geeft als result "Een tekst";
]]>
</mx:Script>
Met andere woorden moet je ipv een id myCompAlias gebruiken.
(Dit heb ik al eerder getest maar gaf een error nu werkt het gelukkig wel,
wellicht een type fout of zoiets)
theFlashWizard, Dank voor je antwoord.
Het is niet mijn gewoonte om vragen testellen op forums zonder eerst op het internet of in boeken te zoeken.
De boeken zijn aanwezig en daar lees en zoek ik ook natuurlijk in.
Helaas vond ik nog niet de juiste code.
Ik koos nu om enkele vragen te stellen, om sneller op het juiste spoor te worden gezet.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.