加载图标和图片,网上的例子到处都是...
非常可惜的是,都是“写死的”...
很容易看到,都是
- [Embed("com/emavaj/myfriend/assets/pic/bg.swf")]
- [Bindable]
- publicvarbg:Class;
/**背景图片.*/
[Embed("com/emavaj/myfriend/assets/pic/bg.swf")]
[Bindable]
public var bg:Class;
用“绑定”,然后再赋值给需要的控件
那么如果用户需要上传图片,把路径存入数据库了
读取的时候,怎么用以上的方式读取图片呢?
1) 读取图片
- varloader:Loader=newLoader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE,afterLoad);
- loader.load(newURLRequest(...));
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,afterLoad);
loader.load(new URLRequest(...));
就是创建个Loader,然后监听完成事件,然后加载URLRequest指向的资源即可
需要注意的是,loader监听的时候,是
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE,afterLoad);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,afterLoad);
不是
- loader.addEventListener(Event.COMPLETE,afterLoad);
loader.addEventListener(Event.COMPLETE,afterLoad);
2个的效果不一样的...
函数部分:
- publicfunctionafterLoad(event:Event):void{
- _image.source=event.currentTarget.content
- }
public function afterLoad(event:Event):void {
_image.source = event.currentTarget.content
}
(大概是这样...我有点记不清了...)
2) 加载图标 Icon
这2个有什么不同呢?
Image接收的是 Bitmap对象
而Icon接收的是 Class对象
(Image也能接收Class,但是Icon不能接收Bitmap)
我找了好久也不知道怎么加载Class
后来发现一个工具包
IconUtility
其实也就是一个.as文件而已
然后使用里面的方法
- IconUtility.getClass(uiComponent,iconUrl)
IconUtility.getClass(uiComponent,iconUrl)
就能返回加载好的Class对象
函数原型为:
- publicstaticfunctiongetClass(target:UIComponent,source:String,width:Number=NaN,height:Number=NaN):Class
public static function getClass( target:UIComponent, source:String, width:Number = NaN, height:Number = NaN ):Class
在附件中有这个as文件
/*********************************************************************************************************************************
Copyright (c) 2007 Ben Stucki
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********************************************************************************************************************************/
package com.emavaj.myfriend.util
{
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;
/**
* Provides a workaround for using run-time loaded graphics in styles and properties which require a Class reference
*/
public class IconUtility extends BitmapAsset
{
private static var dictionary:Dictionary;
/**
* Used to associate run-time graphics with a target
* @param target A reference to the component associated with this icon
* @param source A url to a JPG, PNG or GIF file you wish to be loaded and displayed
* @param width Defines the width of the graphic when displayed
* @param height Defines the height of the graphic when displayed
* @return A reference to the IconUtility class which may be treated as a BitmapAsset
* @example <mx:Button id="button" icon="{IconUtility.getClass(button, 'http://www.yourdomain.com/images/test.jpg')}" />
*/
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 IconUtility;
}
/**
* @private
*/
public function IconUtility():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);
}
}
}
}
分享到:
相关推荐
在Flex编程中,动态加载外部图片是一项常见的需求,特别是在创建数据驱动的应用程序或者需要根据用户交互更新界面的情况下。本文将深入探讨如何在Flex项目中实现这一功能,包括基本原理、步骤以及常见问题的解决策略...
动态加载 SVG 图片可以实现大量的 SVG 图形资源直接在 Flex 应用程序中使用。 三、解析 SVG 文件 解析 SVG 文件是动态加载 SVG 图片的第一步。可以遍历 SVG 文件,遍历 SVG 代码,获取 SVG 文件的宽度和高度,并将...
在本案例中,我们将讨论如何在Flex中实现图片预览功能,特别是“PhotoFlow”布局,这通常用于创建滚动预览效果,带给用户流畅且引人入胜的体验。 一、Flex图片预览组件基础 在Flex中,我们可以利用MX或Spark组件库...
通过利用Flex,开发者可以轻松地创建交互式、响应式的用户界面,包括动态显示和浏览图片的组件。 在"FLex 左右滑动图片墙"这个实例中,我们关注的核心是创建一个可以左右滑动展示图片的组件。这个组件通常会包含一...
在Flex开发中,由于其内建的Bitmap类并不支持动态图片格式如GIF的加载,开发者需要采取一些特殊的方法来实现动态图片的显示。这里主要介绍两种常见的解决方案:将GIF转换为SWF以及使用GIFPlayer组件。 一、转换为...
本教程主要聚焦于如何在Flex中动态创建DataGrid,并向其中添加图片,这在创建交互式、富媒体应用时非常有用。通过以下两种方法,你可以实现这个功能。 ### 方法一:使用ItemRenderer 1. **定义ItemRenderer**: ...
总结,通过上述步骤,我们可以成功地在Flex的`MenuBar`中实现从数据库动态加载图片的功能。这个过程涉及到了Flex的组件渲染机制、数据绑定、HTTP服务调用以及JSON数据解析。这样的功能可以显著提升应用的用户体验,...
在图片加载完成后,可以创建一个BitmapData对象,然后通过这个对象实现图片的动态处理。例如,为了实现图片的放大和缩小,可以使用BitmapData的draw方法,传入原始图像和一个缩放矩阵作为参数。 对于图片的显示,...
标题提及的"“FLEX 图片浏览功能可以轻松实现图片浏览”",这指的是使用Flex3开发的图片查看器应用,它允许用户方便地查看和浏览图片,同时可能还支持一些高级特性,如缩放、旋转、平移等。Flex3提供了强大的图形...
在 Flex 中,我们可以使用 `Loader` 类来实现图像的动态加载。`Loader` 类是 Flex 的核心组件之一,它负责加载各种类型的媒体,包括图像(Image)和图标(Icon)。以下是一个基本的 `Loader` 示例: ```...
总结来说,“Flex4图片浏览效果,浏览图片demo”是一个利用Flex4框架创建的图像浏览应用实例,它展示了Flex4在图形渲染、用户交互、数据加载以及组件定制等方面的功能。通过深入研究这个demo,开发者可以学习到如何...
标题中提到的“FLEX实现鼠标滑过图片放大效果”是一种提升用户体验的设计策略,常见于产品展示或图像浏览应用中。当用户将鼠标光标悬停在图片上时,图片会放大,以便用户可以更清楚地查看细节,而当鼠标移开时,图片...
“博文链接:https://fengshantao.iteye.com/blog/1096090”提供了进一步的参考信息,这个链接指向了一篇博客文章,作者可能是分享了如何使用Flex实现这些功能的详细步骤和代码示例。通过访问这篇文章,读者可以学习...
在本文中,我们将深入探讨如何使用Flex布局来实现图片的放大和缩小功能。Flex布局,全称为Flexible Box,是CSS3中的一个布局模型,旨在提供更灵活、响应式的网页设计解决方案。通过理解Flex布局的基本原理,我们可以...
要实现图片旋转效果,我们需要创建一个Flex项目,并在MXML文件中添加一个图片显示组件。`<mx:Image>`是Flex中用于显示图像的基本组件,我们可以通过它加载图片并设置初始显示状态。例如: ```xml ('assets/...
在本案例中,"flex 图片浏览,flex图片滚动效果"是指利用Flex技术实现的动态图片展示和浏览功能,它能为用户提供流畅、交互性强的图片查看体验。 在Flex中,我们可以使用各种组件来创建图片浏览和滚动效果。主要...
总的来说,"图片压缩flex demo"是一个使用Flex技术演示如何加载图片、压缩图片并保存压缩结果的项目。它涵盖了文件I/O、图片加载、图像处理和压缩算法等多个知识点,对于理解如何在Flex环境中处理图片资源非常有帮助...
总结来说,这个Flex实现的图片展播功能通过XML配置图片信息,使用`ArrayCollection`作为数据绑定源,结合按钮和图片的事件处理,实现了图片的动态切换。渐出效果则可以通过添加过渡动画来实现,增强用户体验。这种...
本教程将详细讲解如何为Flex VideoDisplay组件添加背景图片,以及如何利用Flex播放器的加载事件和方法进行有效控制。 首先,我们要明白在Flex中添加背景图片的基本步骤。这通常涉及到使用 mx.graphics.ImageSource ...
在大型项目中,可以使用资源管理框架,如Flex的ResourceManager,来统一管理和动态加载本地化字符串、图片等资源,实现多语言支持和资源更新。 7. 性能考量: 虽然动态加载资源可以减小SWF体积,但也会增加网络...