You are missing some Flash content that should appear here! Perhaps your browser cannot display it, or maybe it did not initialize correctly.
前段时间使用到 List 来分页,使用按钮来滚动时运行的很好,但鼠标的滑轮也会影响滚动条,使得按钮显示错了页码。于是想到要把滑轮禁掉。
Flex 中滑轮事件的简要介绍如下:
Spark容器的滚动条不像Halo一样会自动加载,它已被独立出来,需要我们自行设计。
和Spark架构的其他新特性一样,全新的布局一样是在强大的Halo布局的基础上发展而来的。Flex3开发者将会发现了解通用执行流程以及相应 的API以及布局逻辑都是十分容易的 。然而,由于Spark更加注重模块化设计所以在一些地方还是有所不同与改进的。
在最新的 sdk 里我们不能再用混合编译模式了,默认的主题也改了,Flex 3 的一些样式设计方法都出了问题,不过现在还是有方法
继续停留在过去:
一、修改 Flex 项目的主题
新的 SDK 默认是spark 的主题,所以有很多布局的属性在 mx 里不能用了,但可以在项目的属性里修改主题为 halo ,这样,大部分样式的设计还是可以继续使用的。
二、修改外观设计
Spark 皮肤是 Flex 4 中的一个新特性。spark.skins 包包含在 Spark 名称空间中,并且已在Adobe 的 Flex 4 LiveDocs 中说明:“自定义 Spark 皮肤为 MXML 文件,定义组成 Spark 组件皮肤的逻辑、图形元素和其他对象”。
spark组件有自己的皮肤,名称就是 组件名+Skin。例如, Textinput 的皮肤文件是 TextinputSkin。
皮肤组件的编写格式都比较相似,我们也可以按照源码自行设计自己所需的皮肤,在 spark 组件的 skinClass 属性制定即可。
下面以 TextinputSkin 为例,简单介绍皮肤的创建过程。
一、命名空间
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
alpha.disabled="0.5" blendMode="normal">
二、定义主机组件
定义主机组件时,可以从皮肤中访问该主机组件中包含的公开属性和样式。
<fx:Metadata>
<![CDATA[
/**
Flash Player 会以SWF内容的帧频速度来刷新需要变化的内容,而这个刷新的过程,我们通常称为“重绘(redraw)”,只要使用的是 Debug版本的Flash Player, 右键菜单里就会有“Show Redraw Regions (显示重绘区域)” 这个选项,当此选项打开的时候,我们就能清楚地看到此刻场景内被重绘的区域。
那么什么情况下会发生重绘呢?
1、最常见的是情况就是舞台上的可视组件在形状、位置、状态(alpha, scale...)发生改变的时候会触发Flash Player 的重绘。
2、当一个DisplayObject的层级(ChildIndex)发生改变的时候也会导致重绘。
3、当你将一个Sprite / MovieClip 的buttonMode 设置为 true 的时候,即便是单帧动画,重绘会在MouseEvent.MOUSE_DOWN的时候触发。又或者你对DisplayObject设置层级的时候,即便 DisplayObject的层级没有发生改变,也会使得 Flash Player对此显示对象进行重绘。
我们在国际化时,修改了Flex SDK 的语言包,可以自动变换语言。
不过,我们也可以直接设置一部分的显示,例如改变DateChooser上的中文标题:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
<fx:Declarations>
<mx:DateChooser id="dtchoose" x="219" y="83"
dayNames="[日,一,二,三,四,五,六]"
monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月]"
change="disDate()" minYear="2007"/>
<fx:Script>
看来大家对Array情有独钟,对它讨论的很多,这两天看了篇关于flex如何减少代码量减少内存消耗的帖子,其实也像是代码重整,翻译整理了一下。
前面主要是关于Array的,后面涉及很多,不过有些估计不适用于Flex4了。
1. Avoid the new operator when creating Arrays
尽量避免用new操作符来创建数组
var a = [];
NOT:
var a = new Array();
2. Arrays are expensive to create, do so conservatively
创建数组花销很大,要适当的创建
var vanityCollection01 : Array = new Array();
var vanityCollection02 : Array = new Array();
var vanityCollection03 : Array = new Array();
var vanityCollection04 : Array = new Array();
3. Fastest way to copy an array:
复制数组的快捷方法:
var copy : Array = sourceArray.concat();