溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Flex渲染機制中外部Flex渲染器怎么用

發(fā)布時間:2021-12-06 09:54:53 來源:億速云 閱讀:148 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Flex渲染機制中外部Flex渲染器怎么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Flex渲染機制中外部Flex渲染器怎么用”這篇文章吧。

Flex渲染機制之外部Flex渲染器

這種Flex渲染器的MXML標記和ActionScript代碼與使用該渲染器的列表位于同一文件中。代碼與文件中的其余代碼內(nèi)聯(lián)。您應(yīng)該還記得我說過,應(yīng)該將內(nèi)聯(lián)渲染器視作單獨的類。事實上,Flex編譯器提取這些內(nèi)聯(lián)代碼并為您創(chuàng)建類。內(nèi)聯(lián)渲染器的優(yōu)勢在于代碼與列表位于同一位置,但是如果渲染器變得復(fù)雜時,這又變成了劣勢。本文中我將向您展示如何自己創(chuàng)建類。

將Flex渲染器提取到一個外部文件有幾個優(yōu)勢:

◆渲染器可輕松用于多個列表中

◆代碼更容易維護

◆可以使用FlexBuilder的“設(shè)計”視圖草擬出最初的渲染器

MXML渲染器

在第1部分中,您看到有一個復(fù)雜的渲染器用于DataGrid:

<mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Title"dataField="title"> <mx:itemRenderer> <mx:Component> <mx:HBoxpaddingLeftmx:HBoxpaddingLeft="2"> <mx:Script> <![CDATA[  overridepublicfunctionsetdata(value:Object):void{  super.data=value;  vartoday:Number=(newDate()).time;  varpubDate:Number=Date.parse(data.date);  if(pubDate>today)setStyle("backgroundColor",0xff99ff);  elsesetStyle("backgroundColor",0xffffff);  }  ]]>  </mx:Script> <mx:Imagesourcemx:Imagesource="{data.image}"width="50"height="50" scaleContent="true"/> <mx:Textwidthmx:Textwidth="100%"text="{data.title}"/> </mx:HBox> </mx:Component>  </mx:itemRenderer> </mx:DataGridColumn>

◆Flex渲染器基于HBox,包含一個Image和一個Text,并且根據(jù)項目記錄的pubDate字段設(shè)置背景色。可以使用以下步驟將同一Flex渲染器編寫為一個外部文件:

如果您使用FlexBuilder,請新建一個MXMLComponent文件(我將我的文件命名為GridColumnSimpleRenderer,您可以隨意命名),將根標記設(shè)置為HBox。不必擔(dān)心大小。

如果您只使用SDK,請新建一個MXML文件(將它命名為GridColumnSimpleRenderer.mxml),將根標記設(shè)置為HBox。
在文件打開時,復(fù)制<mx:HBox>與</mx:HBox>之間的所有內(nèi)容,但不要復(fù)制那些標記,因為文件中已有它們。結(jié)果應(yīng)該如下:

<?xmlversionxmlversion="1.0"encoding="utf-8"?> <mx:HBoxxmlns:mxmx:HBoxxmlns:mx="http://www.adobe.com/2006/mxml" width="400"height="300"> <mx:Script> <![CDATA[  overridepublicfunctionsetdata(value:Object):void{  super.data=value;  vartoday:Number=(newDate()).time;  varpubDate:Number=Date.parse(data.date);  if(pubDate>today)setStyle("backgroundColor",0xff99ff);  elsesetStyle("backgroundColor",0xffffff);  }  ]]></mx:Script> <mx:Imagesourcemx:Imagesource="{data.image}"width="50"height="50" scaleContent="true"/> <mx:Textwidthmx:Textwidth="100%"text="{data.title}"/> </mx:HBox>

保存此文件。

現(xiàn)在修改DataGridColumn定義,方法是刪除內(nèi)聯(lián)渲染器并將它替換為以下內(nèi)容:

<mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Title"dataField="title"  itemRenderer="GridColumnSimpleRenderer">

現(xiàn)在運行這個應(yīng)用程序。您會大吃一驚。因為行很高。這是因為渲染器上的height="300"。

◆決定Flex渲染器的寬度和高度

List控制始終設(shè)置渲染器的寬度。本例中將忽略明確的width="400"。您應(yīng)當(dāng)編寫自己的渲染器,假設(shè)用戶更改列或列表寬度是寬度會更改。

高度則是另一回事。如果列表設(shè)置了明確的rowHeight,它會將這個高度強加到各行,忽略您對渲染器設(shè)置的任何高度。但是,如果您將列表的variableRowHeight屬性設(shè)置為true,則列表會慎重考慮渲染器的高度。在本例中,高度明確設(shè)置為300,所以各行為300像素高。

要修復(fù)它,請從渲染器文件中刪除明確高度,應(yīng)用程序即可正確運行。

以上是“Flex渲染機制中外部Flex渲染器怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI