`

在覆盖updateDisplayList方法中使用 图标的经典写法

 
阅读更多

 

			
			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开发中,深入理解方法调用顺序是至关重要的,特别是在构建复杂的用户界面和应用程序时。Flex是一个基于ActionScript和MXML的开源框架,用于创建富互联网应用(RIA)。本篇我们将探讨Flex中方法调用的顺序,...

    flex中给图片或任意组件着色的方法

    本篇文章将详细介绍如何在Flex中实现这一功能,并通过一个具体的示例——`zhuose.mxml`文件,来演示图片和组件着色的方法。 Flex是一种基于ActionScript和MXML的开源框架,主要用于构建富互联网应用程序(RIA)。它...

    如何在Renderer中设置属性 Renderer中设置属性的方法实例

    此外,代码片段中的genAdgColumn和genAdgColumnGroup函数提供了创建数据列和列组的工具方法,进一步说明了如何在实际应用中使用Renderer来实现复杂的用户界面布局。 需要注意的是,由于技术原因,文档中的部分内容...

    Flex实现自定义中文日期选择(mx:DateField)

    然而,在中国的应用环境中,我们往往需要使用中文日期格式。这篇博客将指导你如何通过自定义来实现Flex中的中文日期选择。 首先,我们需要了解MX:DateField的基本用法。DateField是Flex MX组件库中的一个类,它提供...

    flex+as3项目渲染器的使用

    这可以通过在MXML中使用`itemRenderer`属性或者在ActionScript中使用`setStyle("itemRenderer", MyCustomRenderer)`来完成。 4. **数据绑定** 数据绑定是项目渲染器的核心部分,它使得渲染器可以根据数据模型的...

    Creating_ActionScript3_components_in_flash_source

    4. 更新组件状态:当组件属性改变时,如颜色或大小,需要覆盖updateDisplayList()方法来更新组件的显示。 5. 注册组件:将组件注册到Flash的组件库中,使其可以在Flash舞台上直接拖放使用。 四、ActionScript3与...

    flex 两个图片播放小程序

    若要实现更复杂的交互,如平滑缩放,可能需要自定义组件,覆盖其updateDisplayList方法,在这里进行自定义的缩放算法。 此外,为了实现图片的流畅浏览,可以使用SpriteSheet或BitmapAnimation来实现动画效果。...

    Flex中背景平铺的做法

    要在Flex 3中使用这个自定义类,我们需要在CSS样式表中指定相应的样式。例如: ```as sample: (ʽед).sample { backgroundImage: Embed(source="assets/bg.gif"); border-skin: ClassReference(...

    在flex的dataGrid控件中显示图片的实践

    5. **Struts2整合**:如果项目中使用了Struts2,可以创建一个Action,该Action调用服务层的方法获取图片数据,并在返回结果中包含这个数据。Struts2的`StreamingResult`或者自定义ResultType可以帮助我们正确地将二...

    flex组件重写

    在updateDisplayList()方法中,针对不同类型的子组件,使用setActualSize()或move()方法来调整大小和位置,以确保正确的布局。 综上所述,Flex组件的重写是一个涉及到多方面考虑的过程,需要平衡功能需求、代码...

    Flex自定义控件

    - **在MXML中使用**: 直接在MXML文件中声明并实例化自定义控件,像使用内置组件一样。 - **在ActionScript中使用**: 通过ActionScript代码动态创建和添加自定义控件到舞台。 7. **源代码分享** - 提供的"Flex...

    ItemRanderer Examples

    这通常涉及覆盖`createChildren`和`updateDisplayList`方法来构建和布局渲染器的UI。 3. **使用MXML和ActionScript创建`ItemRenderer`**:`ItemRenderer`可以使用MXML进行声明式编程,也可以使用ActionScript进行...

    【完美翻译】Flex组件的生命周期

    3. 重写生命周期方法:根据需求覆盖默认行为,例如在`measure()`或`updateDisplayList()`中优化组件的大小和位置计算。 了解并掌握Flex组件的生命周期对于开发高效、响应式的Flex应用至关重要。通过理解这些阶段...

    AS3写Flex皮肤问题代码

    为了在项目中使用这个自定义皮肤,我们需要将其应用到List组件上。在Flex MXML中,可以这样设置: ```mxml <!-- 数据提供者和其他属性 --> ``` 这就是关于“AS3写Flex皮肤问题代码”的详细解释。通过自定义Flex...

    ItemRendererTutorial.zip

    6. 在DataGrid中使用自定义ItemRenderer:在DataGrid的`itemRenderer`属性中指定我们的自定义ItemRenderer类。例如,`<mx:DataGridColumn dataField="name" itemRenderer="com.mycompany.CustomCellRenderer" />`。 ...

    Flex面试题及答案

    解决方法是在ItemRenderer中声明一个中间变量,通过override set data方法将ArrayCollection的子元素传递给这个变量,再使用该变量作为绑定源。 #### 8. 实现代码分离 虽然MVC模式在Flex中很流行,但实际开发中...

    (十八)Flex4_自定义ActionScript组件

    2. **定义外观和布局**:在自定义组件中,你可以通过覆盖`drawRect()`、`updateDisplayList()`等方法来绘制组件的外观。同时,如果需要处理组件的大小和位置,可以重写`measure()`和`updateDisplayList()`方法来实现...

    FLEX 修改表格的单元格背景色

    在这个类中,你可以覆盖`updateDisplayList()`方法,这个方法会在渲染器绘制之前被调用。 2. **设置背景色** 在`updateDisplayList()`方法内,可以使用`Graphics`对象来绘制背景色。例如: ```actionscript ...

    ActionScript高级组件

    updateDisplayList()方法则根据之前的属性和样式设置,确定组件的子组件在屏幕上的大小和位置,并绘制所有使用的皮肤和图形元素。这个方法是最终将组件的视觉表现呈现给用户的操作。 除了这些重载方法外,开发者在...

Global site tag (gtag.js) - Google Analytics