Hi Gordon,
I wrote too soon! This DOES work (with a really minor rendering problem) :

public function writeln(msg:String):void{
            traceArea.text += msg + "\n";
            traceArea.validateNow();
            traceArea.vPosition = traceArea.maxVPosition;
}

The minor problem is that the first time I ran the app and the TextArea 
scrolled to the bottom, the scroll bar elevator appeared briefly well 
below the a scroll bar area. I can't make it do it all the time either 
so I'm much further ahead.
Thanks again,
-Brian

Brian Lesser wrote:

>Hi Gordon,
>Thanks for the suggestion, even though I couldn't get it to work, I 
>really appreciate your taking the time to explain how things work. It's 
>good to know that stuff.
>
>Here's what I tried that didn't work:
>
>public function writeln(msg:String):void{
>            traceArea.text += msg + "\n";
>            traceArea.vPosition = traceArea.maxVPosition;
>            traceArea.validateNow();
>}
>
>Earlier Jesse suggested the line below but I have no idea (being new to 
>Flex) how to incorporate that into a function:
>
><mx:TextArea id="my_ta" change="my_ta.vPosition = my_ta.maxVPosition" />
>
>Any ideas how I could get reliable scrolling to the bottom of a text area with 
>the least amount of code/complexity?
>
>Yours truly,
>-Brian
>
>
>
>Gordon Smith wrote:
>
>  
>
>>Try calling traceArea.validateNow() after setting the text.
>>
>>Here is some background about this...
>>
>>Flex relies heavily on "invalidation": you set a property but it doesn't
>>take effect until later. That allows you, for example, to set a bunch of
>>properties and have a component only redraw once, instead of redrawing
>>after each property is changed.
>>
>>There are three invalidation APIs on a UIComponent
>>
>>   invalidateProperties();
>>   invalidateSize();
>>   invalidateDisplayList();
>>
>>and most property setters call one or more of these. For example, the
>>setter for the 'text' property of a TextArea calls
>>invalidateProperties() and invalidateDisplayList().
>>
>>These APIs push the component onto various queues that the LayoutManager
>>maintains.
>>
>>When the Flash Player is about to render the tree of DisplayObjects onto
>>the screen, we "validate" the components in these queues by calling
>>three "validation" APIs, which bring the component up-to-date:
>>
>>   validateProperties()  -> commitProperties()
>>   validateSize()        -> measure()
>>   validateDisplayList() -> updateDisplayList()
>>   
>>The call to commitProperties() pushes the text into the underlying Flash
>>TextField.
>>
>>You can cause these three methods to be called prematurely (i.e., before
>>the player is about to render) by calling validateNow() on the
>>component.
>>
>>- Gordon
>>
>>
>>-----Original Message-----
>>From: [email protected] [mailto:[EMAIL PROTECTED] On
>>Behalf Of Brian Lesser
>>Sent: Wednesday, February 01, 2006 9:24 PM
>>To: [email protected]
>>Subject: Re: [flexcoders] Re: Scrolling a TextArea to the bottom?
>>
>>Thanks Mac,
>>You know, I just assumed it would work in Flex. In Flash I used to be 
>>able to call redraw() right after setting the vPosition property and it 
>>would work ok. I don't suppose there is a simple one liner that does the
>>
>>job in Flex??
>>Yours truly,
>>-Brian
>>
>>vardpenguin wrote:
>>
>> 
>>
>>    
>>
>>>You're doing it correctly, the problem is that when you set the
>>>vPosition, the 'msg' string has not been fully loaded into the
>>>textArea yet.
>>>
>>>You need to do some sort of check to make sure the textArea content 
>>>change has been completed, or wait a few moments before you set
>>>   
>>>
>>>      
>>>
>>vPosition.
>> 
>>
>>    
>>
>>>-Mac
>>>
>>>
>>>--- In [email protected], Brian Lesser <[EMAIL PROTECTED]> wrote:
>>>
>>>
>>>   
>>>
>>>      
>>>
>>>>Possibly really dumb question but shouldn't this scroll a TextArea to 
>>>>the bottom:
>>>>
>>>>public function writeln(msg:String):void{
>>>>     traceArea.text += msg + "\n";
>>>>     traceArea.vPosition = traceArea.maxVPosition;
>>>>}
>>>>
>>>>Where traceArea is a TextArea.
>>>>
>>>>It doesn't seem to work for me in Flex Beta 1.
>>>>
>>>>Yours truly,
>>>>-Brian
>>>>
>>>>  
>>>>
>>>>     
>>>>
>>>>        
>>>>
>>>
>>>
>>>--
>>>Flexcoders Mailing List
>>>FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
>>>Search Archives:
>>>   
>>>
>>>      
>>>
>>http://www.mail-archive.com/flexcoders%40yahoogroups.com 
>> 
>>
>>    
>>
>>>Yahoo! Groups Links
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>> 
>>
>>    
>>
>
>
>  
>


-- 
______________________________________________________________________
Brian Lesser
Assistant Director, Teaching and Technology Support
Computing and Communications Services
Ryerson University
350 Victoria St.
Toronto, Ontario                   Phone: (416) 979-5000 ext. 6835
M5B 2K3                            Fax: (416) 979-5220
Office: AB48D                      E-mail: [EMAIL PROTECTED]
(Enter through LB66)               Web: http://www.ryerson.ca/~blesser
______________________________________________________________________



--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to