Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:修改嵌入式图标并在按钮中使用它?_Apache Flex_Flash_Image_Icons - Fatal编程技术网

Apache flex Flex:修改嵌入式图标并在按钮中使用它?

Apache flex Flex:修改嵌入式图标并在按钮中使用它?,apache-flex,flash,image,icons,Apache Flex,Flash,Image,Icons,仅此而已,如果嵌入图标: [Embed(source='icons/checkmark.png')] private static var CheckMark:Class; 您将得到一个动态类。通过调用setStyle方法,可以很容易地在运行时将图标分配给按钮: var btn:Button = new Button(); btn.setStyle("icon", CheckMark); 但是,如果您想在运行时更改图标,比如更改其alpha值,甚至在将其指定给按钮之前重新绘制像素,该怎么办

仅此而已,如果嵌入图标:

[Embed(source='icons/checkmark.png')]
private static var CheckMark:Class;
您将得到一个动态类。通过调用setStyle方法,可以很容易地在运行时将图标分配给按钮:

var btn:Button = new Button();
btn.setStyle("icon", CheckMark);
但是,如果您想在运行时更改图标,比如更改其alpha值,甚至在将其指定给按钮之前重新绘制像素,该怎么办


到目前为止,我还没有找到一个令人满意的答案……

这是我能找到的唯一一个似乎很接近的答案:

他的解决方案包括一个自定义的“dynamiccon”类,该类用于按钮的图标设置,以及一个自定义按钮类,该类向按钮类添加一个方法来绘制动态图标

最终的结果是您能够将BitmapData发送到DynamicCon类,该类将显示在按钮中。因此,嵌入图像,实例化资产类,获取bitmapasset并根据需要进行修改,然后将bitmapData发送到图标


这是一个有趣的问题,似乎应该有一个更简单的解决方案,但这不会带来很多麻烦。

我解决这个问题的方法是实现一个编程皮肤类,手动绘制图标本身。您可能需要做更多的工作来确保按钮计算出正确的大小,就像它有图标一样,即使它没有。您可能需要浏览按钮源代码来查看对图标的引用是如何存储的

我喜欢创建完全符合我要求的编程皮肤,然后使用有趣的CSS声明来修改状态,例如:

button.setStyle("customIconAlpha", .4);
当然,皮肤或自定义按钮类将具有:

var alpha:Number = getStyle("customIconAlpha") as Number;

(不确定是否必须键入该按钮)

我发现编程外观的最大问题是按钮拒绝测量宽度/高度。我通过覆盖每个对象的get方法轻松解决了这个问题:

重写公共函数get width():编号{返回宽度;} 重写公共函数get height():编号{返回高度;}

在我的例子中,我需要在TabNavigator中修改按钮,因此没有简单的方法对按钮进行子类化。谢天谢地,每个皮肤的父级都是按钮,因此使用皮肤中的静态方法,您可以识别图标皮肤所属的按钮实例

如果您使用的是覆盖所有“图标”样式,将为每个状态创建一个新的蒙皮对象。因此,在更改图标的状态时,您需要记住这一点