论文部分内容阅读
[摘要] 随着Flash技术运用在应用程度开发、多媒体课件开发、教学案例开发、web应用服务等方面,如何制作出符合真实的效果,以成为当下关注的问题。该文阐述了利用ActionScript3语言来实现真实放大镜的效果的方法,从而取代原先利用遮罩和层的技术来实现放大镜动画效果的方法。
[关键词] Flash ActionScript放大镜
1.概述
原先我们在制作层和遮罩的技术将放大镜的效果给呈现出来,但在用户看来非常的不真实,并且在自定义方面也做的不够,不能任意换取背景图片和改变放大镜的样式。
随着ActionScript语言的不断完善,我们可以不使用时间线就能完成互动的要求,并且可以任意修改变量的属性值,将完成我们想要实现的效果。
2.开发语言ActionScript3.0介绍
ActionScript3.0 是Adobe 公司为了适应新的形势需要而推出的面向开发人员的一门脚本语言。ActionScript3.0 与JavaScript 语言相似,是基于ECMAScript(ECMA-262)第4 版规范创建的面向对象的编程语言,对应的虚拟机为AVM2。它在FLASH 内容和应用程序中实现了交互性、数据处理以及其它许多功能。
3.设计介绍
我们如何利用ActionScript3在flash中轻松创建放大镜效果。下方是放大镜的效果图。该应用程序易于用户自定义设置属性并在加载图片时显示进度条的加载状况。
何为自定义?1)任意更替背景图片,只需将图片放置到与swf文件同一目录下便可。图片应该是相当高的分辨率,而显示的图片则会是按比例缩小的版本。2)任意修改矩形放大镜的大小和样式,则需改变变量“glassWidth”和“glassHeight”的值,但如果要创建一个圆形的放大镜,也是修改上述两个参数的值, 即“glassWidth”和“glassHeight”的值都为glass.graphics.drawCircle(glassWidth/2,glassWidth/2,glassWidth/2);
显示load的加载进度条其实很容易,只需一个事件监听器附加到loader类的实例中,同时监听PROGRESS的事件,并将显示的结果输入到动态的TextField中。在这个例子中,我们还使用了“loader”和“infoBox”,加载完成后,我们会删除“updateInfo”监听器以及其他连接到“loader”的监听器。
4.设计过程
1)打开FlashCS4,创建一个fla文件,并创建AS层;
2)加入ActionScript代码,代码如下:
//更改背景图片以及显示加载图片的进度条
startApp();
function startApp():void {
loader=new Loader();
loader.load(new URLRequest("Kazanie_Skargi.jpg"));
infoBox.text="Loading: 0 KB of 443 KB";
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,initPic);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updateInfo); }
function updateInfo(e:ProgressEvent):void {
infoBox.text="Loading: "+String(Math.floor(e.bytesLoaded/1024))+" KB of "+String(Math.floor(e.bytesTotal/1024))+" KB.";
}
//创建放大镜的样式
function drawInGlass(a:Number,b:Number):void {
var curBd:BitmapData;
var curBmp:Bitmap;
var xbeg:Number=a-glassWidth/2;
var ybeg:Number=b-glassHeight/2;
curBmp=new Bitmap(new BitmapData(glassWidth,glassHeight));
curBmp.bitmapData.copyPixels(imageData,new Rectangle(xbeg,ybeg,glassWidth,glassHeight),new Point(0,0));
curBd=curBmp.bitmapData;
glass.graphics.clear();
glass.graphics.lineStyle();
glass.graphics.beginBitmapFill(curBd);
glass.graphics.drawRect(0,0,glassWidth,glassHeight);
glass.graphics.endFill();
}
function glassClear():void {
glass.graphics.clear();
}
5.结果与讨论
通过ActionScript3语言的编写,可以实现相对真实的放大镜效果,有别传统模式利用遮罩来实现的效果,并且在此基础上我们还可以进一步更改背景图片和改变放大镜的样式和大小,使其功能更加完备。
参考文献:
[1]穆克.ActionScript 3.0精髓[M].东南大学出版社,2008.
[2]洛特.ActionScript 3.0 Cookbook中文版 [M].电子工业出版社,2007.
[3]蒋国强.ActionScript3.0完全自学手册[M].机械工业出版社,2009.
[4]孙颖.Flash ActionScript 3 殿堂之路[M].电子工业出版社,2007.
[5]皮特斯.Flash ActionScript 3.0动画教程[M].人民邮电出版社,2008.
[关键词] Flash ActionScript放大镜
1.概述
原先我们在制作层和遮罩的技术将放大镜的效果给呈现出来,但在用户看来非常的不真实,并且在自定义方面也做的不够,不能任意换取背景图片和改变放大镜的样式。
随着ActionScript语言的不断完善,我们可以不使用时间线就能完成互动的要求,并且可以任意修改变量的属性值,将完成我们想要实现的效果。
2.开发语言ActionScript3.0介绍
ActionScript3.0 是Adobe 公司为了适应新的形势需要而推出的面向开发人员的一门脚本语言。ActionScript3.0 与JavaScript 语言相似,是基于ECMAScript(ECMA-262)第4 版规范创建的面向对象的编程语言,对应的虚拟机为AVM2。它在FLASH 内容和应用程序中实现了交互性、数据处理以及其它许多功能。
3.设计介绍
我们如何利用ActionScript3在flash中轻松创建放大镜效果。下方是放大镜的效果图。该应用程序易于用户自定义设置属性并在加载图片时显示进度条的加载状况。
何为自定义?1)任意更替背景图片,只需将图片放置到与swf文件同一目录下便可。图片应该是相当高的分辨率,而显示的图片则会是按比例缩小的版本。2)任意修改矩形放大镜的大小和样式,则需改变变量“glassWidth”和“glassHeight”的值,但如果要创建一个圆形的放大镜,也是修改上述两个参数的值, 即“glassWidth”和“glassHeight”的值都为glass.graphics.drawCircle(glassWidth/2,glassWidth/2,glassWidth/2);
显示load的加载进度条其实很容易,只需一个事件监听器附加到loader类的实例中,同时监听PROGRESS的事件,并将显示的结果输入到动态的TextField中。在这个例子中,我们还使用了“loader”和“infoBox”,加载完成后,我们会删除“updateInfo”监听器以及其他连接到“loader”的监听器。
4.设计过程
1)打开FlashCS4,创建一个fla文件,并创建AS层;
2)加入ActionScript代码,代码如下:
//更改背景图片以及显示加载图片的进度条
startApp();
function startApp():void {
loader=new Loader();
loader.load(new URLRequest("Kazanie_Skargi.jpg"));
infoBox.text="Loading: 0 KB of 443 KB";
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,initPic);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,updateInfo); }
function updateInfo(e:ProgressEvent):void {
infoBox.text="Loading: "+String(Math.floor(e.bytesLoaded/1024))+" KB of "+String(Math.floor(e.bytesTotal/1024))+" KB.";
}
//创建放大镜的样式
function drawInGlass(a:Number,b:Number):void {
var curBd:BitmapData;
var curBmp:Bitmap;
var xbeg:Number=a-glassWidth/2;
var ybeg:Number=b-glassHeight/2;
curBmp=new Bitmap(new BitmapData(glassWidth,glassHeight));
curBmp.bitmapData.copyPixels(imageData,new Rectangle(xbeg,ybeg,glassWidth,glassHeight),new Point(0,0));
curBd=curBmp.bitmapData;
glass.graphics.clear();
glass.graphics.lineStyle();
glass.graphics.beginBitmapFill(curBd);
glass.graphics.drawRect(0,0,glassWidth,glassHeight);
glass.graphics.endFill();
}
function glassClear():void {
glass.graphics.clear();
}
5.结果与讨论
通过ActionScript3语言的编写,可以实现相对真实的放大镜效果,有别传统模式利用遮罩来实现的效果,并且在此基础上我们还可以进一步更改背景图片和改变放大镜的样式和大小,使其功能更加完备。
参考文献:
[1]穆克.ActionScript 3.0精髓[M].东南大学出版社,2008.
[2]洛特.ActionScript 3.0 Cookbook中文版 [M].电子工业出版社,2007.
[3]蒋国强.ActionScript3.0完全自学手册[M].机械工业出版社,2009.
[4]孙颖.Flash ActionScript 3 殿堂之路[M].电子工业出版社,2007.
[5]皮特斯.Flash ActionScript 3.0动画教程[M].人民邮电出版社,2008.