Flex之旅 項呈示器ItemRenderer

2021-06-06 23:32:04 字數 1735 閱讀 4358

本文只討論datagrid的項呈示器,其他的沒有細看,應該是類似的,可能只是實現的介面不同而已,以後用到這部分內容的話再補充進來。每次前面都說這麼些廢話,只是為了說明文章內容的適應範圍,否則可能會引起誤解。

flex4.0 api裡面有這麼一句話:列表元件的項呈示器和專案編輯器必須實現 ilistitemrenderer 介面。至於ilistitemrenderer 介面定義了哪些內容對於我們應用的人來說並不是很重要,有興趣的可以研究一下。ilistitemrenderer 介面有乙個實現類mxitemrenderer,mxitemrenderer 類是在基於 mx 列表的控制項中使用的 spark 項呈示器和項編輯器的基類。所以我們在自定義datagrid的項呈示器時可以直接繼承mxitemrenderer即可,不過flex4.0 api給提供了乙個mxdatagriditemrenderer類,通過該類,可以將 spark 項呈示器體系結構與 mx datagrid 控制項一起使用。

怎樣自定義和使用項呈示器呢?下面介紹幾種方法,具體使用哪種方法視情況而定。

對於簡單的情況可直接在datagridcolumn標籤下寫itemrenderer,比如要在某一列新增,按鈕,核取方塊等常用的一些控制項(這些控制項要使用mx的,不能使用spark下的,因為mx下的控制項容器等都實現了ilistitemrenderer 介面)。我的測試**是使用的,顯示使用者的頭像,**如下:

對於一些功能複雜的情況,可以自己定義項呈示器,如上面提到的繼承mxdatagriditemrenderer,mxdatagriditemrenderer是group的子孫類,可以直接在其中加入各種元件。當然也可以直接繼承mx的容器類如hbox等,這些容器都實現了ilistitemrenderer 介面。

<?xml version="1.0" encoding="utf-8"?>  		

上面是我自定義的用於顯示使用者等級的呈示器levelitemrenderer,至於使用方式有以下3種:

1.第一種應該是最直接,最簡單的,直接在itemrenderer屬性中寫定義的呈示器的名稱,my是我定義的包名。

2.第二種需要用as指令碼,**如下:

//var myrender:ifactory = new render();

= myrender;

var myrender:ifactory = new classfactory(levelitemrenderer);

level.itemrenderer = myrender;

看一下api就會知道itemrenderer引數型別會ifactory,所以在**中通過classfactory新定義了乙個myrender。上面注釋的部分也可以作為一種方法,不過又得加入render.as這個自定義的檔案,不過可以在newinstance()方法中加入其他處理**(好像越來越亂了....):

package my

public function newinstance():*}}

3.第三種方法,把自定義的項呈示器當做乙個元件引入進來,不過引入自定義元件需要在前面加點東西(xmlns:my="my.*"):

flex布局常見父項屬性

1.flex direction 設定主軸的方向 2.justify content 設定主軸上的子元素排列方式 3.flex wrap 設定子元素是否換行 4.align content 設定側軸上的子元素的排列方式 多行 5.align items 設定側軸上的子元素排列方式 單行 6.flex...

flex布局 父項常見屬性

通過給父盒子新增flex屬性,來控制盒子的位置和排列方式。屬性 說明flex direction 設定主軸方向 justify content 設定主軸上的子元素排列方式 flex wrap 設定子元素是否換行 align content 設定側軸上的子元素排列方式 單行 align items 設...

Flex手機開發系列一 新建Flex手機專案並打包

我已經搭建好了myeclipse10.5 flex builder 4.6 二 需要注意的地方 1.flex提供了2中測試方法,在上面的鏈結中已經講到,就是在桌面上測試應用程式和在 android 裝置上測試應用程式 2.打包注意了,在選擇檔案 匯出 flash builder 發行版 選擇目標平台...