请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 9841|回复: 28

[AS3] 軒辰的AS3進階研究長篇連栽-滾動條專題 [复制链接]

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-16 06:37:15 |显示全部楼层
需要說明的是
1.我并不是研究邏輯和算法的高手,我FLASH的目標偏重于設計和程序的結合,所以算法上面
大家的意見和批評我一定會虛心聽取的。
2.這個系列不是屬于入門教程的範疇,建議進階級別玩家閱讀。
3.這個系列包含大量的圖形元素,建議大家在網速不錯的時候進來。
4.對于網上同樣的東西,在這個系列裏面也會講的比較深入,而且加入許多擴展的應用進來,
希望遇到更多的對于設計代碼結合有深入研究意願的朋友進來一起探討。



滾動板板組件深入探討


1.設計滾動面板參數和視覺架構
2.加入反向拖曳功能
3.加入按鈕延遲設定
4.創建緩衝或者分級緩衝滾動條效果
5.爲滾動條目加入releaseOutSide判定
6.創建滾動條直達功能
7.創建tip滾動位置提示


篇一:原理 & 架構篇
坐標的計算,
總的來說 一個滾動板板,恩這麽叫的確是有點點奇怪。。。
一個滾動裝置,其主要組成部分爲
一個目標滾動對象,此對象一般繼承自一個基本的顯示基類
一個滾動條對象,用來控制目標滾動對象的坐標



以下使用縱向的滾動條進行圖示:



如圖 ,一個帶內容的滾動面板 包含了一個基本的顯示區域,通常稱之爲遮罩。
而內容對象的y , 也就是縱坐標在最初時候爲0。而混動條的滾動位置百分比
也爲0%。



當滾動條處于最大移動狀態,即滾動位置百分比數字爲100%,這個時候內容對象的移動位置
處于最大狀態,而他的坐標處于最小值,因爲在程序UI世界里,通常情况下使用的并不是
幾何學中的坐標系,而源于笛卡爾坐標系,即縱越向下方值越大,而橫越向右邊值越大。



內容的縱坐標 = v滾動位置百分比 * ( 可見區域的高度 - 內容的高度 );
內容的橫坐標 = h滾動位置百分比 * ( 可見區域的寬度 - 內容的寬度 );




現在開始是重點

滾動條組件架構的參數設置

自定義的滾動條都包含視覺元素,最精簡視覺架構况包含了:
upShape滾動條向上按鈕圖形
downShape滾動條向下按鈕圖形
dragShape滾動條拖曳按鈕圖形
backShape滾動條背景圖形
hidenShape滾動條的占位圖形



與之共存的顯示對象參數
top 在占位圖形範圍內,指定上邊界
bottom 在占位圖形範圍內,指定下邊界
left 在占位圖形範圍內,指定左邊界
right 在占位圖形範圍內,指定右邊界

dragTop拖曳範圍的最高位置
dragBottom拖曳範圍的最低位置

考慮到可能出現APPLE那樣非矩形的拖曳部分,加入拖動範圍偏移值
upOffset向上偏移量
downOffset向下偏移量



滾動面板架構部分:
動條,這裏的考慮和系統組件有所不同
實際應用中,如果內容寬度超過的限制的時候,應該出現
橫向的滾動條,可是這個時候縱向的滾動條也會出現,因爲橫向滾動條組件實際
也占內容寬度的計算。下麵的例子可以說明這個情况。

test.jpg是任意100*100的圖片

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Canvas x="0" y="100" width="100" height="100" backgroundColor="#5D1616">
                <mx:Image x="0" y="0" source="test.jpg"/>
        </mx:Canvas>
        <mx:Canvas x="130" y="100" width="90" height="100" backgroundColor="#5D1616">
                <mx:Image x="0" y="0" source="test.jpg"/>
        </mx:Canvas>
</mx:Application>

而我們設計輕量組件完全可以避免這個問題
我們用_visual麳標識顯示範圍,這個遮罩和滾動面板大小是相同的。
超過範圍使用內容的寬度高度和_visual的寬度高度取差。

2007/12/15
待續。

[ 本帖最后由 enc0717 于 2011-3-10 02:56 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
mirycat + 3 图文并茂, 很好的帖子, 只不过关于滚动 ...

总评分: 威望 + 3   查看全部评分

purple.Starpulse
西部数码顶级域名注册商39元抢注!
enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-16 06:40:38 |显示全部楼层
從這個時間開始,開始連載AS3的進階應用教程。希望大家喜歡。
內容全部完全原創,寫的不好的希望不要打我HO。
purple.Starpulse
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-16 08:52:09 |显示全部楼层
繼續説説混動條的架構想法

以這個組件爲例,位于net.purplewind.uicomponents包下的ScrollBar超類,其中包含了爲混動條設計的層級容器
組成,爲了實現顯示很功能的分配,以及組件在信息更新時候儘可能不要有BUG,還有在不銷毀不重新構造的情况
下,可以快速的調整組件的參數并更新到顯示。

ScrollBar類的描述:
簡單的説,這裏包含了混動條中定義需要實現的功能和視覺層級。定義了混動條按鈕各種鼠標事件的分派處理
函數。子類只需要覆蓋掉這些處理函數而不需要重新添加偵聽。最初這個類只是爲了把非邏輯的代碼儘量集中,而
能够讓子類更多的偏向實現邏輯。



verticalScrollBar和HorizontalScrollBar都獨立出來擁有自己的參數和一個fill方法
最初這個方法來源于flash.display.Shape的graphics.beginFill的填充思想。
也就是先定義好需要填充的內容然後畫畫,同樣的。對于組件,也可以定義
好它的元件組成,然後填充這個實例讓他變成可以使用的東東。


參數詳細說明:


ScrollBar
橙色參數:視覺架構,其中tempLayer設計用來創建releaseOutSide事件
而accelerateLayer設計用來發生滾動條直接跳轉的事件源對象。
藍色參數:2層結構,設計用來方便快捷加入删除元件使用。相比
使用循環removeChildAt(0)更加直接和快捷,缺點是占用較多的資源。
紫色參數:隱藏數據屬性,不提供直接對外操作。
綠色函數:所有需要的按鈕事件處理函數,因爲放不下的關係,有個別函數不在圖中,請原諒^_^。
紫色函數:功能函數



VerticalScollBar ( HorizontalScrollBar類似,略 )
紅色屬性:控制滾動條在它的長寬範圍內部允許設置上左下右邊距。
綠色屬性:所有可以直接賦值的視覺元素如果不設定無法成功fill()組件。
藍色屬性:用于占位和背景圖形。
紫色屬性:按鈕元素


在我的實現。對于一個組件,是存在兩個包的,呵呵,我不知道各位大俠是怎麽想的,我還是先説説我的觀點。

邏輯部分的實現我分成了兩個部分
在這個uicomponents包裏面,所有的邏輯都是針對于圖形之間互動,比如説一個按鈕有三種狀態,他們需要同步
移動,修改_width等屬性對于顯示參數的影響等等。在這個包裏實現豐富的基于基本應用視覺互動效果。
也就是説由此類派生的實例是擁有了基本的交互行爲,但是不和任何別的內容發生交互的實例,它不能控制滾動。
而實際用的時候開另一個components包,從對于的uicomponents的類中得到需要需要的基本交互行爲,再
根據實際的需要加入必要的邏輯,這樣你可以使得你的滾動條可以不單單用戶滾動條的功能範疇。

[ 本帖最后由 enc0717 于 2007-12-17 09:54 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
purple.Starpulse

使用道具 举报

jevin 

小丑鱼

银牌会员

帖子
1562
体力
5411
威望
0
发表于 2007-12-16 17:43:11 |显示全部楼层
这版块应该多点这样的帖子
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-

使用道具 举报

birdcs 
帖子
119
体力
489
威望
0
发表于 2007-12-16 20:26:05 |显示全部楼层
费心了 支持下 ^_^

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:12:23 |显示全部楼层
到目前爲止還沒有SWF例子給大家看,比較鬱悶HO?
呵呵,下一次連載邏輯實現的時候,就有了!
請耐心等待哦。相信慎密的考慮不會白費的。。


下麵是目前爲止類的基本構成.HOHO.有點長。


ScrollBar


  1. package net.purplewind.uicomponents
  2. {////////////////////////////////////////////////////////////////////////
  3.     import flash.display.Sprite;
  4.     import flash.events.Event;
  5.    
  6.     public class ScrollBar extends Sprite
  7.     {
  8.         
  9.         
  10.         //--------------------------------------------
  11.         // 顯示層級架構
  12.         //--------------------------------------------
  13.         /**背景層級*/
  14.         protected var backLayer      :Sprite;
  15.         protected var _back          :Sprite;
  16.         /**按鈕層級*/
  17.         protected var btnsLayer      :Sprite;
  18.         protected var _btns          :Sprite;
  19.         /**加速功能所需層級*/
  20.         protected var accelerateLayer:Sprite;
  21.         protected var _accelerate    :Sprite;
  22.         /**外部釋放鼠標臨時區域層級*/
  23.         protected var tempLayer      :Sprite;
  24.         protected var _temp          :Sprite;
  25.         /**拖曳層級*/
  26.         protected var dragLayer      :Sprite;
  27.         protected var _drag          :Sprite;
  28.         
  29.         //--------------------------------------------
  30.         // 功能參數
  31.         //--------------------------------------------
  32.         protected var _canRectifyPosition:Boolean;
  33.         protected var _canScaleDrag:Boolean;
  34.         
  35.         //--------------------------------------------
  36.         // 按鈕
  37.         //--------------------------------------------
  38.         protected var leftBtn         :Sprite;
  39.         protected var rightBtn        :Sprite;
  40.         protected var upBtn           :Sprite;
  41.         protected var downBtn         :Sprite;
  42.         protected var dragBtn         :Sprite;
  43.         //---
  44.         protected var _span           :Number;
  45.         public function set span ( value:Number ):void {
  46.                 _span = value;
  47.         }
  48.         public function get span ():Number {
  49.                 return _span;
  50.         }
  51.         
  52.         //--------------------------------------------------
  53.         // 構造方法
  54.         //--------------------------------------------------
  55.         public function ScrollBar () {
  56.                 span                     = 1;
  57.             leftBtn                  = new Sprite ();
  58.             rightBtn                 = new Sprite ();
  59.             upBtn                    = new Sprite ();
  60.             downBtn                  = new Sprite ();
  61.             dragBtn                  = new Sprite ();
  62.             backLayer                = new Sprite ();
  63.             btnsLayer                = new Sprite ();
  64.             accelerateLayer          = new Sprite ();
  65.             tempLayer                = new Sprite ();
  66.             dragLayer                = new Sprite ();
  67.             _back                    = new Sprite ();
  68.             _btns                    = new Sprite ();
  69.             _accelerate              = new Sprite ();
  70.             _drag                    = new Sprite ();
  71.             _temp                    = new Sprite ();
  72.             backLayer.addChild       ( _back           );
  73.             btnsLayer.addChild       ( _btns           );
  74.             accelerateLayer.addChild ( _accelerate     );
  75.             tempLayer.addChild       ( _temp           );
  76.             dragLayer.addChild       ( _drag           );
  77.             addChild                 ( backLayer       );
  78.             addChild                 ( btnsLayer       );
  79.             addChild                 ( accelerateLayer );
  80.             addChild                 ( dragLayer       );
  81.             addChild                 ( tempLayer       );
  82.         }
  83.         
  84.         
  85.         //--------------------------------------------------
  86.         // 共有方法
  87.         //--------------------------------------------------
  88.         
  89.         /**設置拖曳條的縮放*/
  90.         public function setDragScale ( percent:Number ):void {
  91.                 //override
  92.         }
  93.         /**
  94.          * 設置寬度 此函數對于縱向滾動條并不産生效果
  95.          * @param width:Number 設置橫向滾動條寬度
  96.          */
  97.         public function setWidth ( width:Number ):void {
  98.             //override
  99.         }
  100.         
  101.         /**
  102.          * 設置高度 此函數對于橫向滾動條并不産生效果
  103.          * @param width:Number 設置橫向滾動條高度
  104.          */
  105.         public function setHeight             ( height:Number ):void {
  106.             //override
  107.         }
  108.         
  109.         
  110.         
  111.         //--------------------------------------------------
  112.         // 向上按鈕
  113.         //--------------------------------------------------
  114.         /**上滾按鈕滑過*/
  115.         protected function upRollOver         ( event:Event ):void {
  116.             //trace ( "default rollover action  [ up btn ]");
  117.         }
  118.         /**上滾按鈕滑出*/
  119.         protected function upRollOut          ( event:Event ):void {
  120.             //trace ( "default rollout action  [ up btn ]");
  121.         }
  122.         /**上滾按鈕點擊*/
  123.         protected function upClick            ( event:Event ):void {
  124.             //trace ( "default click action  [ up btn ]");
  125.         }
  126.         /**上滾按鈕按下*/
  127.         protected function upDown             ( event:Event ):void {
  128.                 //trace ( "default down action  [ up btn ]");
  129.         }
  130.         /**上滾按鈕松開*/
  131.         protected function upUp               ( event:Event ):void {
  132.                 //trace ( "default up action  [ up btn ]");
  133.         }
  134.         /**上滾按鈕移動*/
  135.         protected function upLeave            ( event:Event ):void {
  136.                 //trace ( "default leave action  [ up btn ]");
  137.         }
  138.         /**上滾按鈕外部釋放*/
  139.         protected function upReleaseOutSide   ( event:Event ):void {
  140.                 //trace ( "default release out side action  [ up btn ]");
  141.         }
  142.         
  143.         //--------------------------------------------------
  144.         // 向下按鈕
  145.         //--------------------------------------------------
  146.         /**下滾按鈕滑過*/
  147.         protected function downRollOver       ( event:Event ):void {
  148.             //trace ( "default rollover action  [ down btn ]");
  149.         }
  150.         /**下滾按鈕滑出*/
  151.         protected function downRollOut        ( event:Event ):void {
  152.             //trace ( "default rollout action  [ down btn ]");
  153.         }
  154.         /**下滾按鈕點擊*/
  155.         protected function downClick          ( event:Event ):void {
  156.             //trace ( "default click action  [ down btn ]");
  157.         }
  158.         /**下滾按鈕按下*/
  159.         protected function downDown           ( event:Event ):void {
  160.                 //trace ( "default down action  [ down btn ]");
  161.         }
  162.         /**下滾按鈕松開*/
  163.         protected function downUp             ( event:Event ):void {
  164.                 //trace ( "default up action  [ down btn ]");
  165.         }
  166.          /**下滾按鈕移動*/
  167.         protected function downLeave          ( event:Event ):void {
  168.                 //trace ( "default leave action  [ down btn ]");
  169.         }
  170.         /**下滾按鈕外部釋放*/
  171.         protected function downReleaseOutSide ( event:Event ):void {
  172.                 //trace ( "default release out side action  [ down btn ]");
  173.         }
  174.         
  175.         //--------------------------------------------------
  176.         // 向前按鈕
  177.         //--------------------------------------------------
  178.         /**前滾按鈕滑過*/
  179.         protected function leftRollOver       ( event:Event ):void {
  180.             //trace ( "default rollover action  [ left btn ]");
  181.         }
  182.         /**前滾按鈕滑出*/
  183.         protected function leftRollOut        ( event:Event ):void {
  184.             //trace ( "default rollout action  [ left btn ]");
  185.         }
  186.         /**前滾按鈕點擊*/
  187.         protected function leftClick          ( event:Event ):void {
  188.             //trace ( "default click action  [ left btn ]");
  189.         }
  190.          /**前滾按鈕按下*/
  191.         protected function leftDown           ( event:Event ):void {
  192.                 //trace ( "default down action  [ left btn ]");
  193.         }
  194.         /**前滾按鈕松開*/
  195.         protected function leftUp             ( event:Event ):void {
  196.                 //trace ( "default up action  [ left btn ]");
  197.         }
  198.          /**前滾按鈕移動*/
  199.         protected function leftLeave          ( event:Event ):void {
  200.                 //trace ( "default leave action  [ left btn ]");
  201.         }
  202.         /**前滾按鈕外部釋放*/
  203.         protected function leftReleaseOutSide ( event:Event ):void {
  204.                 //trace ( "default release out side action  [ left btn ]");
  205.         }
  206.         
  207.         
  208.         //--------------------------------------------------
  209.         // 向後按鈕
  210.         //--------------------------------------------------
  211.         /**後滾按鈕滑過*/
  212.         protected function rightRollOver      ( event:Event ):void {
  213.             //trace ( "default rollover action  [ right btn ]");
  214.         }
  215.         /**後滾按鈕滑出*/
  216.         protected function rightRollOut       ( event:Event ):void {
  217.             //trace ( "default rollout action  [ right btn ]");
  218.         }
  219.         /**後滾按鈕點擊*/
  220.         protected function rightClick         ( event:Event ):void {
  221.             //trace ( "default click action  [ right btn ]");
  222.         }
  223.          /**前滾按鈕按下*/
  224.         protected function rightDown          ( event:Event ):void {
  225.                 //trace ( "default down action  [ right btn ]");
  226.         }
  227.         /**前滾按鈕松開*/
  228.         protected function rightUp            ( event:Event ):void {
  229.                 //trace ( "default up action  [ right btn ]");
  230.         }
  231.          /**前滾按鈕移動*/
  232.         protected function rightLeave         ( event:Event ):void {
  233.                 //trace ( "default leave action  [ right btn ]");
  234.         }
  235.         /**前滾按鈕外部釋放*/
  236.         protected function rightReleaseOutSide( event:Event ):void {
  237.                 //trace ( "default release out side action  [ right btn ]");
  238.         }
  239.         
  240.         //--------------------------------------------------
  241.         // 拖曳按鈕
  242.         //--------------------------------------------------
  243.         /**拖曳條滑過*/
  244.         protected function dragRollOver       ( event:Event ):void {
  245.             //trace ( "default rollover action  [ drag btn ]");
  246.         }
  247.         /**拖曳條滑出*/
  248.         protected function dragRollOut        ( event:Event ):void {
  249.             //trace ( "default rollout action  [ drag btn ]");
  250.         }
  251.         /**拖曳條按下*/
  252.         protected function dragDown           ( event:Event ):void {
  253.            //trace ( "default down action  [ drag btn ]");
  254.         }
  255.         /**拖曳條在自己圖形範圍內鬆開*/
  256.         protected function dragUp             ( event:Event ):void {
  257.             //trace ( "default up action  [ drag btn ]");
  258.         }
  259.         /**拖曳條移動*/
  260.         protected function dragMove           ( event:Event ):void {
  261.                 //trace ( "default move action  [ drag btn ]");
  262.         }
  263.         /**拖曳條移出了舞臺*/
  264.         protected function dragLeave          ( event:Event ):void {
  265.                 //trace ( "default leave action  [ drag btn ]");
  266.         }
  267.         /**拖曳條在自己圖形範圍外鬆開*/
  268.         protected function dragReleaseOutSide ( event:Event ):void {
  269.             //trace ( "default releaseOutSide action  [ drag btn ]");
  270.         }
  271.         
  272.         
  273.         //--------------------------------------------------
  274.         // 功能設定
  275.         //--------------------------------------------------
  276.         /**直接滾動到指定位置*/
  277.         public function goto                  ( pos:Number   ):void {
  278.             //override
  279.         }
  280.         /**分級緩動單位移動量*/
  281.         public function setEasingUnit         ( unit:Number  ):void {
  282.             //override
  283.         }
  284.         /**設置混動條目按下直到發生移動的延遲 毫秒單位*/
  285.         public function setDelay              ( ms:Number    ):void {
  286.             //override
  287.         }
  288.         /**設置開啓或者關閉拖曳條的坐標糾正功能*/
  289.         public function set canRectifyPosition( able:Boolean ):void {
  290.             _canRectifyPosition = able;
  291.         }
  292.         public function get canRectifyPosition(              ):Boolean {
  293.             return _canRectifyPosition;
  294.         }
  295.         /**是否啓用拖曳條根據目標內容進行縮放*/
  296.         public function set canScaleDrag      ( able:Boolean ):void {
  297.             _canScaleDrag = able;
  298.         }
  299.         public function get canScaleDrag      (              ):Boolean {
  300.             return _canScaleDrag;
  301.         }
  302.         
  303.         //--------------------------------------------------
  304.         // 層級清理設定
  305.         //--------------------------------------------------
  306.         /**清空背景層信息*/
  307.         protected function clearBack          (              ):void {
  308.                 backLayer.removeChild ( _back );
  309.                 _back = new Sprite ();
  310.                 backLayer.addChild ( _back );
  311.         }
  312.         /**清空加速層信息*/
  313.         protected function clearAccelerate    (              ):void {
  314.                 accelerateLayer.removeChild ( _accelerate );
  315.                 _accelerate = new Sprite ();
  316.                 accelerateLayer.addChild ( _accelerate );
  317.         }
  318.         /**清空拖曳臨時層信息*/
  319.         protected function clearTemp      (              ):void {
  320.                 tempLayer.removeChild ( _temp );
  321.                 _temp = new Sprite ();
  322.                 tempLayer.addChild ( _temp );
  323.         }
  324.         /**清空拖曳層信息*/
  325.         protected function clearDrag          (              ):void {
  326.                 dragLayer.removeChild ( _drag );
  327.                 _drag = new Sprite ();
  328.                 dragLayer.addChild ( _drag );
  329.         }
  330.     }//end of class
  331.    
  332. }////////////////////////////////////////////////////////////////////////
复制代码

[ 本帖最后由 enc0717 于 2007-12-26 10:05 编辑 ]
purple.Starpulse

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:12:31 |显示全部楼层
VerticalScrollBar

  1. package net.purplewind.uicomponents

  2. {/////////////////////////////////////////////////////////////////////////////
  3.    
  4.     import flash.display.Sprite;
  5.     import flash.events.Event;
  6.     import flash.events.MouseEvent;
  7.     import flash.geom.Point;
  8.     import flash.geom.Rectangle;
  9.    
  10.    
  11.     public class VerticalScrollBar extends ScrollBar
  12.     {
  13.         //--------------------------------------------
  14.         // 視覺效應組成
  15.         //--------------------------------------------
  16.         /**向上按鈕形狀*/
  17.         public var ui_up_normal                        :Sprite;
  18.         public var ui_up_select                        :Sprite;
  19.         public var ui_up_press                         :Sprite;
  20.         /**向下按鈕形狀*/
  21.         public var ui_down_normal                      :Sprite;
  22.         public var ui_down_select                      :Sprite;
  23.         public var ui_down_press                       :Sprite;
  24.         /**縱向拖曳按鈕形狀*/
  25.         public var ui_drag_normal                      :Sprite;
  26.         public var ui_drag_select                      :Sprite;
  27.         public var ui_drag_press                       :Sprite;
  28.         /**縱向滾動背景圖形形狀*/
  29.         public var backShape                           :Sprite;
  30.         /**占位圖形*/
  31.         public var hidenShape                          :Sprite;
  32.         
  33.         
  34.         //--------------------------------------------
  35.         // 參量
  36.         //--------------------------------------------
  37.         /**非顯示圖形填充色*/
  38.         protected var fillColor                        :Number;
  39.         /**非顯示圖形填充透明度*/
  40.         protected var fillAlpha                        :Number;
  41.         /**縱向滾動條上邊距*/
  42.         protected var dragTop                          :Number;
  43.         /**縱向滾動條下邊距*/
  44.         protected var dragBottom                       :Number;
  45.         /**上距*/
  46.         protected var _top                             :Number;
  47.         /**左距*/
  48.         protected var _left                            :Number;
  49.         /**下距*/
  50.         protected var _bottom                          :Number;
  51.         /**右距*/
  52.         protected var _right                           :Number;
  53.         /**縱向拖曳條向上可以偏移的單位*/
  54.         protected var _upOffset                        :Number;
  55.         /**縱向拖曳條向下可以偏移的單位*/
  56.         protected var _downOffset                      :Number;
  57.         /**寬度*/
  58.         protected var _w                               :Number;
  59.         /**寬度*/
  60.         protected var _h                               :Number;
  61.         
  62.         public function set w          ( value:Number ):void   {
  63.                 _w = value;
  64.         }
  65.         public function get w          (              ):Number {
  66.                 return _w;
  67.         }
  68.         public function set h          ( value:Number ):void   {
  69.                 _h = value;
  70.         }
  71.         public function get h          (              ):Number {
  72.                 return _h;
  73.         }
  74.         public function set top        ( value:Number ):void   {
  75.             _top = value;
  76.             align ();
  77.             update ();
  78.         }
  79.         public function get top        (              ):Number {
  80.             return _top;
  81.         }
  82.         public function set left       ( value:Number ):void   {
  83.             _left = value;
  84.             align ();
  85.             update ();
  86.         }
  87.         public function get left       (              ):Number {
  88.             return _left;
  89.         }
  90.         public function set bottom     ( value:Number ):void   {
  91.             _bottom = value;
  92.             align ();
  93.             update ();
  94.         }
  95.         public function get bottom     (              ):Number {
  96.             return _bottom;
  97.         }
  98.         public function set right      ( value:Number ):void   {
  99.             _right = value;
  100.             align ();
  101.             update ();
  102.         }
  103.         public function get right      (              ):Number {
  104.             return _right;
  105.         }
  106.         public function set upOffset   ( value:Number ):void   {
  107.             _upOffset = value;
  108.         }
  109.         public function get upOffset   (              ):Number {
  110.             return _upOffset;
  111.         }
  112.         public function set downOffset ( value:Number ):void   {
  113.             _downOffset = value;
  114.         }
  115.         public function get downOffset (              ):Number {
  116.             return _downOffset;
  117.         }
  118.         /**覆蓋用戶重設用戶滾動條大小*/
  119.         override public function set height ( value:Number ):void {
  120.                 _h = value;
  121.                
  122.                 hidenShape.graphics.clear ();
  123.                 hidenShape.graphics.beginFill ( fillColor , fillAlpha );
  124.                 hidenShape.graphics.drawRect ( 0 , 0 , _w , value );
  125.                 hidenShape.graphics.endFill ();
  126.                
  127.                 ui_down_normal.y = value - bottom - ui_down_normal.height;
  128.                 ui_down_select.y = value - bottom - ui_down_select.height;
  129.                 ui_down_press.y = value - bottom - ui_down_press.height;
  130.                 downBtn.y = value - bottom - downBtn.height;
  131.                
  132.                 dragTop = ui_up_normal.y + ui_up_normal.height + span - upOffset;
  133.                 dragBottom = ui_down_normal.y - span + downOffset;
  134.                
  135.         }
  136.         override public function get height ():Number {
  137.                 return height;
  138.         }
  139.         override public function set width ( value:Number ):void {
  140.                 _w = value;
  141.                 align ();
  142.             update ();
  143.         }
  144.         override public function get width():Number {
  145.                 return width;
  146.         }
  147.         
  148.         
  149.         //--------------------------------------------
  150.         // 構造方法
  151.         //--------------------------------------------
  152.         
  153.         public function VerticalScrollBar ()
  154.         {
  155.                 super ();
  156.                 //邊距預設
  157.                 _top        = 0;
  158.                 _left       = 0;
  159.                 _right      = 0;
  160.                 _bottom     = 0;
  161.                 //拖曳偏移量預設
  162.                 _upOffset   = 0;
  163.                 _downOffset = 0;
  164.                 //拖曳條縱向移動范圍預設
  165.                 dragTop     = 0;
  166.                 dragBottom  = 0;
  167.                 //占位圖形預設
  168.                 hidenShape  = new Sprite ();
  169.                 _back.addChild(hidenShape);
  170.                 //非顯示圖形填充設定
  171.                 fillColor   = 0xCCFF00;
  172.                 fillAlpha   = 0;
  173.         }
  174.         
  175.         
  176.         
  177.         /**
  178.          * 填充組件實例
  179.          * @return Boolean 是否填充完成
  180.          */
  181.         public function fill ():Boolean {
  182.             if ( ui_up_normal==null || ui_up_select  ==null || ui_up_press  ==null
  183.             || ui_down_normal==null || ui_down_select==null || ui_down_press==null
  184.             || ui_drag_normal==null || ui_drag_select==null || ui_drag_press==null )
  185.             {  
  186.                 return false;
  187.             } else {
  188.                 dispatchDisplayObjects ();
  189.                 return true;
  190.             }
  191.         }
  192.         
  193.         
  194.         //--------------------------------------------
  195.         // 預備區域
  196.         //--------------------------------------------
  197.         /**
  198.          * 屬性刷新
  199.          */
  200.         protected function update ():void {
  201.                 dragTop = ui_up_normal.y + ui_up_normal.height + span - upOffset;
  202.                 dragBottom = ui_down_normal.y - span + downOffset;
  203.         }
  204.         /**
  205.          * 安排元素位置
  206.          */
  207.         protected function align ():void {
  208.                
  209.                 ui_up_normal.width   = _w - _left - _right;
  210.                 ui_up_select.width   = _w - _left - _right;
  211.                 ui_up_press.width    = _w - _left - _right;
  212.                 upBtn.width          = _w - _left - _right;
  213.                 ui_down_normal.width = _w - _left - _right;
  214.                 ui_down_select.width = _w - _left - _right;
  215.                 ui_down_press.width  = _w - _left - _right;
  216.                 downBtn.width        = _w - _left - _right;
  217.                 ui_drag_normal.width = _w - _left - _right;
  218.                 ui_drag_select.width = _w - _left - _right;
  219.                 ui_drag_press.width  = _w - _left - _right;
  220.                 dragBtn.width        = _w - _left - _right;
  221.                
  222.                
  223.                 ui_up_normal  .x = _left;
  224.                 ui_up_normal  .y = _top;
  225.                 ui_up_select  .x = _left;
  226.                 ui_up_select  .y = _top;
  227.                 ui_up_press   .x = _left;
  228.                 ui_up_press   .y = _top;
  229.                 //down
  230.                 ui_down_normal.x = _left;
  231.                 ui_down_normal.y = hidenShape.height - ui_down_normal.height - bottom;
  232.                 ui_down_select.x = _left;
  233.                 ui_down_select.y = hidenShape.height - ui_down_normal.height - bottom;
  234.                 ui_down_press .x = _left;
  235.                 ui_down_press .y = hidenShape.height - ui_down_normal.height - bottom;
  236.                 //drag
  237.                 ui_drag_normal.x = _left;
  238.                 ui_drag_normal.y = _top + ui_up_normal.height +span - _upOffset;
  239.                 ui_drag_select.x = _left;
  240.                 ui_drag_select.y = _top + ui_up_normal.height +span - _upOffset;
  241.                 ui_drag_press .x = _left;
  242.                 ui_drag_press .y = _top + ui_up_normal.height +span - _upOffset;
  243.                
  244.                 upBtn  .x = _left;
  245.                 upBtn  .y = _top;
  246.                 //down
  247.                 downBtn.x = _left;
  248.                 downBtn.y = hidenShape.height - ui_down_normal.height - bottom;
  249.                 //drag
  250.                 dragBtn.x = _left;
  251.                 dragBtn.y = _top + ui_up_normal.height + span - _upOffset;
  252.         }
  253.         /**
  254.          * 分派圖形顯示 元素
  255.          */
  256.         protected function dispatchDisplayObjects ():void {
  257.                 _w = _left+ui_up_normal.width+_right;
  258.                 _h = _top+ui_up_normal.height-upOffset-downOffset+ui_drag_normal.height+ui_down_normal.height+_bottom+2*span;
  259.                 align  ();        
  260.                 update ();
  261.                 hidenShape.graphics.clear();
  262.                 hidenShape.graphics.beginFill ( fillColor , fillAlpha );
  263.                 hidenShape.graphics.drawRect ( 0,0,_w,_h);
  264.                 //加入到現實列表
  265.                 drawButtons ();
  266.                 _back.addChild ( ui_up_normal );
  267.                 ui_up_select.visible = false;
  268.                 ui_up_press.visible  = false;
  269.                 _back.addChild ( ui_up_select );
  270.                 _back.addChild ( ui_up_press  );
  271.                 //
  272.                 _back.addChild ( ui_down_normal );
  273.                 ui_down_select.visible = false;
  274.                 ui_down_press.visible  = false;
  275.                 _back.addChild ( ui_down_select );
  276.                 _back.addChild ( ui_down_press  );
  277.                 //
  278.                 _back.addChild ( ui_drag_normal );
  279.                 ui_drag_select.visible = false;
  280.                 ui_drag_press.visible  = false;
  281.                 _back.addChild ( ui_drag_select );
  282.                 _back.addChild ( ui_drag_press  );
  283.                
  284.         }
  285.         /**
  286.         * 繪制背景
  287.         */
  288.         protected function drawBackground ():void {
  289.                 //clear
  290.                 backLayer.removeChild ( _back );
  291.                 _back = new Sprite ();
  292.                 backLayer.addChild ( _back );
  293.                 //draw background
  294.                 _back.addChild ( backShape );
  295.         }
  296.         /**
  297.                 * 繪制按鈕
  298.          */
  299.         protected function drawButtons ():void {
  300.             //clear
  301.             btnsLayer.removeChild ( _btns );
  302.             _btns   = new Sprite ();
  303.             //draw buttons
  304.             upBtn   = new Sprite ();
  305.             downBtn = new Sprite ();
  306.             dragBtn = new Sprite ();
  307.             upBtn.graphics.beginFill   ( fillColor , fillAlpha );
  308.             downBtn.graphics.beginFill ( fillColor , fillAlpha );
  309.             dragBtn.graphics.beginFill ( fillColor , fillAlpha );
  310.             upBtn.graphics.drawRect   ( 0 , 0 , ui_up_normal.width   , ui_up_normal.height   );
  311.             downBtn.graphics.drawRect ( 0 , 0 , ui_down_normal.width , ui_down_normal.height );
  312.             dragBtn.graphics.drawRect ( 0 , 0 , ui_drag_normal.width , ui_drag_normal.height );
  313.             //
  314.             //up
  315.             _btns.addChild ( upBtn   );
  316.             _btns.addChild ( downBtn );
  317.             _btns.addChild ( dragBtn );
  318.             //draw buttons complete
  319.             btnsLayer.addChild ( _btns );
  320.             
  321.             dispatchListenersForUp   ();
  322.             dispatchListenersForDown ();
  323.             dispatchListenersForDrag ();
  324.         }
  325.         /**
  326.          * 添加向上按鈕事件分派
  327.          */
  328.         protected function dispatchListenersForUp ():void {
  329.                 var hasClickEvent:Boolean = upBtn.hasEventListener ( MouseEvent.CLICK      );
  330.                 var hasOverEvent:Boolean  = upBtn.hasEventListener ( MouseEvent.ROLL_OVER  );
  331.                 var hasOutEvent:Boolean   = upBtn.hasEventListener ( MouseEvent.ROLL_OUT   );
  332.                 var hasUpEvent:Boolean = upBtn.hasEventListener    ( MouseEvent.MOUSE_UP   );
  333.                 var hasDownEvent:Boolean = upBtn.hasEventListener  ( MouseEvent.MOUSE_DOWN );
  334.                 var hasLeaveEvent:Boolean = stage.hasEventListener ( Event.MOUSE_LEAVE     );
  335.                 if ( hasClickEvent ) {
  336.                         upBtn.removeEventListener ( MouseEvent.CLICK     , upClick    );
  337.                 }
  338.                 if ( hasOverEvent ) {
  339.                         upBtn.removeEventListener ( MouseEvent.ROLL_OVER , upRollOver );
  340.                 }
  341.                 if ( hasOutEvent ) {
  342.                         upBtn.removeEventListener ( MouseEvent.ROLL_OUT  , upRollOut  );
  343.                 }
  344.                 if ( hasUpEvent ) {
  345.                         upBtn.removeEventListener ( MouseEvent.MOUSE_UP   , upUp      );
  346.                        
  347.                 }
  348.                 if ( hasDownEvent ) {
  349.                         upBtn.removeEventListener ( MouseEvent.MOUSE_DOWN , upDown );
  350.                 }
  351.                 upBtn.addEventListener ( MouseEvent.CLICK      , upClick    );
  352.                 upBtn.addEventListener ( MouseEvent.ROLL_OVER  , upRollOver );
  353.                 upBtn.addEventListener ( MouseEvent.ROLL_OUT   , upRollOut  );
  354.                 upBtn.addEventListener ( MouseEvent.MOUSE_UP   , upUp       );
  355.                 upBtn.addEventListener ( MouseEvent.MOUSE_DOWN , upDown     );
  356.         }
  357.         /**
  358.          * 添加向下按鈕事件分派
  359.          */
  360.         protected function dispatchListenersForDown ():void {
  361.                 var hasClickEvent:Boolean = downBtn.hasEventListener ( MouseEvent.CLICK );
  362.                 var hasOverEvent:Boolean  = downBtn.hasEventListener ( MouseEvent.ROLL_OVER  );
  363.                 var hasOutEvent:Boolean   = downBtn.hasEventListener ( MouseEvent.ROLL_OUT   );
  364.                 var hasUpEvent:Boolean    = downBtn.hasEventListener ( MouseEvent.MOUSE_UP   );
  365.                 var hasDownEvent:Boolean  = downBtn.hasEventListener ( MouseEvent.MOUSE_DOWN );
  366.                 var hasLeaveEvent:Boolean = stage.hasEventListener ( Event.MOUSE_LEAVE       );
  367.                 if ( hasClickEvent ) {
  368.                         downBtn.removeEventListener ( MouseEvent.CLICK     , downClick    );
  369.                 }
  370.                 if ( hasOverEvent ) {
  371.                         downBtn.removeEventListener ( MouseEvent.ROLL_OVER , downRollOver );
  372.                 }
  373.                 if ( hasOutEvent ) {
  374.                         downBtn.removeEventListener ( MouseEvent.ROLL_OUT  , downRollOut  );
  375.                 }
  376.                 if ( hasUpEvent ) {
  377.                         downBtn.removeEventListener ( MouseEvent.MOUSE_UP  , downUp       );
  378.                        
  379.                 }
  380.                 if ( hasDownEvent ) {
  381.                         downBtn.removeEventListener ( MouseEvent.MOUSE_DOWN , downDown    );
  382.                 }
  383.                 downBtn.addEventListener ( MouseEvent.CLICK      , downClick    );
  384.                 downBtn.addEventListener ( MouseEvent.ROLL_OVER  , downRollOver );
  385.                 downBtn.addEventListener ( MouseEvent.ROLL_OUT   , downRollOut  );
  386.                 downBtn.addEventListener ( MouseEvent.MOUSE_UP   , downUp       );
  387.                 downBtn.addEventListener ( MouseEvent.MOUSE_DOWN , downDown     );
  388.         }
  389.         /**
  390.          * 添加拖曳條事件分派
  391.          */
  392.         protected function dispatchListenersForDrag ():void {
  393.                 var hasUpEvent:Boolean    = dragBtn.hasEventListener ( MouseEvent.MOUSE_UP   );
  394.                 var hasDownEvent:Boolean  = dragBtn.hasEventListener ( MouseEvent.MOUSE_DOWN );
  395.                 var hasMoveEvent:Boolean  = dragBtn.hasEventListener ( MouseEvent.MOUSE_MOVE );
  396.                 if ( hasUpEvent ) {
  397.                         dragBtn.removeEventListener ( MouseEvent.MOUSE_UP   , dragUp   );
  398.                 }
  399.                 if ( hasDownEvent ) {
  400.                         dragBtn.removeEventListener ( MouseEvent.MOUSE_DOWN , dragDown );
  401.                 }
  402.                 if ( hasMoveEvent ) {
  403.                         dragBtn.removeEventListener ( MouseEvent.MOUSE_MOVE , dragMove );
  404.                 }
  405.                 dragBtn.addEventListener ( MouseEvent.ROLL_OVER  , dragRollOver );
  406.                 dragBtn.addEventListener ( MouseEvent.ROLL_OUT   , dragRollOut  );
  407.                 dragBtn.addEventListener ( MouseEvent.MOUSE_UP   , dragUp       );
  408.                 dragBtn.addEventListener ( MouseEvent.MOUSE_DOWN , dragDown     );
  409.         }
  410.         
  411.         //--------------------------------------------
  412.         // 鼠標事件處理器
  413.         //--------------------------------------------
  414.         /**上滾按鈕點擊*/
  415.         override protected function upClick            ( event:Event ):void {
  416.             //override
  417.         }
  418.         /**下滾按鈕點擊*/
  419.         override protected function downClick          ( event:Event ):void {
  420.             //override
  421.         }
  422.         /**上滾按鈕滑過*/
  423.         override protected function upRollOver         ( event:Event ):void {
  424.                 super.upRollOver ( event );
  425.             ui_up_select.visible  = true;
  426.         }
  427.         /**上滾按鈕滑出*/
  428.         override protected function upRollOut          ( event:Event ):void {
  429.                 super.upRollOut ( event );
  430.             ui_up_select.visible  = false;
  431.         }
  432.                 /**上滾按鈕按下*/
  433.         override protected function upDown             ( event:Event ):void {
  434.                 super.upDown ( event );
  435.                 ui_up_press.visible = true;
  436.                 clearTemp ();
  437.                 var temp:Sprite = new Sprite ();
  438.                 temp.x = globalToLocal(new Point(0,0)).x;
  439.                 temp.y = globalToLocal(new Point(0,0)).y;
  440.                 temp.graphics.beginFill ( fillColor , fillAlpha );
  441.                 temp.addEventListener ( MouseEvent.MOUSE_UP , upReleaseOutSide );
  442.                 temp.graphics.drawRect ( 0,0,stage.stageWidth , stage.stageHeight );               
  443.                 stage.addEventListener(Event.MOUSE_LEAVE,upLeave);
  444.                 _temp.addChild ( temp );
  445.         }
  446.         /**上滾按鈕移動*/
  447.         override protected function upLeave            ( event:Event ):void {
  448.                 super.upLeave ( event );
  449.                 upUp ( event );
  450.                 stage.removeEventListener ( Event.MOUSE_LEAVE , upLeave );
  451.         }
  452.         /**上滾按鈕外部釋放*/
  453.         override protected function upReleaseOutSide   ( event:Event ):void {
  454.                 super.upReleaseOutSide ( event );
  455.                 clearTemp ();
  456.                 ui_up_press.visible = false;
  457.                 event.target.removeEventListener ( MouseEvent.MOUSE_UP , upReleaseOutSide );       
  458.         }
  459.         /**上滾按鈕松開*/
  460.         override protected function upUp               ( event:Event ):void {
  461.                 super.upUp ( event );
  462.                 ui_up_press.visible = false;
  463.                 try {
  464.                     stage.removeEventListener ( Event.MOUSE_LEAVE , dragLeave );
  465.             } catch ( e:Error ) {}
  466.                 clearTemp ();
  467.         }
  468.         //////////////////////////////////////////////////
  469.         /**下滾按鈕滑過*/
  470.         override protected function downRollOver       ( event:Event ):void {
  471.                 super.downRollOver ( event );
  472.                 ui_down_select.visible  = true;
  473.         }
  474.         /**下滾按鈕滑出*/
  475.         override protected function downRollOut        ( event:Event ):void {
  476.                 super.downRollOut( event );
  477.                 ui_down_select.visible  = false;
  478.         }
  479.         /**下滾按鈕按下*/
  480.         override protected function downDown           ( event:Event ):void {
  481.                 super.downDown ( event );
  482.                 ui_down_press.visible = true;
  483.                 clearTemp ();
  484.                 var temp:Sprite = new Sprite ();
  485.                 temp.x = globalToLocal(new Point(0,0)).x;
  486.                 temp.y = globalToLocal(new Point(0,0)).y;
  487.                 temp.graphics.beginFill ( fillColor , fillAlpha );
  488.                 temp.graphics.drawRect ( 0,0,stage.stageWidth , stage.stageHeight );
  489.                 temp.addEventListener ( MouseEvent.MOUSE_UP , downReleaseOutSide );
  490.                 stage.addEventListener(Event.MOUSE_LEAVE,downLeave);
  491.                 _temp.addChild ( temp );
  492.         }
  493.         /**下滾按鈕松開*/
  494.         override protected function downUp             ( event:Event ):void {
  495.                 super.downUp ( event );
  496.                 ui_down_press.visible = false;
  497.                 try {
  498.                     stage.removeEventListener ( Event.MOUSE_LEAVE , downLeave );
  499.             } catch ( e:Error ) {}
  500.             clearTemp ();
  501.         }
  502.         /**下滾按鈕移動*/
  503.         override protected function downLeave           ( event:Event ):void {
  504.                 super.downLeave ( event );
  505.                 downUp ( event );
  506.                 stage.removeEventListener ( Event.MOUSE_LEAVE , downLeave );
  507.         }
  508.         override protected function downReleaseOutSide ( event:Event ):void {
  509.                 super.downReleaseOutSide ( event );
  510.                 clearTemp ();
  511.                 ui_down_press.visible = false;
  512.                 event.target.removeEventListener ( MouseEvent.MOUSE_UP , downReleaseOutSide );
  513.         }
  514.         //////////////////////////////////////////////////
  515.         /**拖曳條滑過*/
  516.         override protected function dragRollOver       ( event:Event ):void {
  517.                 super.dragRollOver ( event );
  518.             ui_drag_select.visible = true;
  519.         }
  520.         /**拖曳條滑出*/
  521.         override protected function dragRollOut        ( event:Event ):void {
  522.                 super.dragRollOut ( event );
  523.             ui_drag_select.visible = false;
  524.         }
  525.         /**拖曳條按下*/
  526.         override protected function dragDown           ( event:Event ):void {
  527.                 super.dragDown ( event );
  528.             ui_drag_press.visible = true;
  529.             //
  530.             var temp:Sprite = new Sprite ();
  531.                 temp.x = globalToLocal(new Point(0,0)).x;
  532.                 temp.y = globalToLocal(new Point(0,0)).y;
  533.                 temp.graphics.beginFill ( fillColor , fillAlpha );
  534.                 temp.graphics.drawRect ( 0,0,stage.stageWidth  , stage.stageHeight  );
  535.                 temp.addEventListener  ( MouseEvent.MOUSE_UP   , dragReleaseOutSide );
  536.                 temp.addEventListener  ( MouseEvent.MOUSE_MOVE , dragMove           );
  537.                 stage.addEventListener ( Event.MOUSE_LEAVE     , dragLeave          );
  538.                 _temp.addChild ( temp );
  539.                 //
  540.                 var area:Rectangle = new Rectangle ( _left ,  dragTop , 0 , Math.abs ( dragBottom-dragBtn.height-dragTop ) );
  541.                 dragBtn.startDrag ( false ,  area );

  542.         }
  543.         /**拖曳條在自己圖形範圍內鬆開*/
  544.         override protected function dragUp             ( event:Event ):void {
  545.                 super.dragUp ( event );
  546.             ui_drag_press.visible = false;
  547.             try {
  548.                     stage.removeEventListener ( Event.MOUSE_LEAVE , dragLeave );
  549.             } catch ( e:Error ) {}
  550.             clearTemp ();
  551.             dragBtn.stopDrag ();
  552.             ui_drag_normal.x = dragBtn.x;
  553.                 ui_drag_select.x = dragBtn.x;
  554.                 ui_drag_press. x = dragBtn.x;
  555.                 ui_drag_normal.y = dragBtn.y;
  556.                 ui_drag_select.y = dragBtn.y;
  557.                 ui_drag_press. y = dragBtn.y;
  558.         }
  559.         /**拖曳條移動*/
  560.         override protected function dragMove           ( event:Event ):void {
  561.                 super.dragMove ( event );
  562.                 ui_drag_normal.x = dragBtn.x;
  563.                 ui_drag_select.x = dragBtn.x;
  564.                 ui_drag_press. x = dragBtn.x;
  565.                 ui_drag_normal.y = dragBtn.y;
  566.                 ui_drag_select.y = dragBtn.y;
  567.                 ui_drag_press. y = dragBtn.y;
  568.         }
  569.         /**拖曳條移出了舞臺*/
  570.         override protected function dragLeave          ( event:Event ):void {
  571.                 super.dragLeave ( event );
  572.                 dragUp ( event );
  573.                 stage.removeEventListener ( Event.MOUSE_LEAVE , dragLeave );
  574.                 dragBtn.stopDrag ();
  575.         }
  576.         /**拖曳條在自己圖形範圍外鬆開*/
  577.         override protected function dragReleaseOutSide ( event:Event ):void {
  578.                 super.dragReleaseOutSide ( event );
  579.             clearTemp ();
  580.             ui_drag_press.visible = false;
  581.                 event.target.removeEventListener ( MouseEvent.MOUSE_UP , dragReleaseOutSide );
  582.                 dragBtn.stopDrag ();
  583.         }
  584.     }//end class
  585.    
  586. }/////////////////////////////////////////////////////////////////////////////
复制代码

[ 本帖最后由 enc0717 于 2007-12-26 10:06 编辑 ]
purple.Starpulse

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:12:43 |显示全部楼层
這幾天比較忙,可能周末才能更新上來了。
謝謝大家的關注。特此送給大家一套Flex 我原創的skin





[ 本帖最后由 enc0717 于 2007-12-19 22:59 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
purple.Starpulse

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:12:50 |显示全部楼层
ok 到目前為止。滾動條還處于脫離應用的范圍
本身屬于滾動條的基本功能已經具備。

附上目前為止效果
======================================



源文件
======================================



12月26日連載



======================================
待續

[ 本帖最后由 enc0717 于 2007-12-26 10:13 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
purple.Starpulse

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:12:56 |显示全部楼层
占位占位


TMD,過年前忙死了,過年后繼續。^^

[ 本帖最后由 enc0717 于 2008-1-23 09:48 编辑 ]
purple.Starpulse

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 09:13:01 |显示全部楼层

預訂

預訂3月3日一次性更新全部寫完。

現在工作的事情很多,竟然很少有完整的私人時間,
寫作這種事情,只要有空,我一定繼續下去的

[ 本帖最后由 enc0717 于 2008-2-12 13:46 编辑 ]
purple.Starpulse

使用道具 举报

帖子
125
体力
420
威望
1
居住地
广西壮族自治区 南宁市
发表于 2007-12-17 09:50:34 |显示全部楼层
你们啥时候能普及简体中文啊?

使用道具 举报

winzip 
帖子
170
体力
744
威望
0
居住地
安徽省 合肥市
发表于 2007-12-17 10:54:17 |显示全部楼层
占位先 .... 不错的说

使用道具 举报

kinr 
帖子
57
体力
179
威望
0
居住地
广东省 广州市
发表于 2007-12-17 10:54:32 |显示全部楼层
看不懂....感觉你是高手
www.kinr.net/blog

使用道具 举报

帖子
1219
体力
5975
威望
234
发表于 2007-12-17 11:50:35 |显示全部楼层
支持小兄弟原创,哈哈

使用道具 举报

jevin 

小丑鱼

银牌会员

帖子
1562
体力
5411
威望
0
发表于 2007-12-17 13:07:43 |显示全部楼层
LZ的UML图片是用什么工具做的
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-

使用道具 举报

pmmx 
帖子
19
体力
26
威望
0
居住地
广东省 深圳市
发表于 2007-12-17 15:10:04 |显示全部楼层
Mark一下,不错

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-17 22:41:38 |显示全部楼层
UML是用一個叫做gModeler的東西,你一搜就知道了。
purple.Starpulse

使用道具 举报

蓝色发啦斯六一

高级会员

帖子
420
体力
957
威望
0
发表于 2007-12-27 15:02:19 |显示全部楼层
问一下楼主,版主,
你这个样式皮肤,放在FLEX1.5中行不行,
如果1.5中想实现类似的效果有办法么?
还我是想在1.5中自定义滚动条样式!
大连

使用道具 举报

帖子
167
体力
709
威望
0
居住地
广东省 广州市
发表于 2007-12-27 15:33:59 |显示全部楼层
楼主好强大的说!

使用道具 举报

帖子
70
体力
221
威望
0
发表于 2007-12-27 15:40:49 |显示全部楼层
支持!!!
顶!!!!!!!

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2007-12-28 09:55:38 |显示全部楼层
原帖由 falsh61 于 2007-12-27 15:02 发表
问一下楼主,版主,
你这个样式皮肤,放在FLEX1.5中行不行,
如果1.5中想实现类似的效果有办法么?
还我是想在1.5中自定义滚动条样式!



抱歉哦。1.5我真的是不知道。我用過的最低版本是FLEX2
purple.Starpulse

使用道具 举报

lkele 
帖子
138
体力
304
威望
0
居住地
广东省 深圳市
发表于 2008-1-4 18:36:55 |显示全部楼层
社会太浮躁,要静下心才能研究

使用道具 举报

帖子
1
体力
7
威望
0
发表于 2008-10-10 21:24:18 |显示全部楼层
好的 就要顶起来 哪怕是200多天

使用道具 举报

目光呆滞的狐狸

高级会员

帖子
1069
体力
1131
威望
0
居住地
广东省 广州市
发表于 2008-10-11 08:01:19 |显示全部楼层
支持一下
君子动手不动口

使用道具 举报

enc0717 楼主

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2008-10-11 08:46:22 |显示全部楼层
...写这篇文章的时候工作上门找我,因此后续的我都没有时间继续写下去,实在惭愧。
不过明年一定会写,因为今年之后我会辞职在家做些学问。我也会不实的送一些东西给大家。
purple.Starpulse

使用道具 举报

梦寻千古香

钻石会员

帖子
3406
体力
12662
威望
6
居住地
广东省 深圳市
发表于 2008-10-11 14:01:02 |显示全部楼层
很好,顶起,不过我个人还是喜欢一些game教程,因为本人是做游戏的,目前还在实习中,需要好好补充下营养...

使用道具 举报

帖子
546
体力
373
威望
13
发表于 2008-10-11 22:51:48 |显示全部楼层
支持一下楼主  很敬业滴说.很敬佩像楼主这样做学问不计较个人得失的人.

使用道具 举报

cjyyj 

星雪火

高级会员 手机认证 

帖子
348
体力
809
威望
0
发表于 2011-3-16 09:52:31 |显示全部楼层
既然被楼主再次发出来了,我也就占一楼收藏。
这样好的技术贴不顶心里就感觉不舒服。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:30 , Processed in 0.157606 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部