tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

YUI Frameworkの挙動

svnのサンプルYUI Frameworkの作者さんらしき方のページを参考にいろいろ試してみたところ、結論としてはStateやViewStackで切り替える対象の中に、さらにmx.containersパッケージのタグが含まれているとうまく動かないようです。


検証用に簡単なサンプルを作ってみました。

ViewStackTestMain.mxml



	
	


examples/yui/viewstack/view/ViewStackTestView.as


	
		
			
		
		
			
			
				
			
		
	

examples/yui/viewstack/logic/ViewStackTestViewLogic.as

package examples.yui.viewstack.logic {
	
	import flash.events.MouseEvent;
	
	import mx.containers.Panel;
	import mx.containers.ViewStack;
	
	public class ViewStackTestViewLogic {
		
		[View]
		public var viewMainView:Panel;

		[View]
		public var viewSubView:Panel;
		
		[View]
		public var myViewStack:ViewStack;
		
		public function nextButtonClickHandler( event:MouseEvent ):void{
			trace( "nextButtonClickHandler" );
			myViewStack.selectedChild = viewSubView;
		}
		
		public function back1ButtonClickHandler( event:MouseEvent ):void{
			trace( "back1ButtonClickHandler" );
			myViewStack.selectedChild = viewMainView;
		}

		public function back2ButtonClickHandler( event:MouseEvent ):void{
			trace( "back2ButtonClickHandler" );
			myViewStack.selectedChild = viewMainView;
		}
	}
}


このサンプルを実行すると、Back1ボタンを押した時はハンドラが呼ばれ、Back2ボタンを押した場合にはハンドラが呼ばれない、という動作が確認できます。


これを回避するためにはViewを細かく分けるしかないのだろうか。