Actionscript 3 如何将DefaultComplexItemRenderer背景alpha设置为0

Actionscript 3 如何将DefaultComplexItemRenderer背景alpha设置为0,actionscript-3,flash,apache-flex,flex4,mxml,Actionscript 3,Flash,Apache Flex,Flex4,Mxml,我有一个简单的图片列表。从我所看到的示例来看,我应该使用DefaultComplexItemRenderer。它工作正常,我的图像数组加载良好,但每个项目都有坚实的背景。我需要每个图像后面的背景的alpha值为0。我该怎么设置呢 在过去,我刚刚创建了一个自定义itemRenderer,并在itemRenderers上重写了DruckGround函数,但DefaultComplexRenderer没有要重写的DruckGround函数 flex代码中还有其他简单的解决方案吗?如果有人能告诉我如何制

我有一个简单的图片列表。从我所看到的示例来看,我应该使用DefaultComplexItemRenderer。它工作正常,我的图像数组加载良好,但每个项目都有坚实的背景。我需要每个图像后面的背景的alpha值为0。我该怎么设置呢

在过去,我刚刚创建了一个自定义itemRenderer,并在itemRenderers上重写了DruckGround函数,但DefaultComplexRenderer没有要重写的DruckGround函数

flex代码中还有其他简单的解决方案吗?如果有人能告诉我如何制作一个定制的DefaultComplexRenderer,那就太棒了

注: 这是一个Flex移动项目。我知道有些项目渲染器对手机不友好。Adobe说“总是在AS3而不是mxml中使用项目渲染器”,所以请记住这一点

谢谢

这是我的密码:

    <fx:Declarations>
        <s:ArrayList id="arrList">
            <s:BitmapImage source="assets/images/one.png" scaleMode="letterbox" smooth="true" width="100%" height="100%"/>
            <s:BitmapImage source="assets/images/two.png" scaleMode="letterbox" smooth="true" width="100%" height="100%"/>
            <s:BitmapImage source="assets/images/three.png" scaleMode="letterbox" smooth="true" width="100%" height="100%"/>
            <s:BitmapImage source="assets/images/four.png" scaleMode="letterbox" smooth="true" width="100%" height="100%"/>
        </s:ArrayList>
    </fx:Declarations>



<s:List id="extrasList_list" width="100%" height="100%"
                        dataProvider="{arrList}"
                        itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
                        horizontalCenter="0"
                        verticalCenter="0">
                    <s:layout>
                        <s:TileLayout requestedColumnCount="-1"
                                      requestedRowCount="-1"
                                      horizontalGap="10"
                                      verticalGap="10"
                                      orientation="rows"
                                      columnAlign="justifyUsingWidth" 
                                      />
                    </s:layout>
                </s:List>
但我收到这个警告,但它不起作用

-Cannot resolve namespace qualified type 'DefaultComplexItemRenderer' in CSS selector 'DefaultComplexItemRenderer'

看起来您应该能够使用
setStyle('contentBackgroundAlpha',0)在您的DefaultComplexItemRenderer上

不是100%这是你要找的,不是很熟悉这门课。你为什么要过度扩展LabelItemRenderer

编辑

我相信你可能想延长

查看本教程

[编辑] Flex
列表的
contentBackgroundAlpha
contentBackgroundColor
样式多少有些误导!通常需要设置项目渲染器的样式。在列表的上下文中,这些样式只影响列表中可能出现的一小部分“chrome”。有关设置渲染器样式的详细信息,请参见下文

如果你只是想展示一幅图像,那么最好的方法就是这样。它扩展了
LabelItemRenderer
,因此它针对移动设备进行了优化,还具有两个文本字段

Flex List组件回收项目渲染器以提高效率,并仅根据需要创建尽可能多的渲染器以显示当前可见的内容。为此,列表将填充渲染器的
数据
属性。因此,您希望使用此
数据
属性配置项目渲染器

一种有效的方法是覆盖
数据的setter函数。创建一个新的Actionscript类,该类扩展了IconItemRenderer
将以下内容添加到其中:

override public function set data(value:Object):void
{
    super.data = value;
    // IconItemRenderer already has a BitmapImage component, it's property name is iconDisplay
    // your ArrayList should therefore only contain Strings representing the image sources
    // note how I've changed your ArrayList in the declarations tag below
    iconDisplay.source = data.imageSource;
}
您可能需要配置
iconDisplay
BitmapImage以查看您想要的效果。上面的方法可能会被频繁调用,因此您可以将只需要在其他地方发生一次的代码。。。通过重写Flex组件生命周期方法,如
createChildren()

现在告诉
列表
使用渲染器,语法如下:

<s:List itemRenderer="com.yourdomain.or.whatever.MyIconItemRendererClass" />

我喜欢在Actionscript中编写渲染器。。。但在顶部指向
IconItemRenderer
docs的链接中也有一个MXML示例。它还显示了如何在此渲染器中设置两个文本区域的值(使用
labelField
messageField
)。您还可以指定一个返回标签/消息/图标值的函数(使用
labelFunction
messageFunction
iconFunction
)。

感谢您尝试帮助大家,但我发现最快/简单的解决方案与将DefaultComplexItemRender从SDK复制到自定义SDK一样简单,然后更改这一行代码

autodrabackground=“false”


它很简单而且很有效。

如果我使用LabelItemRenderer,我只会得到一堆字符串,上面写着
[object BitmapImage]
,而不是实际看到图像。另外,我在css文件中尝试了
s | DefaultComplexItemRenderer{contentBackgroundAlpha:0;}
,但我收到了以下警告
-无法解析css选择器“DefaultComplexItemRenderer”中的命名空间限定类型“DefaultComplexItemRenderer”
我还是尝试过了,但它不起作用。@brybam您需要在项目呈现器中定义数据提供程序中的所有资产。我不认为违约是一种方式。查看这段关于制作as3移动项目渲染器的视频:我过去做过一些自定义IconItemRenderer,但我不确定使用它是否适合我的情况。我正试图在屏幕上创建一个类似“平铺”的正方形图像。与垂直矩形列表不同(默认情况下IconItemRenderer的设置方式),如果我决定使用IconItemRenderer,将其放入tileLayout并仅显示图标,是否可能?它会形成一个正方形图像的网格?是的,谢谢你的尝试!但很抱歉,我熟悉IconItemrenderer,我刚刚尝试了您的示例,使用tileLayout,它仍然尝试将它们像常规列表一样堆叠在彼此的顶部。很抱歉,这不能满足我的需要。另外,我以前在其他项目上也尝试过,但你应该知道,你甚至不能使用AlternatingItemColor添加alpha。理论上,这应该是可行的,
alternatingItemColors=“[0x00000000,0x000000]”
但它不起作用。过去,IconItemRenderer摆脱背景的唯一解决方案是覆盖缺点…但正如我在顶部所说,complexItemRenderer不允许我覆盖缺点,我不能使用IconItemRenderer,因为它没有像我需要的那样将图像放在网格中。无论如何谢谢你!其实只是找到了一个简单的解决办法。非常感谢你的努力!不知道为什么会被否决,上面的说法不起作用。您不能使用
alternatingItemColors=“[0x00000000,0x000000]”设置alpha,因为某些奇怪的原因,它在移动spark列表上不起作用。但我的发现完成了任务。
override protected function createChildren():void
{
    super.createChildren();
    iconDisplay.scaleMode="letterbox";
    iconDisplay.smooth=true;
}
<s:List itemRenderer="com.yourdomain.or.whatever.MyIconItemRendererClass" />
<s:List alternatingItemColors="[0xFFFFFF, 0xFFFFFF]" selectionColor="#FF0000" />
<fx:Declarations>
        <s:ArrayList id="arrList">
            <fx:Object imageSource="assets/images/one.png" />
            <fx:Object imageSource="assets/images/two.png" />
            <fx:Object imageSource="assets/images/three.png" />
        </s:ArrayList>
</fx:Declarations>