当前位置: 首页 > news >正文

辽宁智能网站建设制作/百度推广每年600元什么费用

辽宁智能网站建设制作,百度推广每年600元什么费用,国外php网站源码,东莞南城网站制作公司先看最终的演示: 滑块条的应用实在太广泛了:mp3播放器中声量的大小控制,视频播放时的画面亮度调节,阅读新闻时字体大小的实时调整,对象的大小互动控制... 分析: 1.任何一个滑块条控件的UI部分,基…

先看最终的演示:

滑块条的应用实在太广泛了:mp3播放器中声量的大小控制,视频播放时的画面亮度调节,阅读新闻时字体大小的实时调整,对象的大小互动控制...

分析:

1.任何一个滑块条控件的UI部分,基本上可以分为:背景滑块条 + 滑块按钮 二个部分

所以我分成了三部分: JimmySilderBar(背景条),JimmySilderButton(拖动钮),JimmySilder(真正的滑动控件,将前二个组合在一起),为了重用,这三个部分都做成MovieClip元件放在库里,这样以后要换风格或颜色时,只要在库里编辑元件,所有的地方自然全变了.

另外在JimmySilder这个元件中,为了能在代码中引用到另外二个元件的实例,JimmySilderButton实例被命名为_mcBtn,而JimmySilderBar实例被命名为_mcBar

2010041513453143.jpg

2.拖动问题

MovieClip有startDrag/endDrag方法,而且startDarg方法还能方便的设置拖动的边界(即拖动时,滑块钮不能拖到背景条以外的地方),so...这个问题也解决了

3.属性/事件支持

既然是滑块控件,肯定要能得到当前的位置/值,另外拖动(以导致值变化)时,应该能触发使用者自己定义的处理方法(否则就变成一个单纯只能拖来拖去的东东,不能跟其它对象的属性关联交互,那就没啥意义了)

实现:

1.为了支持事件,首先也定义一个Event子类:

package Jimmy.Event {import flash.events.Event;public class ValueChangeEvent extends Event {		public static const VALUE_CHANGE:String = "VALUE_CHANGE";		private var _OldValue:Number,_NewValue:Number;public function ValueChangeEvent(eventType:String,oldValue:Number,newValue:Number){this._OldValue = oldValue;this._NewValue = newValue;super(eventType);}public function get OldValue():Number{return _OldValue;}public function get NewValue():Number{return _NewValue;}}
}

2.控件代码的实现:

//滑块控件 beta 0.001 -- by 菩提树下的杨过 http://yjmyzz.cnblogs.com/
package {import flash.display.Sprite;import flash.display.MovieClip;import flash.events.MouseEvent;import flash.ui.Mouse;import flash.events.Event;import flash.ui.MouseCursor;import flash.geom.Rectangle;import Jimmy.Event.ValueChangeEvent;public class JimmySilder extends MovieClip {private var _btnWidth:uint;//滑块宽度private var _btnHeight:uint;//滑块高度private var _barWidth:uint;//滑块背景条宽度private var _barHeight:uint;//滑块背景条高度private var _isDragging:Boolean=false;//是否正在拖动private var _value:Number=0.0;//滑块的值(百分比)public function JimmySilder(btnWidth:uint = 10,btnHeight:uint = 30,barWidth:uint=200,barHeight:uint=10,v:Number=0.5):void {//trace("JimmySilder's constructor is called.");this._btnWidth=btnWidth;this._btnHeight=btnHeight;this._barWidth=barWidth;this._barHeight=barHeight;init();this.Value=v;this.addEventListener(Event.ADDED_TO_STAGE,AddedToStage);}private function AddedToStage(e:Event):void{this.stage.addEventListener(MouseEvent.MOUSE_MOVE,stageMouseMoveHandler);this.stage.addEventListener(MouseEvent.MOUSE_UP,stageMouseUpHandler);}//属性Value的setter方法public function set Value(v:Number):void {if (v<=0) {v=0.0;}if (v>=1) {v=1.0;}this._value=v;this._mcBtn.x = _mcBar.width/(-2) + _mcBar.width * _value;//根据value百分比值来定位mcBtn的横坐标}//属性Value的getter方法public function get Value():Number {return _value;}//初始化private function init():void {this._mcBtn.width=_btnWidth;this._mcBtn.height=_btnHeight;this._mcBar.width=_barWidth;this._mcBar.height=_barHeight;this._mcBtn.addEventListener(MouseEvent.MOUSE_OVER, mcBtnMouseOverHandler);this._mcBtn.addEventListener(MouseEvent.MOUSE_OUT, mcBtnMouseOutHandler);this._mcBtn.addEventListener(MouseEvent.MOUSE_DOWN,mcBtnMouseDownHandler);			this._mcBar.addEventListener(MouseEvent.MOUSE_DOWN,mcBarMouseDownHandler);//trace("init 初始化完成");}//切换光标为手形private function mcBtnMouseOverHandler(e:MouseEvent) {Mouse.cursor=MouseCursor.HAND;}//切换光标为系统光标private function mcBtnMouseOutHandler(e:MouseEvent) {Mouse.cursor=MouseCursor.AUTO;}//开始拖动private function mcBtnMouseDownHandler(e:MouseEvent) {//trace("开始拖动");_mcBtn.startDrag(true,new Rectangle(_mcBar.width/(-2),0,_mcBar.width,0));//注意:这里锁定中心在指定区域拖动_isDragging=true;}//停止拖动private function stageMouseUpHandler(e:MouseEvent) {//trace("停止拖动");_mcBtn.stopDrag();_isDragging=false;}//在自身区域上移动时,动态计算_value值private function stageMouseMoveHandler(e:MouseEvent) {if (_isDragging) {RaiseEvent();//trace(_value);}}//在背景条上点击时,滑块直接跳到该位置private function mcBarMouseDownHandler(e:MouseEvent) {_mcBtn.x=mouseX;RaiseEvent();}//触发事件private function RaiseEvent():void {var _oldValue:Number=_value;_value = (_mcBtn.x + _mcBar.width/2)/_mcBar.width;var _valueChangeEvent:ValueChangeEvent=new ValueChangeEvent(ValueChangeEvent.VALUE_CHANGE,_oldValue,_value);dispatchEvent(_valueChangeEvent);//触发事件  }}
}

3.测试代码:

import Jimmy.Event.ValueChangeEvent;var silder:JimmySilder = new JimmySilder();silder.width = 200;
silder.height = 20;
silder.x = stage.stageWidth/2;
silder.y = 200;//trace(silder.Value);addChild(silder);silder.addEventListener(ValueChangeEvent.VALUE_CHANGE, ValueChangeHandler);testObj.scaleX = testObj.scaleY = silder.Value;testObj2.rotation = silder.Value * 360;function ValueChangeHandler(e:ValueChangeEvent){//trace("当前滑块的值是:" + e.NewValue);	testObj.scaleX = testObj.scaleY = e.NewValue;testObj2.rotation = silder.Value * 360;
}

源文件下载: http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/JimmySilder.rar

后记:可能有人会问,为啥不直接用系统内置的组件,要费这么大劲自己重造轮子? 如果您自己试下就会知道了,用了系统组件后,swf文件大约会在19k或22k,而按本文的办法,同样的swf,最终只有7K(精简了1/3左右),所以还是那句话,能自己手写的就自己手写,除非自己写不了,再用系统的组件。

转载于:https://www.cnblogs.com/yjmyzz/archive/2010/04/15/1712581.html

http://www.lbrq.cn/news/2340847.html

相关文章:

  • 中国公路建设招标网站/百度助手下载
  • 衡水网站优化/天津百度推广开户
  • 顺德互动交流网站/黄金网站软件免费
  • 新乡做网站费用/厦门seo结算
  • 新手做网站/网络推广公司企业
  • 贵州网站建设维护/合肥百度关键词优化
  • php动态网站开发参考文献/百度一下一下你就知道
  • 58同城网站建设 推广/关键词林俊杰mp3
  • wordpress从哪里登录/广州推广优化
  • 苏州做网站的公司/百度竞价返点开户
  • 医院导航网站怎么做/百度搜索一下
  • 培训网站建设/怎么制作网页里面的内容
  • 网站301跳转怎么做/百度收录推广
  • 试百客 专业做试用的网站/网络推广怎么推广
  • 一级消防工程师考试通过率多少/百度seo详解
  • 企业网站建设中存在的主要问题会有哪些?/免费公司网站建站
  • 电子商务网站设计内容/互联网营销主要学什么
  • 网站建设 技术方案/广东省广州市白云区
  • 新网站应该怎么做seo/域名注册商怎么查
  • 重庆公司网站制作公司/地推网app推广平台
  • wordpress5.0大更新/seo网络贸易网站推广
  • 贵州省住房和城乡建设厅门户网站/旺道seo软件
  • 中华智能自建代理网站/微信广告怎么投放
  • 专业的网站制作公司哪家好/seo优化运营专员
  • 工信部网站备案平台/第一设计
  • 北京网站建设价格/单页应用seo如何解决
  • 多商户系统/福州百度首页优化
  • java用什么软件编写/电商seo优化
  • html5电影网站源码php/安徽网站seo公司
  • 常用的网页编辑软件有哪些/福州短视频seo公司
  • 李宏毅《生成式人工智能导论》 | 第9讲 AI Agent
  • 从抽象函数到可计算导数 ——SymPy 中占位、求导、代入的完整闭环
  • WebView JSBridge 无响应问题排查实录 全流程定位桥接调用失效
  • 第一章编辑器开发基础第一节绘制编辑器元素_4输入字段(4/7)
  • C++--红黑树封装实现set和map
  • [Linux入门 ] RAID存储技术概述