var popUpIcon:IFlexDisplayObject =
IFlexDisplayObject(getChildByName("popUpIcon"));
if (!popUpIcon)
{
var popUpIconClass:Class = Class(getStyle("popUpIcon"));
popUpIcon = new popUpIconClass();
DisplayObject(popUpIcon).name = "popUpIcon";
addChild(DisplayObject(popUpIcon));
DisplayObject(popUpIcon).visible = true;
}
popUpIcon.move((w - popUpIcon.width) / 2, (h - popUpIcon.height) / 2);
CSS
PopUpArrow
{
cornerRadius: 0;
upSkin: ClassReference("com.ztesoft.zsmart.corelib.skins.PopUpArrowSkin");
downSkin: ClassReference("com.ztesoft.zsmart.corelib.skins.PopUpArrowSkin");
overSkin: ClassReference("com.ztesoft.zsmart.corelib.skins.PopUpArrowSkin");
disabledSkin: ClassReference("com.ztesoft.zsmart.corelib.skins.PopUpArrowSkin");
popUpIcon: ClassReference("com.ztesoft.zsmart.corelib.skins.PopUpIconSkin");
}
PopUpIconSkin
package com.ztesoft.zsmart.corelib.skins
{
import flash.display.Graphics;
import mx.core.mx_internal;
import mx.skins.ProgrammaticSkin;
/**
* The skin for all the states of the icon in a PopUpButton
*
*/
public class PopUpIconSkin extends ProgrammaticSkin
{
//--------------------------------------------------------------------------
//
// Constructor
//
//--------------------------------------------------------------------------
/**
* Constructor
*/
public function PopUpIconSkin()
{
super();
}
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
/**
* @private
*/
mx_internal var arrowColor:uint = 0x111111;
//--------------------------------------------------------------------------
//
// Overridden properties
//
//--------------------------------------------------------------------------
//----------------------------------
// measuredWidth
//----------------------------------
/**
* @private
*/
override public function get measuredWidth():Number
{
return 7;
}
//----------------------------------
// measuredHeight
//----------------------------------
/**
* @private
*/
override public function get measuredHeight():Number
{
return 5;
}
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
/**
* @private
*/
override protected function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
var g:Graphics = graphics;
g.clear();
g.beginFill(mx_internal::arrowColor);
g.moveTo(w / 2, height);
g.lineTo(0, 0);
g.lineTo(w, 0);
g.lineTo(w / 2, h);
g.endFill();
}
}
}
分享到:
相关推荐
在Flex开发中,深入理解方法调用顺序是至关重要的,特别是在构建复杂的用户界面和应用程序时。Flex是一个基于ActionScript和MXML的开源框架,用于创建富互联网应用(RIA)。本篇我们将探讨Flex中方法调用的顺序,...
本篇文章将详细介绍如何在Flex中实现这一功能,并通过一个具体的示例——`zhuose.mxml`文件,来演示图片和组件着色的方法。 Flex是一种基于ActionScript和MXML的开源框架,主要用于构建富互联网应用程序(RIA)。它...
此外,代码片段中的genAdgColumn和genAdgColumnGroup函数提供了创建数据列和列组的工具方法,进一步说明了如何在实际应用中使用Renderer来实现复杂的用户界面布局。 需要注意的是,由于技术原因,文档中的部分内容...
然而,在中国的应用环境中,我们往往需要使用中文日期格式。这篇博客将指导你如何通过自定义来实现Flex中的中文日期选择。 首先,我们需要了解MX:DateField的基本用法。DateField是Flex MX组件库中的一个类,它提供...
这可以通过在MXML中使用`itemRenderer`属性或者在ActionScript中使用`setStyle("itemRenderer", MyCustomRenderer)`来完成。 4. **数据绑定** 数据绑定是项目渲染器的核心部分,它使得渲染器可以根据数据模型的...
4. 更新组件状态:当组件属性改变时,如颜色或大小,需要覆盖updateDisplayList()方法来更新组件的显示。 5. 注册组件:将组件注册到Flash的组件库中,使其可以在Flash舞台上直接拖放使用。 四、ActionScript3与...
若要实现更复杂的交互,如平滑缩放,可能需要自定义组件,覆盖其updateDisplayList方法,在这里进行自定义的缩放算法。 此外,为了实现图片的流畅浏览,可以使用SpriteSheet或BitmapAnimation来实现动画效果。...
要在Flex 3中使用这个自定义类,我们需要在CSS样式表中指定相应的样式。例如: ```as sample: (ʽед).sample { backgroundImage: Embed(source="assets/bg.gif"); border-skin: ClassReference(...
5. **Struts2整合**:如果项目中使用了Struts2,可以创建一个Action,该Action调用服务层的方法获取图片数据,并在返回结果中包含这个数据。Struts2的`StreamingResult`或者自定义ResultType可以帮助我们正确地将二...
在updateDisplayList()方法中,针对不同类型的子组件,使用setActualSize()或move()方法来调整大小和位置,以确保正确的布局。 综上所述,Flex组件的重写是一个涉及到多方面考虑的过程,需要平衡功能需求、代码...
- **在MXML中使用**: 直接在MXML文件中声明并实例化自定义控件,像使用内置组件一样。 - **在ActionScript中使用**: 通过ActionScript代码动态创建和添加自定义控件到舞台。 7. **源代码分享** - 提供的"Flex...
这通常涉及覆盖`createChildren`和`updateDisplayList`方法来构建和布局渲染器的UI。 3. **使用MXML和ActionScript创建`ItemRenderer`**:`ItemRenderer`可以使用MXML进行声明式编程,也可以使用ActionScript进行...
3. 重写生命周期方法:根据需求覆盖默认行为,例如在`measure()`或`updateDisplayList()`中优化组件的大小和位置计算。 了解并掌握Flex组件的生命周期对于开发高效、响应式的Flex应用至关重要。通过理解这些阶段...
为了在项目中使用这个自定义皮肤,我们需要将其应用到List组件上。在Flex MXML中,可以这样设置: ```mxml <!-- 数据提供者和其他属性 --> ``` 这就是关于“AS3写Flex皮肤问题代码”的详细解释。通过自定义Flex...
6. 在DataGrid中使用自定义ItemRenderer:在DataGrid的`itemRenderer`属性中指定我们的自定义ItemRenderer类。例如,`<mx:DataGridColumn dataField="name" itemRenderer="com.mycompany.CustomCellRenderer" />`。 ...
解决方法是在ItemRenderer中声明一个中间变量,通过override set data方法将ArrayCollection的子元素传递给这个变量,再使用该变量作为绑定源。 #### 8. 实现代码分离 虽然MVC模式在Flex中很流行,但实际开发中...
2. **定义外观和布局**:在自定义组件中,你可以通过覆盖`drawRect()`、`updateDisplayList()`等方法来绘制组件的外观。同时,如果需要处理组件的大小和位置,可以重写`measure()`和`updateDisplayList()`方法来实现...
在这个类中,你可以覆盖`updateDisplayList()`方法,这个方法会在渲染器绘制之前被调用。 2. **设置背景色** 在`updateDisplayList()`方法内,可以使用`Graphics`对象来绘制背景色。例如: ```actionscript ...
updateDisplayList()方法则根据之前的属性和样式设置,确定组件的子组件在屏幕上的大小和位置,并绘制所有使用的皮肤和图形元素。这个方法是最终将组件的视觉表现呈现给用户的操作。 除了这些重载方法外,开发者在...