我们正在以编程方式创建一个LinkButton,并希望将其图标设置为从远程服务器检索的图像,而不是嵌入在SWF中的图像。 .icon
属性需要Class
,但我无法弄清楚如何创建一个等效于@Embed
但是来自动态生成的URLRequest或URL String。
var myImage:Image = new Image();
myImage.source = "http://www.domain.com/img/1234.png";
myImage.width = 16;
myImage.height = 16;
myImage.scaleContent = true;
var myButton:LinkButton = new LinkButton();
myButton.label = "Some text"
// This is what I'm trying to figure out.
myButton.setStyle("icon", ???)
我可能遗漏了一些显而易见的东西 - 我试过分别传入URL和myImage
,但都抛出错误。单步执行setStyle()
方法会显示代码期望Class
- 所以我应该通过什么来代替???
我无法嵌入图像本身,因为它是动态的 - 每次软件运行时URL都不同。
感谢您的帮助!
答案 0 :(得分:0)
为什么不将mx:Image的buttonMode设置为true然后添加点击事件?
<mx:Image source="{imageSource}" buttonMode="true" click="action()" />
如果不使用带有linkButton
的嵌入式图像,我不确定是否可行This可能值得一读
编辑...在AS3中:
var img:Image = new Image();
img.source = "...";
img.buttonMode = true;
img.addEventListenever(MouseEvent.CLICK, funcName);
答案 1 :(得分:0)
我认为不需要尝试设置样式,而是需要更改包含图标的子对象。您可以通过以下方式访问它:
Var:Bitmap icon = myButton.getChildByName("upIcon") as Bitmap
使用Loader中的那个替换bitmapData应该很容易。
答案 2 :(得分:0)
如果内存有效,则您需要使用button.setStyle('icon', img)
,其中img
是通过Loader
类加载的图片。
答案 3 :(得分:0)
对于laalto,
这可能为时已晚,但有人可能会发现它很有用,或者作为解决问题的起点。您是否尝试将图像图标作为一个类引用?我不知道这是否适用于动态网址中的图片,但这对我有用:
[Embed("assets/LinkButton.png")]
private const linkButtonIcon:Class;
然后在你的代码中:
myButton.setStyle("icon", linkButtonIcon);
请在此处查看此示例:
http://blog.flexexamples.com/2008/09/03/setting-the-icon-on-a-linkbutton-control-in-flex/
答案 4 :(得分:-2)
<mx:Button id="example" label="Example" icon="{IconUtility.getClass(example, 'http://www.exampledomain.com/image.jpg')}" />