我有问题,希望有人能帮我
我有一个带有TileList的Flash项目
我需要将TileList中某些项目(并非全部)的背景更改为红色,另一些则更改为蓝色。
你知道怎么做吗?
谢谢
发布于 2009-04-13 02:34:58
嗯,棘手的那个。
我试图用一种干净的方式解决这个问题,但是Flash不允许我这么容易地解决这个问题。其基本思想是为每个itemRenderer(ImageCell)设置一个ImageCell,或者任何其他必需的皮肤,而不是所有这些皮肤( tileList.setRendererStyle());
我以为可以轻松地访问ImageCell类(TileList的默认Cell ),但事实并非如此。我获得访问cellRenderer itemToCellRenderer方法的唯一方法,但作为参数传递的项来自ListEvent
我修改了文档中的示例来说明这个想法。此代码假设您有TileList组件,再加上库中具有以下链接的三个MovieClips符号: Star、BlueBg、RedBg Importfl.controls.;Importfl.controls.listClasses.;Importfl.data.;Importfl.events.;
var totalEntries:uint = 20;
var myTileList:TileList = new TileList();
myTileList.columnWidth = 125;
myTileList.rowHeight = 150;
myTileList.columnCount = 3;
myTileList.rowCount = 1;
myTileList.move(10,10);
addChild(myTileList);
for(var i:int=0; i<totalEntries; i++) {
myTileList.addItem( { label:"star"+i, source:Star, scaleContent:false, index:i} );
}
myTileList.addEventListener(ListEvent.ITEM_ROLL_OVER, listItemOver);
function listItemOver(e:ListEvent):void {
var imageCell:ImageCell = myTileList.itemToCellRenderer(e.item) as ImageCell;
//e.index % 2 == 0 ? imageCell.setStyle('upSkin',BlueBg): imageCell.setStyle('upSkin',RedBg);
}这会变得很混乱,即使它会起作用。我在分派ITEM_ROLL_OVER事件时遇到了问题,而且当组件被填充时,我不认为分配大量的事件,仅仅为了一些颜色是一个好主意。
Sooo...there 2在Flash中仍然是正确的
下面是对我有用的内容:注意,当我添加一个项时,我还会添加和索引属性,这样每个项都知道它的索引是什么。接下来,我让每个单元格的内容决定显示什么是正确的皮肤(这会创建依赖关系,因此应该有一种紧凑型的方式),所以我在星空MovieClip中添加了以下代码
import fl.controls.listClasses.ImageCell;
var cell:ImageCell = this.parent.parent.parent as ImageCell;
trace(cell.data.index);
if(cell.data.index %2 == 0) cell.setStyle('upSkin',BlueBg);
else cell.setStyle('upSkin',RedBg);希望这能有所帮助。
https://stackoverflow.com/questions/427971
复制相似问题