as3 内置组件 1

as3 内置组件 1
2009年10月14日
  1,改变所有按钮的样式:
  //加载样式管理器
  import fl.managers.StyleManager;
  //定义文本格式对象
  var tf:TextFormat = new TextFormat();
  tf.size = 12; //字号,单位是像素
  //改变按钮文本格式
  StyleManager.setComponentStyle(Button, "textFormat", tf); //改变所有按钮样式 //改变所有标签样式参考以下语句:
  StyleManager.setComponentStyle(Label, "textFormat", tf); 2,改变某一个按钮的样式:
  aButton.setStyle("textFormat", tf);
  import fl.managers.StyleManager;
  var mytime:Number = 500;
  var timer:Timer = new Timer(1,mytime);
  var tf:TextFormat = new TextFormat();
  tf.font ="宋体";
  tf.size = 12;
  mc.label = "清除";
  mc.setStyle("textFormat", tf);
  infor.width = 400;
  infor.height = 300;
  infor.setStyle("textFormat", tf);
  var URLString:String = "http://www.17173.com";
  var _URLRequest:URLRequest = new URLRequest(URLString);
  var _URLloader:URLLoader = new URLLoader();
  _URLloader.load(_URLRequest);
  _URLloader.addEventListener(Event.COMPLETE,getop);
  _URLloader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
  mc.addEventListener(MouseEvent.CLICK,clears);
  function getop(event:Event){
  timer.start();
  }
  timer.addEventListener(TimerEvent.TIMER_COMPLETE,timerEnd);
  timer.addEventListener(TimerEvent.TIMER, timerHandler);
  function timerHandler(event:TimerEvent){
  var n = event.target.currentCount;
  if(mytime - n !=0){
  infor.text = String(mytime - n);
  }
  else{
  }
  }
  function timerEnd(event:TimerEvent){
  infor.text = String(_URLloader.data);
  }
  function clears(event:Event){
  infor.text = "";
  }
  function progressHandler(event:ProgressEvent){
  infor.text = String((int(_URLloader.bytesLoaded / _URLloader.bytesTotal) *100)+"%");
  }
  修改ListSkin,然后设置
  StyleManager.setComponentStyle(List,"contentPadding", 1);
  就这么简单。。。。我居然网上找了N天死活找不到解决办法,无语了,还是被自己“研究”了出来
  Flex实时加载Skin
  转载自http://hi.baidu.com/ming871/blog ... 2979d5d439c916.html
  Flex实时加载Skin2008-08-13 21:36一篇翻译的文章,来自 The Kiwi Project ,这种方法很有用,但是唯一的问题就是,在加载皮肤的过程中,用户等待的问题。如果皮肤文件比较大,没有加载上来之前,程序可以说是无反应的,这样需要我们以某种方式提醒用户当前程序的工作。
  实时加载 Flex 皮肤
  目前,有很多关于如何在你的 Flex 程序中绘制皮肤的资源。
  概述:Flex 支持两种绘制皮肤的方法:贴图和编程。贴图皮肤是在Flash、Photoshop、Firework等软件中创建皮肤资源图像,然后将他们导入(embed)到 Flex 程序中;编程皮肤是建立一个通过程序定义一个控件皮肤的 ActionScript 类。你可能猜到,贴图皮肤比较简单,编程皮肤可以实现更加丰富的效果。
  这两个方法都有一个共同的缺点是,皮肤资源(对于贴图来说是 SWF/PNG/GIF 等文件,对于编程来说是那个 AS 类)必须在程序编译时就被包括。怎么改进呢?在这篇文章中我将演示一个如何实时加载贴图皮肤的巧妙方法。
  为了使这个例子尽可能的简单,我仅建立一个只有一个按钮的 Flex 程序,这个按钮的皮肤是动态添加的。本程序将实时取得一个皮肤 SWF 文件,加载皮肤,然后把它们应用到按钮上。
  第一步:为皮肤资源建立一个外壳 SWF
  目的,有了这个外壳 SWF,我的 Flex 程序就可以实时加载皮肤中适当的资源
  package
  {
  import flash.display.Sprite;
  public class Wrapper extends Sprite
  {
  [Embed(source="flex_skins.swf",symbol="RadioButton_upIcon")]
  public var rbUpSkin: Class;
  [Embed(source="flex_skins.swf",symbol="RadioButton_downIcon")]
  public var rbDownSkin: Class;
  [Embed(source="flex_skins.swf",symbol="RadioButton_disabledIcon")]
  public var rbDisabledSkin: Class;
  [Embed(source="flex_skins.swf",symbol="RadioButton_overIcon")]
  public var rbOverSkin: Class;
  }
  }
  译者注:上面代码需要用 mxmlc 编译,不用使用 Flex Builder 去建项目。
  第二步:将这个外壳 SWF 放到服务器上
  Flex 程序需要从某个地方加载皮肤呀。
  第三步:在 Flex 程序中使用 Loader 加载外壳 SWF
  我建了一个比较实用的类 ClassLoader 来加载 SWF 文件,并且将其转化为类。以下是一些关键行:
  loader = new Loader();
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
  loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
  ...
  request = new URLRequest(swfLib);
  var contextLoaderContext = new LoaderContext();
  context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
  loader.load(request, context);
  第四步:从加载的 SWF 中生成类,然后实例化
  var wrapperClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
  var wrapper:Object = new wrapperClass();
  第五步:利用 setStyle 应用皮肤
  这个很简单了。
  StyleManager.getStyleDeclaration("Button").setStyle("upSkin", wrapper.rbUpSkin);
  StyleManager.getStyleDeclaration("Button").setStyle("downSkin", wrapper.rbDownSkin);
  StyleManager.getStyleDeclaration("Button").setStyle("disabledSkin", wrapper.rbDisabledSkin);
  StyleManager.getStyleDeclaration("Button").setStyle("overSkin", wrapper.rbOverSkin);
  第六步:运行程序
  那么为什么要这么做呢?动态的皮肤提供给你一个难以置信而格外有力的功能:你可以让你的用户在你的程序上使用他们自己的皮肤。想象一下一个像 Winamp 的 Flex Mp3 播放器。开发人员并不需要为程序建立一个皮肤库,任何人都可以发布一个 UI 通过设置皮肤 SWF (可能在一个配置窗口中)让用户选择任一在社区中提供的皮肤。同样重要的,开发者也有能力来控制哪个皮肤可以被替换,哪个皮肤只能使用原来的皮肤(仅仅对相应的控件调用 setStyle 即可)。最后,将皮肤放到程序的外面,可以有效的保持程序的体积不会太大,肯定要比包含皮肤时要小。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第 1 章 : 简介 目标读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 系统要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 关于本文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 印刷惯例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 本手册中使用的术语 . . . . . . . . . . . . . . . . . . . . . . . . 2 其他资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 第 2 章 : 关于 ActionScript 3.0 组件 使用组件的优点 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 组件类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 在文档中添加和删除组件 . . . . . . . . . . . . . . . . . . . . . . 5 查找组件的版本 . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ActionScript 3.0 事件处理模型 . . . . . . . . . . . . . . . . . . . 7 一个简单的应用程序 . . . . . . . . . . . . . . . . . . . . . . . . 8 第 3 章 : 使用组件 组件体系结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 使用组件文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 调试组件应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . 17 设置参数和属性 . . . . . . . . . . . . . . . . . . . . . . . . . . 17 库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 调整组件大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 实时预览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 处理事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 使用显示列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 使用 FocusManager . . . . . . . . . . . . . . . . . . . . . . . . 23 使用基于 List 的组件 . . . . . . . . . . . . . . . . . . . . . . . 24 使用 DataProvider . . . . . . . . . . . . . . . . . . . . . . . . 24 使用 CellRenderer . . . . . . . . . . . . . . . . . . . . . . . . 31 使组件具有辅助功能 . . . . . . . . . . . . . . . . . . . . . . . . 37 第 4 章 : 使用 UI 组件 使用 Button 组件 . . . . . . . . . . . . . . . . . . . . . . . . . 39 使用 CheckBox 组件 . . . . . . . . . . . . . . . . . . . . . . . . 41 使用 ColorPicker 组件 . . . . . . . . . . . . . . . . . . . . . . .43 使用 ComboBox 组件 . . . . . . . . . . . . . . . . . . . . . . . . 45 使用 DataGrid 组件 . . . . . . . . . . . . . . . . . . . . . . . . 48 使用 Label 组件 . . . . . . . . . . . . . . . . . . . . . . . . . 53 使用 List 组件 . . . . . . . . . . . . . . . . . . . . . . . . . . 55 使用 NumericStepper 组件 . . . . . . . . . . . . . . . . . . . . . 59 使用 ProgressBar 组件 . . . . . . . . . . . . . . . . . . . . . . 61 使用 RadioButton 组件 . . . . . . . . . . . . . . . . . . . . . . 66 使用 ScrollPane 组件 . . . . . . . . . . . . . . . . . . . . . . . 69 使用 Slider 组件 . . . . . . . . . . . . . . . . . . . . . . . . . 71 使用 TextArea 组件 . . . . . . . . . . . . . . . . . . . . . . . . 73 使用 TextInput 组件 . . . . . . . . . . . . . . . . . . . . . . . 76 使用 TileList 组件 . . . . . . . . . . . . . . . . . . . . . . . . 78 使用 UILoader 组件 . . . . . . . . . . . . . . . . . . . . . . . . 81 使用 UIScrollBar 组件 . . . . . . . . . . . . . . . . . . . . . . .82 第 5 章 : 自定义 UI 组件 关于 UI 组件自定义 . . . . . . . . . . . . . . . . . . . . . . . . 85 设置样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 关于外观 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 自定义 Button 组件 . . . . . . . . . . . . . . . . . . . . . . . . 89 自定义 CheckBox 组件 . . . . . . . . . . . . . . . . . . . . . . . 91 自定义 ColorPicker 组件 . . . . . . . . . . . . . . . . . . . . . 93 自定义 ComboBox 组件 . . . . . . . . . . . . . . . . . . . . . . . 94 自定义 DataGrid 组件 . . . . . . . . . . . . . . . . . . . . . . . 96 自定义 Label 组件 . . . . . . . . . . . . . . . . . . . . . . . . 100 自定义 List 组件 . . . . . . . . . . . . . . . . . . . . . . . . 101 自定义 NumericStepper 组件 . . . . . . . . . . . . . . . . . . . 104 自定义 ProgressBar 组件 . . . . . . . . . . . . . . . . . . . . . 105 自定义 RadioButton 组件 . . . . . . . . . . . . . . . . . . . . . 107 自定义 ScrollPane 组件 . . . . . . . . . . . . . . . . . . . . . 108 自定义 Slider 组件 . . . . . . . . . . . . . . . . . . . . . . . 109 自定义 TextArea 组件 . . . . . . . . . . . . . . . . . . . . . . 110 自定义 TextInput 组件 . . . . . . . . . . . . . . . . . . . . . . 112 自定义 TileList 组件 . . . . . . . . . . . . . . . . . . . . . . 113 自定义 UILoader 组件 . . . . . . . . . . . . . . . . . . . . . . 115 自定义 UIScrollBar 组件 . . . . . . . . . . . . . . . . . . . . . 115 第 6 章 : 使用 FLVPlayback 组件 使用 FLVPlayback 组件 . . . . . . . . . . . . . . . . . . . . . . 117 自定义 FLVPlayback 组件 . . . . . . . . . . . . . . . . . . . . . 132 使用 SMIL 文件 . . . . . . . . . . . . . . . . . . . . . . . . . 141 第 7 章 : 使用 FLVPlayback 字幕组件 使用 FLVPlaybackCaptioning 组件 . . . . . . . . . . . . . . . . . 148 使用 Timed Text 字幕 . . . . . . . . . . . . . . . . . . . . . . 150 将提示点用于字幕 . . . . . . . . . . . . . . . . . . . . . . . . 155
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值