PDA

Volledige versie bekijken : flex variabele


behived
%Europe/Berlin %423 %2007, 10:10
Ben pas begonnen met flex...
Als ik in een functie een variabele aanmaak var i:Number = new Number (0); en ik probeer deze te gebruiken in een andere functie zegt de flex builder dat ik een undifined property i gebruik... hoe kan ik dit oplossen?

de volledige code:

<mx:Script>
<![CDATA[


public function createListener():void {
var i:String = new String("A");
saveButton.addEventListener(MouseEvent.CLICK, saveArray);

}
public function saveArray(e:Event):void {

tekst.text+=i;


}
]]>
</mx:Script>
Als er iemand goede tutorials sites ivm flex kent, dan hoor ik het ook graag.
Bedankt alvast voor de hulp.

edit: nu heb ik het aanmaken van de var buiten de functies gezet en nu werkt het wel, maar ik krijg nog wel een waarschuwing: 1084: var 'j' will be scoped to the default namespace: list2: internal. It will not be visible outside of this package.
Ik veronderstel dus dat er een betere manier is...?

edit2: ok, gewoon internal ervoor zetten:

<mx:Script>
<![CDATA[

internal var i:String = new String("A");
public function createListener():void {

saveButton.addEventListener(MouseEvent.CLICK, saveArray);

}
public function saveArray(e:Event):void {

tekst.text+=i;


}
]]>
</mx:Script>

TheDutch
%Europe/Berlin %690 %2007, 16:34
Behived, variables die je definieert in een functie zijn alleen beschikbaar in die functie. Variables die je beschikbaar wilt hebben binnen meerdere functies van je class definieer je als class variables (properties). Het is belangrijk welke ACS (Access Control Specifier) je daarvoor gebruikt om de beschikbaarheid te bepalen (let op dit is alleen nodig voor class properties):

public = Geen restricties. Kan overal aangesproken worden.
private = Kan alleen binnen de huidige class aangesproken worden.
protected = Kan zowel binnen de huidige class als alle subclasses worden aangesproken.
internal(default ACS) = Kan zowel binnen de huidige class als alle subclasses worden aangesproken mits de subclasses in dezelfde package zitten.

In jouw geval zou de "private" ACS de juiste keuze zijn. Leer dit soort dingen goed want dat is de basis van OO programmeren! :)

behived
%Europe/Berlin %716 %2007, 17:11
ik kan maar moeilijk goede tutorials vinden voor flex die deze elementen duidelijk behandelen...

alleszins al bedankt voor de verduidelijking...

TheDutch
%Europe/Berlin %744 %2007, 17:51
Dit is niet zo zeer Flex, meer basis OO programmeren. Wanneer jij Flex goed onder de knie wilt krijgen zou ik me als ik jou was erg gaan verdiepen in OO programmeren (koop boeken!). Daarnaast geeft het lezen van de LiveDocs over Flex 2 je een hele hoop leerstof, ook over OO programmeren met AS 3.0 :).

Waar OO programmeren voor Flash niet perse noodzakelijk was is het dat voor Flex wel!

behived
%Europe/Berlin %750 %2007, 18:00
dat is dus idd mijn probleem
op naar de boekenwinkel dus :)

TheDutch
%Europe/Berlin %763 %2007, 18:19
Ik zou je graag Essentials ActionScript 2.0 van Colin Moock willen aanraden. Ondanks dat het geschreven is voor ActionScript 2.0 legt het een hele goede basis voor OO programmeren in ActionScript. Wanneer je na het lezen van dat boek wat artikelen leest over Flex 2 (blogs, Adobe DevNet enzo) en de LiveDocs regelmatig voor informatie doorleest, dan denk ik dat je snel voldoende kennis zult hebben om mooie Flex 2 applicaties te maken :).

// EDIT: Trouwens nadat je dat boek van Colin Moock en misschien wat interessante artikelen online hebt gelezen is dit een erg goed boek om Flex 2 goed onder de knie te krijgen Adobe Flex 2: Training from the Source (http://safari.oreilly.com/0321496078).

behived
%Europe/Berlin %418 %2007, 10:02
Bedankt voor de info!