现在的位置: 首页 > 综合 > 正文

ActionScript 创建自定义组件

2012年07月29日 ⁄ 综合 ⁄ 共 3507字 ⁄ 字号 评论关闭

   本文引自<Flash 8 ActionScript 宝典>第30章节 创建自定义组件.

            本例实现的是一个滑动条的小列.        

            step 1.新建名为Slider.fla的Flash文档.将其保存在Slider001目录中
            step 2.在文档中新建名为Slider的MovieClip元件.
            step 3.创建Slider类,将其保存在 Slider001\actionscriptbible\components 目录下

//声明名称为Slider的类。该类位于actionscriptbible.components包中。
//
该类应该护展MovieClip。
class actionscriptbible.components.Slider extends MovieClip
{
    
//该Slider组件由一个翻页栏和
    //一个随着翻页栏而移动的轨道组成
    private var _mThumbBar:MovieClip;
    private 
var _mTrack:MovieClip;
    
    
//定义一个私有属性,以便存储Slider组件的当前值。
    //该值的范围是0-100。
    private var _nValue:Number;
    
    
//该组件使用一个侦听器对象来检测鼠标移动.
    private var _oMouseListener:Object;
    
    
//该组件使用下面两个属性来确定该组件实例的宽和高。
    private var _nWidth:Number;
    private 
var _nHeight:Number;
    
    
//定义一个"获取函数"方法
    //以便用value属性名来公共地访问_nValue。
    public function get value():Number
    
{
        
return _nValue;
    }

    
    
//定义一个构造函数。当创建该组件的一个新的实例时,
    //就会自动调用该构造函数。
    public function Slider()
    
{
        
//定义宽和高的默认值。
        _nWidth=200;
        _nHeight
=10;
        
        
//将_nValue初始化成0.
        if(_nValue==undefined)
        
{
            _nValue
=0;
        }

            
//为翻页栏和轨道创建影片剪辑
        _mTrack=createEmptyMovieClip("_mTrack",getNextHighestDepth());
        _mThumbBar
=createEmptyMovieClip("_mThumbBar",getNextHighestDepth());
    
        
//绘制该组件。
        draw();
    
        
//定义侦听器对象,以便检测鼠标移动事件。
        //该侦听器对象调用Slider实例的update()方法。
        _oMouseListener=new Object();
        _oMouseListener.onMouseMove
=mx.utils.Delegate.create(this,update);
    
        
//给名为mThumbbar的MovieClip对象
        //定义onPress()方法和onRelease()方法。
        _mThumbBar.onPress=mx.utils.Delegate.create(this,onPressThumbBar);
        _mThumbBar.onRelease
=mx.utils.Delegate.create(this,onReleaseThumbBar);
        _mThumbBar.onReleaseOutside
=_mThumbBar.onRelease;
    }

    
    private 
function draw():Void
    
{
        
//清除以前绘制的所有内容。
        _mThumbBar.clear();
        _mTrack.clear();
        
        
//画一个5个象素宽的、高由_nHeight指定的翻页栏。
        _mThumbBar.lineStyle(0,0,0);
        _mThumbBar.beginFill(
0,100);
        _mThumbBar.lineTo(
5,0);
        _mThumbBar.lineTo(
5,_nHeight);
        _mThumbBar.lineTo(
0,_nHeight);
        _mThumbBar.lineTo(
0,0);
        _mThumbBar.endFill();
        
        
//画一个10个像素的、宽由_nWidth指定的轨道。
        _mTrack.lineStyle(0,0,100);
        _mTrack.lineTo(_nWidth,
0);
        _mTrack.lineTo(_nWidth,
5);
        _mTrack.lineTo(
0,5);
        _mTrack.lineTo(
0,0);
        
        
//将轨道放置成垂直居中。
        _mTrack._y=_height/2 - 2.5;
    }

    
    private 
function onPressThumbBar():Void
    
{
        
//当用户在对象上按下鼠标时,
        //使该对象在指定的范围内是可拖动的。
        _mThumbBar.startDrag(false,0,0,_mTrack._width-_mThumbBar._width+.5,0);
        
//告诉该组件开始检测鼠标的移动事件。
        Mouse.addListener(_oMouseListener);
        
    }

    
    private 
function onReleaseThumbBar():Void
    
{
        
//当用户释放翻页栏时,就告诉Flash停止拖动该翻页栏。
        _mThumbBar.stopDrag();
        
        
//告诉该组件停止检测鼠标的移动事件。
        Mouse.removeListener(_oMouseListener);
        update();
    }

    
    
//只要按下翻页栏而鼠标移动时,就调用update()方法。
    //该方法只是更改_nValue,以便反映翻页栏的当前x坐标。
    private function update():Void
    
{
        _nValue
=Math.round((_mThumbBar._x)/(_mTrack._width + .5 -_mThumbBar._width) * 100);
    }
    
}

             step 4.在Flash文档中将Slider元件链接标识符设为Slider,AS 2.0 Class:actionscriptbible.components.Slider即完全限定名.
             step 5.创建Slider元件的实例.名为sldExample
             step 6.新建Actions图层,在第一帧中加入以下代码:

setInterval(checkValue,1000);

function checkValue():Void
{
    trace(sldExample.value);
}

            step 7.测试.应该看到Slider实例和被显示在Output面板中的值.当拖动滑块可改变该值.

抱歉!评论已关闭.