FlexµÄTabNavigatorÖÐtab´¥·¢µÄʼþ
Getting Around Bug in Adobe Flex: TabControl Inline Event Handling for TabIndexChange Doesn't Work
I ran into this because I wanted to do something funky. I wanted my Flex app window to change PageStates (and size) whenever the TabIndex changed. Whether doing this kind of thing is wise in a user interface is yet to be seen -- I did it and it even strikes ME as a bit off the wall -- but it did solve the immediate issue. The immediate issue was that some of my tabs required a lot of space and some did not. This left a lot of ugly whitespace.
So, I figured, Flex (Actually Flash under the covers) must have an event handler for changing tabs. And I was rewarded very quickly: There is a "TabIndexChange" inline event handler. For the uninitiated, such a thing looks something like this:
<mx:TabNavigator id="tabnavigator1" tabIndexChange="myHandlerFunction()">
With most other events, this works just fine: When the event fires, the handler is called. But it simply doesn't work in this case. The handler function is never called.
There's a couple of ways to handle this. One way is to use a TabBar control rather than a TabControl. The TabBar basically gives you the look and feel of a tabset but more control over what is tabbed. And the tabIndexChange even calls the handler as one might expect.
I didn't want to do it that way, however. For one thing, I'm stubborn. For another, I already had all my controls arranged on the TabNavigator and I didn't want to rip it half to pieces to get functionality that I should already be getting.
Fortunately, there's a solution: Explicitly declare an event listener. That looks something like this:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="InitApp()">
<mx:Script>
<![CDATA[
import mx.events.IndexChangedE
Ïà¹ØÎĵµ£º
ÔÚ×Ö·û´®×ª»»ÎªintÀàÐͱØÐëʹÓà ×îºÃÈçÏ£º
var a:int=int(str);
ÉÏÃæ×ª»»Èç¹û²ÉÓÃÈçÏÂÇ¿ÖÆ×ª»»Ôò
var a:int =str as int;
µÃµ½Êý¾ÝΪ0 Ϊ´íÎóÊý¾Ý¡£
ÔÚÏîÄ¿ÖÐÁ½¸öintÏà¼Ó½á¹û³¬¹ýÒ»¸öintµÄ·¶Î§Ê±³öÏÖ´íÎó£¡
¾¹ý×Ô¼ºbug²éÕÒµ½´íÎóÔÒòÊÇÒòΪintÊý¾ÝÀàÐÍ·¶Î§Ì«Ð¡°Â£¡Ö»ºÃ¸ÄΪNumberÀàÐÍ¡£½á¹û²ÅÕýÈ·£¡ÔÎËÀ£¡
Ô ......
1-Ê×ÏÈдһ¸ö¼ÓÔØÍⲿswfÎļþµÄÀà
package Package
{
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public class CtmOb ......
ѧFlexÒ²ÓÐÒ»¶Îʱ¼äÁË£¬²Î¿¼ÁËÐí¶àÈ˵Ä×ÊÁÏ¡£Ò»Ö±Ïë×Å×Ô¼ºÐ´µã¶«Î÷·ÖÏí¸ø´ó¼Ò¡£ÈçÊÇ£¬×Ô¼º×¼±¸Ð´ÕâÑùµÄÒ»¸öRPGÓÎÏ·DEMOµÄϵÁС£»òÐí×Ô¼ºµÄËã·¨£¬½á¹¹ÉÏÉè¼ÆÓÐЩÐíÎÊÌ⣬µ«ÈÔÏ£ÍûÄܸø´ó¼Ò´øÀ´°ïÖú£¬²»ºÃµÄµØ·½ÇëPASSµô¡£¡£¡£~~ÓÎÏ·Ò²²Î¿¼ÁËÉîÀ¶É«ÓÒÊÖµÄÐí¶àÉè¼ÆË¼Ï룬ÔÚ´ËÏòÆä±íʾ¸Ðл¡£ËûµÄ²©¿ÍµØÖ·£ºhttp://w ......
ÔÚ.netÖУ¬ÎÒÃÇ¿ÉÒÔÓÃ"²ã"À´²¼¾Ö£¬ÊµÏֿؼþµÄÉÏÏÂÖØµþ¡£
ÔÚflexÀïÃ²ËÆÊÇûÕâ¸ö¸ÅÄîµÄ£¬flex°´Ä¬ÈÏÊÇÈÏΪÏȶ¨ÒåµÄÔÚϲ㣬ºó¶¨ÒåµÄÔÚÉϲ㣬²»ÂÛÊÇÊÂÏȶ¨ÒåµÄ¿Ø¼þ£¬»¹ÊÇ´úÂ붯̬Éú³ÉµÄ¿Ø¼þ£¬¶¼ÊÇÏÈÀ´¾ÓÏ¡£
µ«ÊÇflexÓÐ×Ô¼ºµÄµ÷Õûº¯Êý£¬×ÜËãÊÇÈÃÎҲ鵽ÁË¡£
ÈÝÆ÷Ãû.setChildIndex(displayObject,int)¾ÍÊǵ÷ÕûÕâ¸öÈÝÆ÷ÏÂËùÓп ......