package
{
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.geom.Matrix;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.utils.Dictionary;
import mx.containers.accordionClasses.AccordionHeader;
import mx.controls.tabBarClasses.Tab;
import mx.core.BitmapAsset;
import mx.core.UIComponent;
public class ButtonBackGroudImage extends BitmapAsset{
private static var dictionary:Dictionary;
public static function getClass( target:UIComponent, source:String, width:Number = NaN, height:Number = NaN ):Class {
if(!dictionary){
dictionary = new Dictionary(false);
}
//if(source is String)
//{
var loader:Loader = new Loader();
loader.load(new URLRequest(source as String), new LoaderContext(true));
//source = loader;
//}
dictionary[target] = { source:loader, width:width, height:height };
return ButtonBackGroudImage;
}
public function ButtonBackGroudImage():void{
addEventListener(Event.ADDED, addedHandler, false, 0, true)
}
private function addedHandler(event:Event):void{
if(parent){
if(parent is AccordionHeader){
var header:AccordionHeader = parent as AccordionHeader;
getData(header.data);
} else if(parent is Tab){
var tab:Tab = parent as Tab;
getData(tab.data);
} else{
getData(parent);
}
}
}
private function getData(object:Object):void{
var data:Object = dictionary[object];
if(data) {
var source:Object = data.source;
if(data.width > 0 && data.height > 0){
bitmapData = new BitmapData(data.width, data.height, true, 0x00FFFFFF);
}
if(source is Loader){
var loader:Loader = source as Loader;
if(!loader.content) {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
}else{
displayLoader(loader);
}
}
}
}
private function displayLoader( loader:Loader ):void{
if(!bitmapData){
bitmapData = new BitmapData(loader.content.width, loader.content.height, true, 0x00FFFFFF);
}
bitmapData.draw(loader, new Matrix(bitmapData.width/loader.width, 0, 0, bitmapData.height/loader.height, 0, 0));
if(parent is UIComponent){
var component:UIComponent = parent as UIComponent;
component.invalidateSize();
}
}
private function completeHandler(event:Event):void{
if(event && event.target && event.target is LoaderInfo){
displayLoader(event.target.loader as Loader);
}
}
}
}
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import com.IconUtility; public function open():void { navigateToURL(new URLRequest("http://hi.baidu.com/woaidelphi/"), "_blank"); } ]]> </mx:Script> <mx:Button id="button" label="Button" icon="{IconUtility.getClass(button, 'http://hiphotos.baidu.com/woaidelphi/abpic/item/ace9cd3836b88206b9998fe9.jpg')}" x="488" y="233" width="278" height="107" click="open()"/></mx:Application>
分享到:
相关推荐
本文将深入探讨如何在 Flex 中动态加载 Image 和 Icon,这对于创建响应式和灵活的应用程序至关重要。动态加载资源可以显著提高应用程序的性能,减少启动时间和内存消耗。 在 Flex 中,我们可以使用 `Loader` 类来...
flexBulider页面加载动态图片的显示
在Flex Android项目中,我们经常会遇到需要自定义控件外观的需求,尤其是对于Button(按钮)这种常见的交互元素,设置背景色是提升用户界面美观度和交互体验的重要手段。本篇文章将详细讲解如何在Flex Android项目...
本教程主要聚焦于如何在Flex中动态创建DataGrid,并向其中添加图片,这在创建交互式、富媒体应用时非常有用。通过以下两种方法,你可以实现这个功能。 ### 方法一:使用ItemRenderer 1. **定义ItemRenderer**: ...
在Flex布局中,Button组件通常用于显示简单的单行文本按钮。然而,在某些场景下,我们可能需要Button的文本内容能够自动换行,以适应不同长度的文本或保持界面的整洁。本文将详细介绍如何重载Flex的Button,实现文本...
5. **应用到组件**:加载和处理后的图标可以直接应用于Flex组件的皮肤,如设置Button的icon属性,或者自定义组件的外观。 在实际应用中,我们可以按照以下步骤使用`IconUtility`: 1. 导入必要的库:首先,确保...
在Flex编程中,我们经常会遇到需要自定义组件样式的需求,比如让`Button`的`label`文字垂直显示。这个主题涉及到Flex布局、组件定制以及文本渲染等多个知识点。下面将详细阐述如何实现`Button`的`label`字体垂直显示...
本教程将深入探讨如何从数据库中动态加载图片到`MenuBar`,以创建更加丰富的用户界面。这一过程涉及到数据绑定、自定义渲染器以及与后端数据库的交互。 首先,我们需要了解`MenuBar`的基本用法。`MenuBar`是基于...
在本文中,我们将深入探讨如何在FLEX应用程序中设置背景图片,这是一项非常实用的技巧,可以帮助你提升应用的视觉效果。FLEX是一种基于ActionScript 3(AS3)的开发框架,用于创建富互联网应用程序(RIA)。背景图片...
综上所述,修改Flex Tree的icon涉及到创建自定义渲染器、数据绑定、根据数据源动态设置图标等步骤。理解这些概念和技巧对于构建具有个性化视觉效果的Flex应用程序至关重要。在实践中,需要注意代码的可维护性和性能...
或者在ActionScript代码中动态设置: ```actionscript myButton.setStyle("styleName", "myButton"); ``` 6. 压缩包资源: 提供的“FLEX4按钮状态切换背景”压缩包很可能包含了一系列不同状态的背景图片(如`up....
Flex相册 Flex图片
在本文中,我们将深入探讨如何在Flex环境中创建一个垂直排列的按钮(Flex Vertical Button)以及一个包含垂直标签的TabNavigator组件。Flex是一个基于ActionScript 3.0的开放源代码框架,用于构建富互联网应用程序...
3. **ActionScript**: Flex中的编程语言,基于ECMAScript,用于处理动态行为和业务逻辑。在图片查看器中,ActionScript可能用于处理图片加载、缩放、保存等操作。 4. **图片缩放**: 源码包含了图片缩放功能,这通常...
**FLEX教程码源集合** FLEX,全称为Flexible Application Framework,是由Adobe公司推出的一种用于构建富互联网应用程序(RIA)的开发平台。FLEX以其强大的数据可视化能力、丰富的用户界面组件以及与后端服务器的...
用flex编写的一个计算器,0-9数字按钮通过as 动态实现 直接讲文件导入flash builder就可以使用
这个"flex例子.flex源程序"很显然是一个Flex开发的学习资源,它包含了一个或多个示例项目,用于帮助开发者理解和掌握Flex编程的基本概念和实践。 Flex的主要组件包括MXML和ActionScript,它们是构建Flex应用的两大...
在这个“flex 两个图片播放小程序”项目中,我们可以看到它被用来创建一个图片浏览应用,支持图片的放大和缩小功能,提供了用户友好的交互体验。接下来,我们将深入探讨Flex在图片浏览中的应用及其关键技术。 首先...
《精通FLEX源代码08》这一资源主要聚焦于深入理解和掌握Adobe Flex的源代码,Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。本资源可能包含一系列章节或实例,旨在帮助开发者提升...
Flex动态爱墙是一款基于Adobe Flex 3.0技术开发的互动应用,主要功能是创建一个虚拟的电子墙,用户可以在墙上发布信息,实现信息的动态展示和交互。这个源代码可以为开发者提供学习和研究Flex编程、交互设计以及数据...