1. 程式人生 > >Flex之旅:第二部分:容器與佈局(2)---動態新增元件(TabNavigator)

Flex之旅:第二部分:容器與佈局(2)---動態新增元件(TabNavigator)

動態新增元件

其實所謂的動態新增元件,就是使用as程式碼去新增,而不是使用標籤去事先定義好。

我定義了一個TabNavigator,初始化時候,沒有往裡面新增任何的元件。

之後,通過按鈕,去新增,刪除,禁用,元件。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			import mx.containers.Canvas;
			import mx.controls.Label;
			import mx.core.UIComponent;
			import mx.events.FlexEvent;
			
			protected function add_clickHandler(event:MouseEvent):void
			{
				var canvas:Canvas = new Canvas();
				canvas.label = "tab"+tabNavigator.numChildren;
				var label:Label = new Label();
				label.text = "this is a label in Canvas!";
				
				canvas.addChild(label); // label add to canvas
				tabNavigator.addChild(canvas); // canvas add to tabNavigator
			}
			
			protected function remove_clickHandler(event:MouseEvent):void
			{
				if(tabNavigator.numChildren>0){
					tabNavigator.removeChildAt(0); // remove first
				}
				
			}
			
			protected function disable_clickHandler(event:MouseEvent):void
			{
				if(tabNavigator.numChildren>0){
					(tabNavigator.getChildAt(tabNavigator.numChildren-1) as UIComponent).enabled = false;
				}
				
			}
			
		]]>
	</fx:Script>
	<s:VGroup>
		<s:HGroup>
			<s:Button id="add" label="add" click="add_clickHandler(event)"></s:Button>
			<s:Button id="remove" label="remove" click="remove_clickHandler(event)"></s:Button>
			<s:Button id="disable" label="disable" click="disable_clickHandler(event)"></s:Button>
		</s:HGroup>
		
		<mx:TabNavigator id="tabNavigator" width="100%" height="300">
		</mx:TabNavigator>
	</s:VGroup>
</s:Application>


絮叨絮叨:

  • 通過as動態新增或刪除子組建,我個人感覺還是為了效能和頁面邏輯要求考慮。
  • 為了提高啟動效率,不希望頁面在初始化的時候,創建出太多的子組建之類的。
  • canvas.label 會作為tab的標題欄顯示
  • tabNavigator.numChildren可以獲得tabNavigator的子元件的個數,但是僅僅是tabNavigator的下一級!

相關推薦

Flex第二部分容器佈局(2)---動態新增元件TabNavigator

動態新增元件 其實所謂的動態新增元件,就是使用as程式碼去新增,而不是使用標籤去事先定義好。 我定義了一個TabNavigator,初始化時候,沒有往裡面新增任何的元件。 之後,通過按鈕,去新增,

【C++探索第二部分第一課面向對象初探,string的驚天內幕

信息技術 false cli 方法 復雜 weixin include 命令 就是 內容簡單介紹 1、第二部分第一課:面向對象初探。string的驚天內幕 2

【Linux探索】第一部分第三課測試並安裝Ubuntu

u盤 nco 過程 sans ubunt windows u盤啟動盤 系統 .com 內容簡單介紹 1、第一部分第三課:測試並安裝Ubuntu 2、第一部分第四課預告:磁盤分區 測試並安裝Ubuntu 大家好,經過前兩個比較偏理論(是否

Rust 每日千行<0>源代碼組織,Cargo 入門

最終 項目目錄 div zsh span org rust logs ack Rust 源代碼組織,使用配套的 Cargo 工具,其功能強大,程序員可擺脫 C/C++ 中需要自行維護 make、cmake 之類配置的工作量。 初始化一個項目: cargo new --bi

Rust 每日千行<1>變量、可變性、常量、隱藏

main span 左值 無法 nbsp hello 顯示 world! logs rust 是強類型語言,所有變量、常量都必須有明確的數據類型;很多情況下,省略類型聲明,編譯器可自動推導,但不是所有情況下都會成功。 一、rust 中的變量值默認是不允許改變的,即不可二

機器學習深度學習系列連載 第二部分 深度學習(二梯度下降

梯度下降 Gradient Decent 我們回憶深度學習“三板斧”, 選擇神經網路 定義神經網路的好壞 選擇最好的引數集合 其中步驟三,如何選擇神經網路的好壞呢? 梯度下降是目前,最有效的方法之一。 方法:我們舉兩個引數的例子

嵌入式軟體工程師【面經第二部分-指標】

指標簡單型別分析: int p; //這是一個普通的整型變數 int *p; //首先從P 處開始,先與*結合,所以說明P 是一個指標,然後再與int 結合,說明指標所指向的內容的型別為int 型.所以P 是一個返回整型資料的指標 int p[3]; //首先從P 處開始,先與[]結

機器學習深度學習系列連載 第二部分 深度學習十六迴圈神經網路 4BiDirectional RNN, Highway network, Grid-LSTM

深度學習(十六)迴圈神經網路 4(BiDirectional RNN, Highway network, Grid-LSTM) RNN處理時間序列資料的時候,不僅可以正序,也可以正序+逆序(雙向)。下面顯示的RNN模型,不僅僅是simple RNN,可以是LSTM,或者GRU 1 B

機器學習深度學習系列連載 第二部分 深度學習十五迴圈神經網路 3Gated RNN - GRU

迴圈神經網路 3(Gated RNN - GRU) LSTM 是1997年就提出來的模型,為了簡化LSTM的複雜度,在2014年 Cho et al. 提出了 Gated Recurrent Units (GRU)。接下來,我們在LSTM的基礎上,介紹一下GRU。 主要思路是: •

機器學習深度學習系列連載 第二部分 深度學習十四迴圈神經網路 2Gated RNN - LSTM

迴圈神經網路 2(Gated RNN - LSTM ) simple RNN 具有梯度消失或者梯度爆炸的特點,所以,在實際應用中,帶有門限的RNN模型變種(Gated RNN)起著至關重要的作用,下面我們來進行介紹: LSTM (Long Short-term Memory )

機器學習深度學習系列連載 第二部分 深度學習十三迴圈神經網路 1Recurre Neural Network 基本概念

迴圈神經網路 1(Recurre Neural Network 基本概念 ) 迴圈神經網路的特點: • RNNs 在每個時間點連線引數值,引數只有一份 • 神經網路出了輸入以外,還會建立在以前的“記憶”的基礎上 • 記憶體的要求與輸入的規模有關 當然,他的深度不只有一層:

機器學習深度學習系列連載 第二部分 深度學習十二卷積神經網路 3 經典的模型LeNet-5,AlexNet ,VGGNet,GoogLeNet,ResNet

卷積神經網路 3 經典的模型 經典的卷積神經網路模型是我們學習CNN的利器,不光是學習原理、架構、而且經典模型的超引數、引數,都是我們做遷移學習最好的源材料之一。 1. LeNet-5 [LeCun et al., 1998] 我們還是從CNN之父,LeCun大神在98年提出的模

機器學習深度學習系列連載 第二部分 深度學習十一卷積神經網路 2 Why CNN for Image?

卷積神經網路 2 Why CNN 為什麼處理圖片要用CNN? 原因是: 一個神經元無法看到整張圖片 能夠聯絡到小的區域,並且引數更少 圖片壓縮畫素不改變圖片內容 1. CNN 的特點 卷積: 一些卷積核遠遠小於圖片大小; 同樣的pat

機器學習深度學習系列連載 第二部分 深度學習卷積神經網路 1 Convolutional Neural Networks

卷積神經網路 Convolutional Neural Networks 卷積神經網路其實早在80年代,就被神經網路泰斗Lecun 提出[LeNet-5, LeCun 1980],但是由於當時的資料量、計算力等問題,沒有得到廣泛使用。 卷積神經網路的靈感來自50年代的諾貝爾生物學獎

機器學習深度學習系列連載 第二部分 深度學習Keras- “hello world” of deep learning

Keras Kearas 是深度學習小白程式碼入門的最佳工具之一。 如果想提升、練習程式碼能力,還是建議演算法徒手python實現。 複雜的深度神經網路專案還是推薦TensorFlow或者Pytorch Keras是一個高層神經網路API,Keras由純Pyt

機器學習深度學習系列連載 第二部分 深度學習十八) Seq2Seq 模型

Seq2Seq 模型 Seq2Seq 模型是自然語言處理中的一個重要模型,當然,這個模型也可以處理圖片。 特點是: Encoder-Decoder 大框架 適用於語言模型、圖片模型、甚至是預測 1. RNN相關的生成應用: (1) 作詩 (2) 圖片生成

CVPR 2018摘要第二部分

CVPR 2018摘要:第二部分 本文為 AI 研習社編譯的技術部落格,原標題: NeuroNuggets: CVPR 2018 in Review, Part II 作者 |Sergey Nikolenko、Aleksey Art

Gradle 梳理 - 外掛 Gradle 教程第二部分,JAVA PROJECTS【翻譯】

Gradle 教程:第二部分,JAVA PROJECTS【翻譯】   原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-2-java-projects/ 在這部分的教學中,我們會學習如何使用Gradle

第二部分基本套接字程式設計

IPv4網際套接字地址結構: struct in_addr{ in_addr_t s_addr; }; struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_a

使用Boost::Python在C++應用程式中嵌入Python第二部分

在第1部分中,我們瞭解瞭如何在C++應用程式中嵌入Python,包括從應用程式呼叫Python程式碼的幾種方法。雖然我之前承諾在第2部分中完整實現一個配置解析器,但我認為看一下錯誤解析會更有建設性。一旦我們有一個很好的方法來處理Python程式碼中的錯誤,我將在第3部分中