首先推荐一技术交流群(178547149),喜欢java的朋友可以进下。
效果演示:
下载地址:/Files/zhoujunfeng2011/SWF/Reader2.swf
此文档阅读器使用简单原理制作而成,制作此在线文档阅读器需有后台支持,后台使用SWFTOOLS中的PDFTOSWF工具进行转换,再使用AS3加载生成的SWF文件,下面看具体AS3源码吧,后台源码就不贴了,各位朋友可去网上搜...
源码:
ui包:child.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5
6 public class child extends MovieClip
7 {
8 public function child()
9 {
10 // constructor code
11 }
12 }
13 }
2 {
3 import flash.display.MovieClip;
4
5
6 public class child extends MovieClip
7 {
8 public function child()
9 {
10 // constructor code
11 }
12 }
13 }
cnway_logo.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class cnway_logo extends MovieClip
6 {
7 public function cnway_logo()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class cnway_logo extends MovieClip
6 {
7 public function cnway_logo()
8 {
9 // constructor code
10 }
11 }
12 }
down_listbtn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class down_listbtn extends MovieClip
6 {
7 public function down_listbtn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class down_listbtn extends MovieClip
6 {
7 public function down_listbtn()
8 {
9 // constructor code
10 }
11 }
12 }
downpage_btn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class downpage_btn extends MovieClip
6 {
7 public function downpage_btn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class downpage_btn extends MovieClip
6 {
7 public function downpage_btn()
8 {
9 // constructor code
10 }
11 }
12 }
fangda_btn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class fangda_btn extends MovieClip
6 {
7 public function fangda_btn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class fangda_btn extends MovieClip
6 {
7 public function fangda_btn()
8 {
9 // constructor code
10 }
11 }
12 }
Mouse_hand.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class Mouse_hand extends MovieClip
6 {
7 public function Mouse_hand()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class Mouse_hand extends MovieClip
6 {
7 public function Mouse_hand()
8 {
9 // constructor code
10 }
11 }
12 }
screen.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class screen extends MovieClip
6 {
7 public function screen()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class screen extends MovieClip
6 {
7 public function screen()
8 {
9 // constructor code
10 }
11 }
12 }
Stages.as
1 package ui
2 {
3 import flash.display.Stage;
4
5 public class Stages
6 {
7 static private var mystages:Stage;
8 public function Stages():void
9 {
10
11 }
12 static public function get stagess():Stage
13 {
14 return mystages;
15 }
16 static public function set stagess(sg:Stage):void
17 {
18 mystages = sg;
19 }
20 }
21 }
2 {
3 import flash.display.Stage;
4
5 public class Stages
6 {
7 static private var mystages:Stage;
8 public function Stages():void
9 {
10
11 }
12 static public function get stagess():Stage
13 {
14 return mystages;
15 }
16 static public function set stagess(sg:Stage):void
17 {
18 mystages = sg;
19 }
20 }
21 }
suoxiao_btn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class suoxiao_btn extends MovieClip
6 {
7 public function suoxiao_btn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class suoxiao_btn extends MovieClip
6 {
7 public function suoxiao_btn()
8 {
9 // constructor code
10 }
11 }
12 }
up_listbtn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class up_listbtn extends MovieClip
6 {
7 public function up_listbtn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class up_listbtn extends MovieClip
6 {
7 public function up_listbtn()
8 {
9 // constructor code
10 }
11 }
12 }
uppage_btn.as
1 package ui
2 {
3 import flash.display.MovieClip;
4
5 public class uppage_btn extends MovieClip
6 {
7 public function uppage_btn()
8 {
9 // constructor code
10 }
11 }
12 }
2 {
3 import flash.display.MovieClip;
4
5 public class uppage_btn extends MovieClip
6 {
7 public function uppage_btn()
8 {
9 // constructor code
10 }
11 }
12 }
loading.as
1 package ui
2 {
3 import flash.display.Shape;
4 import flash.display.Sprite;
5 import flash.display.StageAlign;
6 import flash.display.StageScaleMode;
7 import flash.events.Event;
8 import flash.geom.Matrix;
9 import flash.utils.Timer;
10 import flash.events.TimerEvent;
11 import flash.display.Loader;
12 import flash.net.URLRequest;
13
14 public class loading extends Sprite
15 {
16 private var nums:int = 12;
17 private var m2:Matrix = new Matrix();
18 private var m:Matrix = new Matrix();
19 private var Abar:Array = new Array();
20 private var segAngle:Number;
21 private var seg:Number;
22 private var j:Number = 0;
23 private var timer:Timer = new Timer(50);
24 private var logo:cnway_logo = new cnway_logo();
25 public function loading()
26 {
27 init();
28 }
29 private function init():void
30 {
31 this.addChild(logo);
32 logo.x = - 30;
33 logo.y = 55;
34 initBar();
35 }
36 private function initBar():void
37 {
38 segAngle = 2 * Math.PI / this.nums;
39 seg = 1 / this.nums;
40 for (var i:int = 0; i < this.nums; i++)
41 {
42 var bar:Shape=new Shape();
43 Abar[i] = bar;
44 bar.graphics.beginFill(0x000000);
45 bar.graphics.drawRoundRect(0,0,10,3,4,4);
46 bar.graphics.endFill();
47 this.addChild(bar);
48 bar.x = bar.y = 100;
49 m.identity();
50 m.translate(7,-1);
51 m.rotate(segAngle*i);
52 m.translate(-7,1);
53 m2.identity();
54 m2.translate(100,100);
55 m.concat(m2);
56 bar.transform.matrix = m;
57 }
58 timer.addEventListener(TimerEvent.TIMER,alphaHalder);
59 timer.start();
60 }
61
62 private function alphaHalder(evt:TimerEvent):void
63 {
64 for (var i:int = 0; i < this.nums; i++)
65 {
66 var bar:Shape = Abar[i] as Shape;
67 bar.alpha = j;
68 if (j == 1.0833333333333333)
69 {
70 j = 0;
71 }
72 j += seg;
73 }
74 }
75 }
76 }
2 {
3 import flash.display.Shape;
4 import flash.display.Sprite;
5 import flash.display.StageAlign;
6 import flash.display.StageScaleMode;
7 import flash.events.Event;
8 import flash.geom.Matrix;
9 import flash.utils.Timer;
10 import flash.events.TimerEvent;
11 import flash.display.Loader;
12 import flash.net.URLRequest;
13
14 public class loading extends Sprite
15 {
16 private var nums:int = 12;
17 private var m2:Matrix = new Matrix();
18 private var m:Matrix = new Matrix();
19 private var Abar:Array = new Array();
20 private var segAngle:Number;
21 private var seg:Number;
22 private var j:Number = 0;
23 private var timer:Timer = new Timer(50);
24 private var logo:cnway_logo = new cnway_logo();
25 public function loading()
26 {
27 init();
28 }
29 private function init():void
30 {
31 this.addChild(logo);
32 logo.x = - 30;
33 logo.y = 55;
34 initBar();
35 }
36 private function initBar():void
37 {
38 segAngle = 2 * Math.PI / this.nums;
39 seg = 1 / this.nums;
40 for (var i:int = 0; i < this.nums; i++)
41 {
42 var bar:Shape=new Shape();
43 Abar[i] = bar;
44 bar.graphics.beginFill(0x000000);
45 bar.graphics.drawRoundRect(0,0,10,3,4,4);
46 bar.graphics.endFill();
47 this.addChild(bar);
48 bar.x = bar.y = 100;
49 m.identity();
50 m.translate(7,-1);
51 m.rotate(segAngle*i);
52 m.translate(-7,1);
53 m2.identity();
54 m2.translate(100,100);
55 m.concat(m2);
56 bar.transform.matrix = m;
57 }
58 timer.addEventListener(TimerEvent.TIMER,alphaHalder);
59 timer.start();
60 }
61
62 private function alphaHalder(evt:TimerEvent):void
63 {
64 for (var i:int = 0; i < this.nums; i++)
65 {
66 var bar:Shape = Abar[i] as Shape;
67 bar.alpha = j;
68 if (j == 1.0833333333333333)
69 {
70 j = 0;
71 }
72 j += seg;
73 }
74 }
75 }
76 }
control包:
TipTextFiled.as
1 package control
2 {
3 import flash.display.MovieClip;
4 import flash.text.TextField;
5 import flash.text.TextFormat;
6 import ui.Stages;
7 import flash.display.Stage;
8 import flash.display.Sprite;
9
10 public class TipTextFiled extends MovieClip
11 {
12 private static var mytext:TextField = new TextField();
13 private static var myformat:TextFormat = new TextFormat();
14 private static var myshape:Sprite = new Sprite();
15 private static var mystage:Stage = Stages.stagess;
16 public function TipTextFiled():void
17 {
18 }
19 public static function addTipTextFiled(myname:String):void
20 {
21 mytext = new TextField();
22 myshape = new Sprite();
23 myformat.font = "Times New Roman";
24 myformat.color = 0x000000;
25 myformat.size = 12;
26 mytext.text = myname;
27 mytext.width = mytext.textWidth + 8;
28 mytext.height = mytext.textHeight + 6;
29 mytext.setTextFormat(myformat);
30 myshape.graphics.beginFill(0xfbfbfb);
31 myshape.graphics.lineStyle(1,0x000000,0.2);
32 myshape.graphics.drawRect(0,0,mytext.textWidth + 4,mytext.textHeight);
33 myshape.graphics.endFill();
34 myshape.addChild(mytext);
35 mytext.x = 1;
36 mytext.y = -2;
37 mystage.addChild(myshape);
38 if (mystage.mouseX >= mystage.width - myshape.width)
39 {
40 myshape.x = mystage.mouseX - myshape.width / 2;
41 }
42 else
43 {
44 myshape.x = mystage.mouseX;
45 }
46 myshape.y = mystage.mouseY + myshape.height;
47 }
48 public static function removeTipTextFiled():void
49 {
50 try
51 {
52 myshape.removeChild(mytext);
53 mytext = null;
54 mystage.removeChild(myshape);
55 myshape = null;
56 }
57 catch (e)
58 {
59
60 }
61 }
62 }
63 }
2 {
3 import flash.display.MovieClip;
4 import flash.text.TextField;
5 import flash.text.TextFormat;
6 import ui.Stages;
7 import flash.display.Stage;
8 import flash.display.Sprite;
9
10 public class TipTextFiled extends MovieClip
11 {
12 private static var mytext:TextField = new TextField();
13 private static var myformat:TextFormat = new TextFormat();
14 private static var myshape:Sprite = new Sprite();
15 private static var mystage:Stage = Stages.stagess;
16 public function TipTextFiled():void
17 {
18 }
19 public static function addTipTextFiled(myname:String):void
20 {
21 mytext = new TextField();
22 myshape = new Sprite();
23 myformat.font = "Times New Roman";
24 myformat.color = 0x000000;
25 myformat.size = 12;
26 mytext.text = myname;
27 mytext.width = mytext.textWidth + 8;
28 mytext.height = mytext.textHeight + 6;
29 mytext.setTextFormat(myformat);
30 myshape.graphics.beginFill(0xfbfbfb);
31 myshape.graphics.lineStyle(1,0x000000,0.2);
32 myshape.graphics.drawRect(0,0,mytext.textWidth + 4,mytext.textHeight);
33 myshape.graphics.endFill();
34 myshape.addChild(mytext);
35 mytext.x = 1;
36 mytext.y = -2;
37 mystage.addChild(myshape);
38 if (mystage.mouseX >= mystage.width - myshape.width)
39 {
40 myshape.x = mystage.mouseX - myshape.width / 2;
41 }
42 else
43 {
44 myshape.x = mystage.mouseX;
45 }
46 myshape.y = mystage.mouseY + myshape.height;
47 }
48 public static function removeTipTextFiled():void
49 {
50 try
51 {
52 myshape.removeChild(mytext);
53 mytext = null;
54 mystage.removeChild(myshape);
55 myshape = null;
56 }
57 catch (e)
58 {
59
60 }
61 }
62 }
63 }
Scrollbar.as
package control
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import ui.Stages;
import flash.geom.Rectangle;
import flash.display.Stage;
import flash.geom.Matrix;
import flash.display.SpreadMethod;
import flash.display.GradientType;
import flash.display.MovieClip;
public class Scrollbar extends Sprite
{
public var obj:MovieClip;//需进行滚动的对象
public var scrollmask:Sprite;//遮罩对象
public var scrollheight:Number;//滚动条高度
public var scrolltextnum:int;//文本显示行数
public var textspeed:int;//文本滚动速度(行/像素)
public var Scroll:Sprite;//自定义滚动条对象
public var bar:Sprite;//滑块
public var up:Sprite;//向上按钮
public var down:Sprite;//向下按钮
public var bg:Sprite;//滑槽
public var num:int;//计算滑块高度所用
public var scrollwidth:Number;//左右滚动条宽度
public var left_right_scroll:Sprite;//左右自定义滚动条对象
public var left_right_bar:Sprite;//左右滚动条滑块
public var left:Sprite;//向左按钮
public var right:Sprite;//向右按钮
public var left_right_bg:Sprite;//左右滚动条滑槽
public var num2:int;//计算左右滑块宽度
private var displayobject:Stage;//接受stage
private var bars:Number;//滑块可滑动距离
private var bars2:Number;
private var rect:Rectangle;//滑块可拖动范围
private var rect2:Rectangle;
private var i:int = 0;
private var i2:int = 0;
private var n:Number;
private var n2:Number;
////构造器函数/////
public function Scrollbar():void
{
}
/////初始化函数/////
public function init():void
{
displayobject = Stages.stagess;
if (checkhide())
{
addEventListeners();
}
else
{
bar.visible = false;
}
setxy();
}
public function init2():void
{
displayobject = Stages.stagess;
if (check_leftandright_hide())
{
leftandright_addEventListeners();
}
else
{
left_right_bar.visible = false;
}
setxy2();
}
///判断是否显示滚动条等///
private function checkhide():Boolean
{
if (Scroll != null)
{
if (obj.height <= scrollmask.height)
{
return false;
}
return true;
}
return false;
}
///判断是否显示左右滚动条等///
private function check_leftandright_hide():Boolean
{
if (left_right_scroll != null)
{
if (obj.width <= scrollmask.width)
{
return false;
}
return true;
}
return false;
}
///设置滚动条高度,对象遮罩等////
private function setxy():void
{
bar.y = bg.y;
if (bar.height >= 10)
{
num *= 50;
n = (obj.height - scrollmask.height)/(num+100);
bar.height = scrollmask.height - (obj.height - scrollmask.height)/n;
}
bars = bg.height - bar.height;
obj.mask = scrollmask;
rect = new Rectangle(bar.x,bg.y,0,bg.height - bar.height - 30);
}
private function setxy2():void
{
left_right_bar.x = left_right_bg.x;
if (left_right_bar.width >= 10)
{
num2 *= 50;
n2 = (obj.width - scrollmask.width)/(num2+100);
left_right_bar.width = scrollmask.width - (obj.width - scrollmask.width)/n2;
}
bars2 = left_right_bg.width - left_right_bar.width;
obj.mask = scrollmask;
rect2 = new Rectangle(left_right_bg.x,left_right_bar.y,left_right_bg.width - left_right_bar.width - 30,0);
}
///当被滚动对象更新时,而需要改变滚动条状态,调用此方法///
public function update(num:int):void
{
if (checkhide())
{
num *= 20;
i++;
bar.visible = true;
if (bar.height >= 10)
{
n = (obj.height - scrollmask.height)/(num+10);
bar.height = scrollmask.height - (obj.height - scrollmask.height)/n;
}
bar.y = bg.y + bg.height - bar.height;
bar.y += bars * textspeed /(obj.height - scrollmask.height);
updatebar();
bars = bg.height - bar.height;
rect = new Rectangle(bar.x,bg.y + 0.5,0,bg.height - bar.height);
if (i == 1)
{
bar.visible = true;
addEventListeners();
}
}
else
{
bar.visible = false;
}
}
///当被滚动对象更新时,而需要改变左右滚动条状态,调用此方法///
public function update2(num:int):void
{
if (check_leftandright_hide())
{
num *= 10;
i2++;
left_right_bar.visible = true;
if (left_right_bar.width >= 10)
{
n2 = (obj.width - scrollmask.width)/(num+10);
left_right_bar.width = scrollmask.width - (obj.width - scrollmask.width)/n2;
}
left_right_bar.x = left_right_bg.x + left_right_bg.width - left_right_bar.width;
left_right_bar.x += bars2 * textspeed /(obj.width - scrollmask.width);
updatebar2();
bars2 = left_right_bg.width - left_right_bar.width;
rect2 = new Rectangle(left_right_bg.x,left_right_bar.y,left_right_bg.width - left_right_bar.width,0);
if (i2 == 1)
{
left_right_bar.visible = true;
leftandright_addEventListeners();
}
}
else
{
left_right_bar.visible = false;
}
}
///为滚动条添加监听事件////
private function addEventListeners():void
{
bar.addEventListener(MouseEvent.MOUSE_DOWN,barclick);
bar.addEventListener(MouseEvent.MOUSE_UP,barup);
displayobject.addEventListener(MouseEvent.MOUSE_UP,barup);
up.addEventListener(MouseEvent.MOUSE_DOWN,upclick);
down.addEventListener(MouseEvent.MOUSE_DOWN,downclick);
Scroll.addEventListener(MouseEvent.MOUSE_WHEEL,mousewheel);
displayobject.addEventListener(MouseEvent.MOUSE_WHEEL,mousewheel);
}
///为左右滚动条添加监听事件///;
private function leftandright_addEventListeners():void
{
left_right_bar.addEventListener(MouseEvent.MOUSE_DOWN,left_right_barclick);
left_right_bar.addEventListener(MouseEvent.MOUSE_UP,left_right_barup);
displayobject.addEventListener(MouseEvent.MOUSE_UP,left_right_barup);
left.addEventListener(MouseEvent.MOUSE_DOWN,leftclick);
right.addEventListener(MouseEvent.MOUSE_DOWN,rightclick);
}
///鼠标点击滑块方法///;
private function barclick(evt:MouseEvent):void
{
bar.startDrag(false,rect);
bar.addEventListener(Event.ENTER_FRAME,bar_enter_frame);
}
private function left_right_barclick(evt:MouseEvent):void
{
left_right_bar.startDrag(false,rect2);
left_right_bar.addEventListener(Event.ENTER_FRAME,bar_enter_frame2);
}
///鼠标点击滑块释放方法///;
private function barup(evt:MouseEvent):void
{
bar.stopDrag();
delevent();
}
private function left_right_barup(evt:MouseEvent):void
{
left_right_bar.stopDrag();
delevent2();
}
///鼠标点击向上按钮方法///
private function upclick(evt:MouseEvent):void
{
if (checkbar())
{
bar.y -= bars * textspeed /(obj.height-scrollmask.height);//滑块移动的距离=滚动对象滚动的像素*滑块可移动的总距离/(被滚动对象的高度-遮罩的高度(即显示范围的高度))
objrun(0-textspeed);
//调用方法移动对象;
updatebar();//校正滑块位置
}
}
private function leftclick(evt:MouseEvent):void
{
if (checkbar2())
{
left_right_bar.x -= bars2 * textspeed /(obj.width - scrollmask.width);
objrun2(0-textspeed);
updatebar2();
}
}
///鼠标点击向下按钮方法///
private function downclick(evt:MouseEvent):void
{
if (checkbar())
{
bar.y += bars * textspeed /(obj.height - scrollmask.height);
objrun(textspeed);
updatebar();
}
}
private function rightclick(evt:MouseEvent):void
{
if (checkbar2())
{
left_right_bar.x += bars2 * textspeed /(obj.width - scrollmask.width);
objrun2(textspeed);
updatebar2();
}
}
///鼠标滑轮事件///
private function mousewheel(evt:MouseEvent):void
{
if (evt.delta > 0)
{
if (checkbar())
{
bar.y -= bars * textspeed /(obj.height - scrollmask.height);
objrun(-textspeed);
updatebar();
}
}
else
{
if (checkbar())
{
bar.y += bars * textspeed /(obj.height - scrollmask.height);
objrun(textspeed);
updatebar();
}
}
}
private function bar_enter_frame(evt:Event):void
{
obj.y = scrollmask.y - (bar.y - bg.y)*(obj.height - scrollmask.height)/bars;
if (obj.y > scrollmask.y)
{
obj.y = scrollmask.y;
}
else if (obj.y < (scrollmask.y - obj.height + scrollmask.height))
{
obj.y = scrollmask.y - obj.height + scrollmask.height;
}
}
private function bar_enter_frame2(evt:Event):void
{
obj.x = scrollmask.x - (left_right_bar.x - left_right_bg.x)*(obj.width - scrollmask.width)/bars2;
if (obj.x > scrollmask.x)
{
obj.x = scrollmask.x;
}
else if (obj.x < (scrollmask.x - obj.width + scrollmask.width))
{
obj.x = scrollmask.x - obj.width + scrollmask.width;
}
}
private function objrun(i:Number):void
{
obj.y -= i;
if (obj.y > scrollmask.y)
{
obj.y = scrollmask.y;
}
else if (obj.y < (scrollmask.y - obj.height + scrollmask.height))
{
obj.y = scrollmask.y - obj.height + scrollmask.height;
}
}
private function objrun2(i:Number):void
{
obj.x -= i;
if (obj.x > scrollmask.x)
{
obj.x = scrollmask.x;
}
else if (obj.x < (scrollmask.x - obj.width + scrollmask.width))
{
obj.x = scrollmask.x - obj.width + scrollmask.width;
}
}
private function checkbar():Boolean
{
if (bar.y >= bg.y && bar.y <= (bars + bg.y))
{
return true;
}
return false;
}
private function checkbar2():Boolean
{
if (left_right_bar.x >= left_right_bg.x && left_right_bar.x <= (bars2 + left_right_bg.x))
{
return true;
}
return false;
}
///删除卸载事件侦听///
private function updatebar():void
{
if (bar.y < bg.y)
{
bar.y = bg.y;
}
else if (bar.y >(bg.y + bg.height - bar.height))
{
bar.y = bg.y + bg.height - bar.height;
}
}
private function updatebar2():void
{
if (left_right_bar.x < left_right_bg.x)
{
left_right_bar.x = left_right_bg.x;
}
else if (left_right_bar.x >(left_right_bg.x + left_right_bg.width - left_right_bar.width))
{
left_right_bar.x = left_right_bg.x + left_right_bg.width - left_right_bar.width;
}
}
private function delevent2():void
{
left_right_bar.removeEventListener(Event.ENTER_FRAME,bar_enter_frame2);
}
private function delevent():void
{
bar.removeEventListener(Event.ENTER_FRAME,bar_enter_frame);
}
}
}
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import ui.Stages;
import flash.geom.Rectangle;
import flash.display.Stage;
import flash.geom.Matrix;
import flash.display.SpreadMethod;
import flash.display.GradientType;
import flash.display.MovieClip;
public class Scrollbar extends Sprite
{
public var obj:MovieClip;//需进行滚动的对象
public var scrollmask:Sprite;//遮罩对象
public var scrollheight:Number;//滚动条高度
public var scrolltextnum:int;//文本显示行数
public var textspeed:int;//文本滚动速度(行/像素)
public var Scroll:Sprite;//自定义滚动条对象
public var bar:Sprite;//滑块
public var up:Sprite;//向上按钮
public var down:Sprite;//向下按钮
public var bg:Sprite;//滑槽
public var num:int;//计算滑块高度所用
public var scrollwidth:Number;//左右滚动条宽度
public var left_right_scroll:Sprite;//左右自定义滚动条对象
public var left_right_bar:Sprite;//左右滚动条滑块
public var left:Sprite;//向左按钮
public var right:Sprite;//向右按钮
public var left_right_bg:Sprite;//左右滚动条滑槽
public var num2:int;//计算左右滑块宽度
private var displayobject:Stage;//接受stage
private var bars:Number;//滑块可滑动距离
private var bars2:Number;
private var rect:Rectangle;//滑块可拖动范围
private var rect2:Rectangle;
private var i:int = 0;
private var i2:int = 0;
private var n:Number;
private var n2:Number;
////构造器函数/////
public function Scrollbar():void
{
}
/////初始化函数/////
public function init():void
{
displayobject = Stages.stagess;
if (checkhide())
{
addEventListeners();
}
else
{
bar.visible = false;
}
setxy();
}
public function init2():void
{
displayobject = Stages.stagess;
if (check_leftandright_hide())
{
leftandright_addEventListeners();
}
else
{
left_right_bar.visible = false;
}
setxy2();
}
///判断是否显示滚动条等///
private function checkhide():Boolean
{
if (Scroll != null)
{
if (obj.height <= scrollmask.height)
{
return false;
}
return true;
}
return false;
}
///判断是否显示左右滚动条等///
private function check_leftandright_hide():Boolean
{
if (left_right_scroll != null)
{
if (obj.width <= scrollmask.width)
{
return false;
}
return true;
}
return false;
}
///设置滚动条高度,对象遮罩等////
private function setxy():void
{
bar.y = bg.y;
if (bar.height >= 10)
{
num *= 50;
n = (obj.height - scrollmask.height)/(num+100);
bar.height = scrollmask.height - (obj.height - scrollmask.height)/n;
}
bars = bg.height - bar.height;
obj.mask = scrollmask;
rect = new Rectangle(bar.x,bg.y,0,bg.height - bar.height - 30);
}
private function setxy2():void
{
left_right_bar.x = left_right_bg.x;
if (left_right_bar.width >= 10)
{
num2 *= 50;
n2 = (obj.width - scrollmask.width)/(num2+100);
left_right_bar.width = scrollmask.width - (obj.width - scrollmask.width)/n2;
}
bars2 = left_right_bg.width - left_right_bar.width;
obj.mask = scrollmask;
rect2 = new Rectangle(left_right_bg.x,left_right_bar.y,left_right_bg.width - left_right_bar.width - 30,0);
}
///当被滚动对象更新时,而需要改变滚动条状态,调用此方法///
public function update(num:int):void
{
if (checkhide())
{
num *= 20;
i++;
bar.visible = true;
if (bar.height >= 10)
{
n = (obj.height - scrollmask.height)/(num+10);
bar.height = scrollmask.height - (obj.height - scrollmask.height)/n;
}
bar.y = bg.y + bg.height - bar.height;
bar.y += bars * textspeed /(obj.height - scrollmask.height);
updatebar();
bars = bg.height - bar.height;
rect = new Rectangle(bar.x,bg.y + 0.5,0,bg.height - bar.height);
if (i == 1)
{
bar.visible = true;
addEventListeners();
}
}
else
{
bar.visible = false;
}
}
///当被滚动对象更新时,而需要改变左右滚动条状态,调用此方法///
public function update2(num:int):void
{
if (check_leftandright_hide())
{
num *= 10;
i2++;
left_right_bar.visible = true;
if (left_right_bar.width >= 10)
{
n2 = (obj.width - scrollmask.width)/(num+10);
left_right_bar.width = scrollmask.width - (obj.width - scrollmask.width)/n2;
}
left_right_bar.x = left_right_bg.x + left_right_bg.width - left_right_bar.width;
left_right_bar.x += bars2 * textspeed /(obj.width - scrollmask.width);
updatebar2();
bars2 = left_right_bg.width - left_right_bar.width;
rect2 = new Rectangle(left_right_bg.x,left_right_bar.y,left_right_bg.width - left_right_bar.width,0);
if (i2 == 1)
{
left_right_bar.visible = true;
leftandright_addEventListeners();
}
}
else
{
left_right_bar.visible = false;
}
}
///为滚动条添加监听事件////
private function addEventListeners():void
{
bar.addEventListener(MouseEvent.MOUSE_DOWN,barclick);
bar.addEventListener(MouseEvent.MOUSE_UP,barup);
displayobject.addEventListener(MouseEvent.MOUSE_UP,barup);
up.addEventListener(MouseEvent.MOUSE_DOWN,upclick);
down.addEventListener(MouseEvent.MOUSE_DOWN,downclick);
Scroll.addEventListener(MouseEvent.MOUSE_WHEEL,mousewheel);
displayobject.addEventListener(MouseEvent.MOUSE_WHEEL,mousewheel);
}
///为左右滚动条添加监听事件///;
private function leftandright_addEventListeners():void
{
left_right_bar.addEventListener(MouseEvent.MOUSE_DOWN,left_right_barclick);
left_right_bar.addEventListener(MouseEvent.MOUSE_UP,left_right_barup);
displayobject.addEventListener(MouseEvent.MOUSE_UP,left_right_barup);
left.addEventListener(MouseEvent.MOUSE_DOWN,leftclick);
right.addEventListener(MouseEvent.MOUSE_DOWN,rightclick);
}
///鼠标点击滑块方法///;
private function barclick(evt:MouseEvent):void
{
bar.startDrag(false,rect);
bar.addEventListener(Event.ENTER_FRAME,bar_enter_frame);
}
private function left_right_barclick(evt:MouseEvent):void
{
left_right_bar.startDrag(false,rect2);
left_right_bar.addEventListener(Event.ENTER_FRAME,bar_enter_frame2);
}
///鼠标点击滑块释放方法///;
private function barup(evt:MouseEvent):void
{
bar.stopDrag();
delevent();
}
private function left_right_barup(evt:MouseEvent):void
{
left_right_bar.stopDrag();
delevent2();
}
///鼠标点击向上按钮方法///
private function upclick(evt:MouseEvent):void
{
if (checkbar())
{
bar.y -= bars * textspeed /(obj.height-scrollmask.height);//滑块移动的距离=滚动对象滚动的像素*滑块可移动的总距离/(被滚动对象的高度-遮罩的高度(即显示范围的高度))
objrun(0-textspeed);
//调用方法移动对象;
updatebar();//校正滑块位置
}
}
private function leftclick(evt:MouseEvent):void
{
if (checkbar2())
{
left_right_bar.x -= bars2 * textspeed /(obj.width - scrollmask.width);
objrun2(0-textspeed);
updatebar2();
}
}
///鼠标点击向下按钮方法///
private function downclick(evt:MouseEvent):void
{
if (checkbar())
{
bar.y += bars * textspeed /(obj.height - scrollmask.height);
objrun(textspeed);
updatebar();
}
}
private function rightclick(evt:MouseEvent):void
{
if (checkbar2())
{
left_right_bar.x += bars2 * textspeed /(obj.width - scrollmask.width);
objrun2(textspeed);
updatebar2();
}
}
///鼠标滑轮事件///
private function mousewheel(evt:MouseEvent):void
{
if (evt.delta > 0)
{
if (checkbar())
{
bar.y -= bars * textspeed /(obj.height - scrollmask.height);
objrun(-textspeed);
updatebar();
}
}
else
{
if (checkbar())
{
bar.y += bars * textspeed /(obj.height - scrollmask.height);
objrun(textspeed);
updatebar();
}
}
}
private function bar_enter_frame(evt:Event):void
{
obj.y = scrollmask.y - (bar.y - bg.y)*(obj.height - scrollmask.height)/bars;
if (obj.y > scrollmask.y)
{
obj.y = scrollmask.y;
}
else if (obj.y < (scrollmask.y - obj.height + scrollmask.height))
{
obj.y = scrollmask.y - obj.height + scrollmask.height;
}
}
private function bar_enter_frame2(evt:Event):void
{
obj.x = scrollmask.x - (left_right_bar.x - left_right_bg.x)*(obj.width - scrollmask.width)/bars2;
if (obj.x > scrollmask.x)
{
obj.x = scrollmask.x;
}
else if (obj.x < (scrollmask.x - obj.width + scrollmask.width))
{
obj.x = scrollmask.x - obj.width + scrollmask.width;
}
}
private function objrun(i:Number):void
{
obj.y -= i;
if (obj.y > scrollmask.y)
{
obj.y = scrollmask.y;
}
else if (obj.y < (scrollmask.y - obj.height + scrollmask.height))
{
obj.y = scrollmask.y - obj.height + scrollmask.height;
}
}
private function objrun2(i:Number):void
{
obj.x -= i;
if (obj.x > scrollmask.x)
{
obj.x = scrollmask.x;
}
else if (obj.x < (scrollmask.x - obj.width + scrollmask.width))
{
obj.x = scrollmask.x - obj.width + scrollmask.width;
}
}
private function checkbar():Boolean
{
if (bar.y >= bg.y && bar.y <= (bars + bg.y))
{
return true;
}
return false;
}
private function checkbar2():Boolean
{
if (left_right_bar.x >= left_right_bg.x && left_right_bar.x <= (bars2 + left_right_bg.x))
{
return true;
}
return false;
}
///删除卸载事件侦听///
private function updatebar():void
{
if (bar.y < bg.y)
{
bar.y = bg.y;
}
else if (bar.y >(bg.y + bg.height - bar.height))
{
bar.y = bg.y + bg.height - bar.height;
}
}
private function updatebar2():void
{
if (left_right_bar.x < left_right_bg.x)
{
left_right_bar.x = left_right_bg.x;
}
else if (left_right_bar.x >(left_right_bg.x + left_right_bg.width - left_right_bar.width))
{
left_right_bar.x = left_right_bg.x + left_right_bg.width - left_right_bar.width;
}
}
private function delevent2():void
{
left_right_bar.removeEventListener(Event.ENTER_FRAME,bar_enter_frame2);
}
private function delevent():void
{
bar.removeEventListener(Event.ENTER_FRAME,bar_enter_frame);
}
}
}
文档类:Main.as
package
{
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import com.*;
import ui.*;
import control.*;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.display.Shape;
import flash.net.URLLoader;
public class Main extends MovieClip
{
private var mymovie:MovieClip;
private var num:int;
private var url:String;
private var myloading:loading;
private var up_btn:uppage_btn = new uppage_btn();
private var down_btn:downpage_btn = new downpage_btn();
private var fd_btn:fangda_btn = new fangda_btn();
private var sx_btn:suoxiao_btn = new suoxiao_btn();
private var up_scrollbtn:up_listbtn = new up_listbtn();
private var down_scrollbtn:down_listbtn = new down_listbtn();
private var left_scrollbtn:up_listbtn = new up_listbtn();
private var right_scrollbtn:down_listbtn = new down_listbtn();
private var left_right_bg:Sprite;
private var left_right_bar:Sprite;
private var left_right_scrollcont:Sprite = new Sprite();
private var mymouse:Mouse_hand = new Mouse_hand();
private var mc_width:int = 595;
private var mc_height:int = 841;
private var myscrollbar:Scrollbar;
private var scrollmask:Sprite;
private var scrollcont:Sprite = new Sprite();
private var bg:Sprite;
private var bar:Sprite;
private var nums:int = 0;
private var PageTotal:TextField = new TextField();
private var Paged:TextField = new TextField();
private var textformat:TextFormat = new TextFormat();
private var progress_txt:TextField = new TextField();
private var count:int = 0;
private const my_y:Array = [30,-20,-70,-120,-170,-220,-270,-320,-370,-420,-470];
private const my_x:Array = [0,-50,-100,-150,-200,-250,-300,-350,-400,-450,-500];
private var mu_child:child = new child();
private var screen_child:screen = new screen();
private var myx:Number;
public function Main():void
{
//stage.align = StageAlign.LEFT;
stage.scaleMode = StageScaleMode.SHOW_ALL;
Stages.stagess = this.stage;
init();
}
private function init():void
{
var myurlloader:URLLoader = new URLLoader();
myurlloader.addEventListener(Event.COMPLETE,xmlcom);
myurlloader.load(new URLRequest("https://files.cnblogs.com/zhoujunfeng2011/SWF/data.xml"));
}
private function xmlcom(evt:Event):void
{
var myxml:XML = new XML(evt.target.data);
var txt1:TextField = new TextField();
var txt2:TextField = new TextField();
var txt3:TextField = new TextField();
var format:TextFormat = new TextFormat();
format.font = "Times New Roman";
format.color = 0x000000;
format.size = 24;
txt1.text = "第";
txt1.selectable = false;
txt2.text = "页 共";
txt2.selectable = false;
txt3.text = "页";
txt3.selectable = false;
textformat.font = "Times New Roman";
textformat.color = 0x000000;
textformat.size = 14;
txt1.setTextFormat(textformat);
txt2.setTextFormat(textformat);
txt3.setTextFormat(textformat);
myscrollbar = new Scrollbar();
addChild(up_btn);
up_btn.x = 470;
up_btn.y = 15;
up_btn.buttonMode = true;
addChild(down_btn);
down_btn.x = up_btn.x + 40;
down_btn.y = up_btn.y;
down_btn.buttonMode = true;
addChild(fd_btn);
fd_btn.x = up_btn.x - 80;
fd_btn.y = up_btn.y;
fd_btn.buttonMode = true;
addChild(sx_btn);
sx_btn.x = fd_btn.x + sx_btn.width + 10;
sx_btn.y = fd_btn.y;
sx_btn.buttonMode = true;
addChild(txt1);
txt1.x = 224;
txt1.y = 5;
txt1.width = txt1.textWidth + 6;
addChild(txt2);
txt2.x = txt1.x + 50;
txt2.y = txt1.y;
txt2.width = txt2.textWidth + 6;
addChild(txt3);
txt3.x = txt2.x + 70;
txt3.y = txt2.y;
txt3.width = txt3.textWidth + 6;
PageTotal.text = "0";
Paged.text = "0";
PageTotal.setTextFormat(textformat);
Paged.setTextFormat(textformat);
PageTotal.selectable = false;
Paged.selectable = false;
addChild(Paged);
Paged.x = 250;
Paged.y = 5;
Paged.width = Paged.textWidth + 20;
addChild(PageTotal);
PageTotal.x = 318;
PageTotal.y = 5;
PageTotal.width = PageTotal.textWidth + 20;
addChild(screen_child);
screen_child.x = 560;
screen_child.y = 16;
screen_child.buttonMode = true;
addChild(mu_child);
mu_child.x = 590;
mu_child.y = 15;
mu_child.buttonMode = true;
url = encodeURI(myxml.child("swf")[0].@url);
var myloader:Loader = new Loader();
myloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progress_function);
myloader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
myloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,load_error);
myloader.load(new URLRequest(url));
myloading = new loading();
addChild(myloading);
myloading.x = this.stage.stageWidth / 3;
myloading.y = this.stage.stageHeight / 3;
addChild(progress_txt);
progress_txt.selectable = false;
progress_txt.setTextFormat(format);
progress_txt.text = count + "%";
progress_txt.x = myloading.x + 130;
progress_txt.y = myloading.y + 95;
}
private function progress_function(evt:ProgressEvent):void
{
count = (evt.bytesLoaded/evt.bytesTotal) * 100;
progress_txt.text = count + "%";
}
private function load_error(evt:IOErrorEvent):void
{
progress_txt.textColor = 0xff0000;
progress_txt.text = "加载失败!";
}
private function DrawInMask():Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,0,mc_width,mc_height);
sp.graphics.endFill();
return sp;
}
private function DrawInbg(w:Number,h:Number):Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0xcccccc);
sp.graphics.drawRect(0,0,w,h);
sp.graphics.endFill();
return sp;
}
private function DrawInBar(w:Number,h:Number):Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0x666666);
sp.graphics.drawRect(0,0,w,h);
sp.graphics.endFill();
return sp;
}
private function com(evt:Event):void
{
removeChild(myloading);
myloading = null;
removeChild(progress_txt);
progress_txt = null;
evt.target.content.removeEventListener(ProgressEvent.PROGRESS,progress_function);
evt.target.content.removeEventListener(Event.COMPLETE,com);
evt.target.content.removeEventListener(IOErrorEvent.IO_ERROR,load_error);
mymovie = MovieClip(evt.target.content);
mymovie.width = mc_width;
mymovie.height = mc_height;
num = mymovie.totalFrames;
addChild(mymovie);
mymovie.y = 30;
mymovie.cacheAsBitmap = true;
UIinit();
up_btn.addEventListener(MouseEvent.CLICK,up_click);
up_btn.addEventListener(MouseEvent.MOUSE_OVER,up_over);
up_btn.addEventListener(MouseEvent.MOUSE_OUT,up_out);
down_btn.addEventListener(MouseEvent.CLICK,down_click);
down_btn.addEventListener(MouseEvent.MOUSE_OVER,down_over);
down_btn.addEventListener(MouseEvent.MOUSE_OUT,down_out);
fd_btn.addEventListener(MouseEvent.CLICK,fangda_click);
fd_btn.addEventListener(MouseEvent.MOUSE_OVER,fangda_over);
fd_btn.addEventListener(MouseEvent.MOUSE_OUT,fangda_out);
sx_btn.addEventListener(MouseEvent.CLICK,suoxiao_click);
sx_btn.addEventListener(MouseEvent.MOUSE_OVER,suoxiao_over);
sx_btn.addEventListener(MouseEvent.MOUSE_OUT,suoxiao_out);
mymovie.addEventListener(MouseEvent.CLICK,mymovie_click);
mu_child.addEventListener(MouseEvent.CLICK,mu_child_click);
mu_child.addEventListener(MouseEvent.MOUSE_OVER,mu_child_over);
mu_child.addEventListener(MouseEvent.MOUSE_OUT,mu_child_out);
screen_child.addEventListener(MouseEvent.CLICK,screen_child_click);
screen_child.addEventListener(MouseEvent.MOUSE_OVER,screen_child_over);
screen_child.addEventListener(MouseEvent.MOUSE_OUT,screen_child_out);
}
private function UIinit():void
{
PageTotal.text = String(num);
Paged.text = String(mymovie.currentFrame);
scrollmask = DrawInMask();
scrollmask.x = mymovie.x;
scrollmask.y = mymovie.y;
bg = DrawInbg(15,mymovie.height - 32);
bar = DrawInBar(15,mymovie.height - 200);
scrollcont.addChild(up_scrollbtn);
up_scrollbtn.x = this.stage.stageWidth - up_scrollbtn.width / 2 + 0.5;
up_scrollbtn.y = 40;
scrollcont.addChild(bg);
bg.x = this.stage.stageWidth - bg.width;
bg.y = up_scrollbtn.y + up_scrollbtn.height / 2 -3;
scrollcont.addChild(down_scrollbtn);
down_scrollbtn.x = up_scrollbtn.x;
down_scrollbtn.y = bg.y + bg.height + 6;
scrollcont.addChild(bar);
bar.x = bg.x;
bar.y = bg.y;
addChild(scrollcont);
left_right_bg = DrawInbg(580,15);
left_right_bar = DrawInBar(580,15);
left_right_scrollcont.addChild(left_scrollbtn);
left_scrollbtn.rotation = 270;
left_scrollbtn.x = left_scrollbtn.width/2;
left_scrollbtn.y = 880;
left_right_scrollcont.addChild(left_right_bg);
left_right_bg.x = left_scrollbtn.width - 4;
left_right_bg.y = left_scrollbtn.y - left_scrollbtn.height/2 + 0.5;
left_right_scrollcont.addChild(right_scrollbtn);
right_scrollbtn.rotation = 270;
right_scrollbtn.x = left_right_bg.x + left_right_bg.width + 6;
right_scrollbtn.y = left_scrollbtn.y;
left_right_scrollcont.addChild(left_right_bar);
left_right_bar.x = left_right_bg.x;
left_right_bar.y = left_right_bg.y;
addChild(left_right_scrollcont);
myscrollbar.obj = mymovie;
myscrollbar.scrollmask = scrollmask;
myscrollbar.scrollheight = mymovie.height - 63;
myscrollbar.textspeed = 10;
myscrollbar.bg = bg;
myscrollbar.bar = bar;
myscrollbar.up = up_scrollbtn;
myscrollbar.down = down_scrollbtn;
myscrollbar.num = nums;
myscrollbar.Scroll = scrollcont;
myscrollbar.left = left_scrollbtn;
myscrollbar.right = right_scrollbtn;
myscrollbar.left_right_bar = left_right_bar;
myscrollbar.left_right_bg = left_right_bg;
myscrollbar.num2 = nums;
myscrollbar.left_right_scroll = left_right_scrollcont;
myscrollbar.init();
myscrollbar.init2();
}
private function up_click(evt:MouseEvent):void
{
if (mymovie.currentFrame != 1)
{
mymovie.prevFrame();
}
else
{
mymovie.gotoAndStop(num);
}
Paged.text = String(mymovie.currentFrame);
}
private function up_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("上一页");
}
private function up_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function down_click(evt:MouseEvent):void
{
if (mymovie.currentFrame != num)
{
mymovie.nextFrame();
}
else
{
mymovie.gotoAndStop(1);
}
Paged.text = String(mymovie.currentFrame);
}
private function down_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("下一页");
}
private function down_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function fangda_click(evt:MouseEvent):void
{
if (mymovie.width < mc_width + 1000 || mymovie.height < mc_height + 1000)
{
nums++;
mymovie.width += 100;
mymovie.height += 100;
mymovie.x = my_x[nums];
mymovie.y = my_y[nums];
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function fangda_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("放大");
}
private function fangda_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function suoxiao_click(evt:MouseEvent):void
{
if (mymovie.width > mc_width || mymovie.height > mc_height)
{
nums--;
mymovie.width -= 100;
mymovie.height -= 100;
mymovie.x = my_x[nums];
mymovie.y = my_y[nums];
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function suoxiao_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("缩小");
}
private function suoxiao_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function mymovie_click(evt:MouseEvent):void
{
if (int(Paged.text) != mymovie.currentFrame)
{
Paged.text = String(mymovie.currentFrame);
}
}
private function mu_child_click(evt:MouseEvent):void
{
switch (stage.displayState)
{
case "normal" :
stage.displayState = "fullScreen";
break;
case "fullScreen" :
default :
stage.displayState = "normal";
break;
}
}
private function mu_child_over(evt:MouseEvent):void
{
switch (stage.displayState)
{
case "normal" :
TipTextFiled.addTipTextFiled("全屏显示");
break;
case "fullScreen" :
default :
TipTextFiled.addTipTextFiled("退出全屏");
break;
}
}
private function mu_child_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function screen_child_click(evt:MouseEvent):void
{
if(mymovie.width != mc_width || mymovie.height != mc_height)
{
nums = 0;
mymovie.x = 0;
mymovie.y = 30;
mymovie.width = mc_width;
mymovie.height = mc_height;
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function screen_child_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("适屏");
}
private function screen_child_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
}
}
{
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import com.*;
import ui.*;
import control.*;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.display.Shape;
import flash.net.URLLoader;
public class Main extends MovieClip
{
private var mymovie:MovieClip;
private var num:int;
private var url:String;
private var myloading:loading;
private var up_btn:uppage_btn = new uppage_btn();
private var down_btn:downpage_btn = new downpage_btn();
private var fd_btn:fangda_btn = new fangda_btn();
private var sx_btn:suoxiao_btn = new suoxiao_btn();
private var up_scrollbtn:up_listbtn = new up_listbtn();
private var down_scrollbtn:down_listbtn = new down_listbtn();
private var left_scrollbtn:up_listbtn = new up_listbtn();
private var right_scrollbtn:down_listbtn = new down_listbtn();
private var left_right_bg:Sprite;
private var left_right_bar:Sprite;
private var left_right_scrollcont:Sprite = new Sprite();
private var mymouse:Mouse_hand = new Mouse_hand();
private var mc_width:int = 595;
private var mc_height:int = 841;
private var myscrollbar:Scrollbar;
private var scrollmask:Sprite;
private var scrollcont:Sprite = new Sprite();
private var bg:Sprite;
private var bar:Sprite;
private var nums:int = 0;
private var PageTotal:TextField = new TextField();
private var Paged:TextField = new TextField();
private var textformat:TextFormat = new TextFormat();
private var progress_txt:TextField = new TextField();
private var count:int = 0;
private const my_y:Array = [30,-20,-70,-120,-170,-220,-270,-320,-370,-420,-470];
private const my_x:Array = [0,-50,-100,-150,-200,-250,-300,-350,-400,-450,-500];
private var mu_child:child = new child();
private var screen_child:screen = new screen();
private var myx:Number;
public function Main():void
{
//stage.align = StageAlign.LEFT;
stage.scaleMode = StageScaleMode.SHOW_ALL;
Stages.stagess = this.stage;
init();
}
private function init():void
{
var myurlloader:URLLoader = new URLLoader();
myurlloader.addEventListener(Event.COMPLETE,xmlcom);
myurlloader.load(new URLRequest("https://files.cnblogs.com/zhoujunfeng2011/SWF/data.xml"));
}
private function xmlcom(evt:Event):void
{
var myxml:XML = new XML(evt.target.data);
var txt1:TextField = new TextField();
var txt2:TextField = new TextField();
var txt3:TextField = new TextField();
var format:TextFormat = new TextFormat();
format.font = "Times New Roman";
format.color = 0x000000;
format.size = 24;
txt1.text = "第";
txt1.selectable = false;
txt2.text = "页 共";
txt2.selectable = false;
txt3.text = "页";
txt3.selectable = false;
textformat.font = "Times New Roman";
textformat.color = 0x000000;
textformat.size = 14;
txt1.setTextFormat(textformat);
txt2.setTextFormat(textformat);
txt3.setTextFormat(textformat);
myscrollbar = new Scrollbar();
addChild(up_btn);
up_btn.x = 470;
up_btn.y = 15;
up_btn.buttonMode = true;
addChild(down_btn);
down_btn.x = up_btn.x + 40;
down_btn.y = up_btn.y;
down_btn.buttonMode = true;
addChild(fd_btn);
fd_btn.x = up_btn.x - 80;
fd_btn.y = up_btn.y;
fd_btn.buttonMode = true;
addChild(sx_btn);
sx_btn.x = fd_btn.x + sx_btn.width + 10;
sx_btn.y = fd_btn.y;
sx_btn.buttonMode = true;
addChild(txt1);
txt1.x = 224;
txt1.y = 5;
txt1.width = txt1.textWidth + 6;
addChild(txt2);
txt2.x = txt1.x + 50;
txt2.y = txt1.y;
txt2.width = txt2.textWidth + 6;
addChild(txt3);
txt3.x = txt2.x + 70;
txt3.y = txt2.y;
txt3.width = txt3.textWidth + 6;
PageTotal.text = "0";
Paged.text = "0";
PageTotal.setTextFormat(textformat);
Paged.setTextFormat(textformat);
PageTotal.selectable = false;
Paged.selectable = false;
addChild(Paged);
Paged.x = 250;
Paged.y = 5;
Paged.width = Paged.textWidth + 20;
addChild(PageTotal);
PageTotal.x = 318;
PageTotal.y = 5;
PageTotal.width = PageTotal.textWidth + 20;
addChild(screen_child);
screen_child.x = 560;
screen_child.y = 16;
screen_child.buttonMode = true;
addChild(mu_child);
mu_child.x = 590;
mu_child.y = 15;
mu_child.buttonMode = true;
url = encodeURI(myxml.child("swf")[0].@url);
var myloader:Loader = new Loader();
myloader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progress_function);
myloader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
myloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,load_error);
myloader.load(new URLRequest(url));
myloading = new loading();
addChild(myloading);
myloading.x = this.stage.stageWidth / 3;
myloading.y = this.stage.stageHeight / 3;
addChild(progress_txt);
progress_txt.selectable = false;
progress_txt.setTextFormat(format);
progress_txt.text = count + "%";
progress_txt.x = myloading.x + 130;
progress_txt.y = myloading.y + 95;
}
private function progress_function(evt:ProgressEvent):void
{
count = (evt.bytesLoaded/evt.bytesTotal) * 100;
progress_txt.text = count + "%";
}
private function load_error(evt:IOErrorEvent):void
{
progress_txt.textColor = 0xff0000;
progress_txt.text = "加载失败!";
}
private function DrawInMask():Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0x000000);
sp.graphics.drawRect(0,0,mc_width,mc_height);
sp.graphics.endFill();
return sp;
}
private function DrawInbg(w:Number,h:Number):Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0xcccccc);
sp.graphics.drawRect(0,0,w,h);
sp.graphics.endFill();
return sp;
}
private function DrawInBar(w:Number,h:Number):Sprite
{
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0x666666);
sp.graphics.drawRect(0,0,w,h);
sp.graphics.endFill();
return sp;
}
private function com(evt:Event):void
{
removeChild(myloading);
myloading = null;
removeChild(progress_txt);
progress_txt = null;
evt.target.content.removeEventListener(ProgressEvent.PROGRESS,progress_function);
evt.target.content.removeEventListener(Event.COMPLETE,com);
evt.target.content.removeEventListener(IOErrorEvent.IO_ERROR,load_error);
mymovie = MovieClip(evt.target.content);
mymovie.width = mc_width;
mymovie.height = mc_height;
num = mymovie.totalFrames;
addChild(mymovie);
mymovie.y = 30;
mymovie.cacheAsBitmap = true;
UIinit();
up_btn.addEventListener(MouseEvent.CLICK,up_click);
up_btn.addEventListener(MouseEvent.MOUSE_OVER,up_over);
up_btn.addEventListener(MouseEvent.MOUSE_OUT,up_out);
down_btn.addEventListener(MouseEvent.CLICK,down_click);
down_btn.addEventListener(MouseEvent.MOUSE_OVER,down_over);
down_btn.addEventListener(MouseEvent.MOUSE_OUT,down_out);
fd_btn.addEventListener(MouseEvent.CLICK,fangda_click);
fd_btn.addEventListener(MouseEvent.MOUSE_OVER,fangda_over);
fd_btn.addEventListener(MouseEvent.MOUSE_OUT,fangda_out);
sx_btn.addEventListener(MouseEvent.CLICK,suoxiao_click);
sx_btn.addEventListener(MouseEvent.MOUSE_OVER,suoxiao_over);
sx_btn.addEventListener(MouseEvent.MOUSE_OUT,suoxiao_out);
mymovie.addEventListener(MouseEvent.CLICK,mymovie_click);
mu_child.addEventListener(MouseEvent.CLICK,mu_child_click);
mu_child.addEventListener(MouseEvent.MOUSE_OVER,mu_child_over);
mu_child.addEventListener(MouseEvent.MOUSE_OUT,mu_child_out);
screen_child.addEventListener(MouseEvent.CLICK,screen_child_click);
screen_child.addEventListener(MouseEvent.MOUSE_OVER,screen_child_over);
screen_child.addEventListener(MouseEvent.MOUSE_OUT,screen_child_out);
}
private function UIinit():void
{
PageTotal.text = String(num);
Paged.text = String(mymovie.currentFrame);
scrollmask = DrawInMask();
scrollmask.x = mymovie.x;
scrollmask.y = mymovie.y;
bg = DrawInbg(15,mymovie.height - 32);
bar = DrawInBar(15,mymovie.height - 200);
scrollcont.addChild(up_scrollbtn);
up_scrollbtn.x = this.stage.stageWidth - up_scrollbtn.width / 2 + 0.5;
up_scrollbtn.y = 40;
scrollcont.addChild(bg);
bg.x = this.stage.stageWidth - bg.width;
bg.y = up_scrollbtn.y + up_scrollbtn.height / 2 -3;
scrollcont.addChild(down_scrollbtn);
down_scrollbtn.x = up_scrollbtn.x;
down_scrollbtn.y = bg.y + bg.height + 6;
scrollcont.addChild(bar);
bar.x = bg.x;
bar.y = bg.y;
addChild(scrollcont);
left_right_bg = DrawInbg(580,15);
left_right_bar = DrawInBar(580,15);
left_right_scrollcont.addChild(left_scrollbtn);
left_scrollbtn.rotation = 270;
left_scrollbtn.x = left_scrollbtn.width/2;
left_scrollbtn.y = 880;
left_right_scrollcont.addChild(left_right_bg);
left_right_bg.x = left_scrollbtn.width - 4;
left_right_bg.y = left_scrollbtn.y - left_scrollbtn.height/2 + 0.5;
left_right_scrollcont.addChild(right_scrollbtn);
right_scrollbtn.rotation = 270;
right_scrollbtn.x = left_right_bg.x + left_right_bg.width + 6;
right_scrollbtn.y = left_scrollbtn.y;
left_right_scrollcont.addChild(left_right_bar);
left_right_bar.x = left_right_bg.x;
left_right_bar.y = left_right_bg.y;
addChild(left_right_scrollcont);
myscrollbar.obj = mymovie;
myscrollbar.scrollmask = scrollmask;
myscrollbar.scrollheight = mymovie.height - 63;
myscrollbar.textspeed = 10;
myscrollbar.bg = bg;
myscrollbar.bar = bar;
myscrollbar.up = up_scrollbtn;
myscrollbar.down = down_scrollbtn;
myscrollbar.num = nums;
myscrollbar.Scroll = scrollcont;
myscrollbar.left = left_scrollbtn;
myscrollbar.right = right_scrollbtn;
myscrollbar.left_right_bar = left_right_bar;
myscrollbar.left_right_bg = left_right_bg;
myscrollbar.num2 = nums;
myscrollbar.left_right_scroll = left_right_scrollcont;
myscrollbar.init();
myscrollbar.init2();
}
private function up_click(evt:MouseEvent):void
{
if (mymovie.currentFrame != 1)
{
mymovie.prevFrame();
}
else
{
mymovie.gotoAndStop(num);
}
Paged.text = String(mymovie.currentFrame);
}
private function up_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("上一页");
}
private function up_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function down_click(evt:MouseEvent):void
{
if (mymovie.currentFrame != num)
{
mymovie.nextFrame();
}
else
{
mymovie.gotoAndStop(1);
}
Paged.text = String(mymovie.currentFrame);
}
private function down_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("下一页");
}
private function down_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function fangda_click(evt:MouseEvent):void
{
if (mymovie.width < mc_width + 1000 || mymovie.height < mc_height + 1000)
{
nums++;
mymovie.width += 100;
mymovie.height += 100;
mymovie.x = my_x[nums];
mymovie.y = my_y[nums];
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function fangda_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("放大");
}
private function fangda_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function suoxiao_click(evt:MouseEvent):void
{
if (mymovie.width > mc_width || mymovie.height > mc_height)
{
nums--;
mymovie.width -= 100;
mymovie.height -= 100;
mymovie.x = my_x[nums];
mymovie.y = my_y[nums];
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function suoxiao_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("缩小");
}
private function suoxiao_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function mymovie_click(evt:MouseEvent):void
{
if (int(Paged.text) != mymovie.currentFrame)
{
Paged.text = String(mymovie.currentFrame);
}
}
private function mu_child_click(evt:MouseEvent):void
{
switch (stage.displayState)
{
case "normal" :
stage.displayState = "fullScreen";
break;
case "fullScreen" :
default :
stage.displayState = "normal";
break;
}
}
private function mu_child_over(evt:MouseEvent):void
{
switch (stage.displayState)
{
case "normal" :
TipTextFiled.addTipTextFiled("全屏显示");
break;
case "fullScreen" :
default :
TipTextFiled.addTipTextFiled("退出全屏");
break;
}
}
private function mu_child_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
private function screen_child_click(evt:MouseEvent):void
{
if(mymovie.width != mc_width || mymovie.height != mc_height)
{
nums = 0;
mymovie.x = 0;
mymovie.y = 30;
mymovie.width = mc_width;
mymovie.height = mc_height;
myscrollbar.update(nums);
myscrollbar.update2(nums);
}
}
private function screen_child_over(evt:MouseEvent):void
{
TipTextFiled.addTipTextFiled("适屏");
}
private function screen_child_out(evt:MouseEvent):void
{
TipTextFiled.removeTipTextFiled();
}
}
}