1、flash 8新特性开发实例教程flash 8新特性开发实例教程flash 8 新特性的 API 看看上图,flash8特性的API主要集中在下面4块1 图形效果Filters多种和滤镜有关的类,可以将阴影,模糊这些特效加到你的 mc上。Geometry Classes提供了 Matrix, Point, Rectangle and ColorTransforms 等各种颜色变换效果MovieClip Extensions 除了可以让mc可以利用Filter,geometry外。还提供了 Blending Modes。可以让mc的每一个点的颜色都和背景相融合,这样可以增加很多效果。Bitmap
2、 Caching 可以让一个mc cacheAsBitmap.作为位图的cache,不用每次都进行矢量计算,提高了 performance.Bitmap Display 提供了对位图精确到像素的访问能力2 文字效果: TextField Extensions ,flash中原有的TextField增加了filter滤镜还可以定义sharpness,thickness 。Text Renderer Control ,文字 呈现方式,比如AntiAliasType,ColorType,GridFitType.3 文件:FileReference:用于文件上传和下载4 外部接口 ExternalIn
3、terface: 用于flash和javascriptxml,的交互。主要类如下:BitmapData BitmapData. Channel Button ExternalInterface FileReference FileReferenceList Filters BevelFilter BitmapFilter BitmapFilter. Quality BitmapFilter.Type BlurFilter ColorMatrixFilter ConvolutionFilter DisplacementMapFilter DropShadowFilter GlowFilter G
4、radientBevelFilter GradientGlowFilter Mode Geom ColorTransform Matrix Point Rectangle Transform MovieClip MovieClip. BlendModeType Text TextRenderer TextRenderer. AntiAliasType TextRenderer. ColorType TextRenderer. FontStyle TextRenderer. GridFitType TextField这里为了最快的速度上手。只是用 mtasc 和写字本。方法如下:1 在http:
5、/www.mtasc.org/ 下载 mtasc,解压缩到 d:/mtasc/ 随便什么目录都成2 将d:/mtasc/ 加入classpath.3 在 d:/mtasc/新建 Sonny.as,代码如下:class Sonny function Sonny() var sonny_mc:MovieClip = _root.createEmptyMovieClip(sonny, _root.getNextHighestDepth(); sonny_mc._x = sonny_mc._y=100; sonny_mc.beginFill(0xff6633, 100); sonny_mc.moveT
6、o(0, 0); sonny_mc.lineTo(100, 0); sonny_mc.lineTo(100, 100); sonny_mc.lineTo(0, 100); sonny_mc.lineTo(0, 0); var BlurTest = new flash.filters.BlurFilter(); BlurTest.clone = true; BlurTest.blurX = 20; BlurTest.blurY = 20; sonny_mc.filters = BlurTest; static function main() var tmp = new Sonny(); 代码解释
7、:首先新建了一个Sonny_mc,然后在中间画了一个橙色的正方形。然后通过BlurFilter 加了一个blur的效果在正方形上 4 新建 sonny.batmtasc -header 300:300:25 -main -version 8 Sonny.as -swf Sonny.swfpause双击sonny.bat。 则可看到Sonny.swf则可以看到边缘很好的 模糊效果 如下:环境: windows系统,flash mx2004 中文版 1 进入C:Documents and Settingsyour name Local SettingsApplication DataMacrome
8、diaFlash MX 2004zh_cnConfigurationPublish Profiles注意,这里的your name是你windows系统的用户名。将 default.xml copy一份。命名为flash8.xml.将第2行的 默认文件 改成flash864行 7 ,中的7改成8 2 重新启动flash8 。在 发布设置,点击当前配置 后面的导入按钮,倒入flash8.xml 。点击下方的确定。如图所示:好。马上做一个测试:新建fla,在flash帧上加入如下代码:/ create textfield this.createTextField(txtField, this.ge
9、tNextHighestDepth(), 10, 10, 300, 100); txtField.html = true; txtField.htmlText = http:/www.study-; target=_blankhttp:/www.study-; txtField.textColor = 0x0055CC; txtField.antiAliasType = flash.text.TextRenderer.AntiAliasType.ADVANCED; var dropShadow = new flash.filters.DropShadowFilter(); dropShadow
10、.blurX = 5; dropShadow.blurY = 5; dropShadow.distance = 3; dropShadow.angle = 35; dropShadow.quality = 2; dropShadow.alpha = 0.5; txtField.filters = dropShadow;发布。注意。要在IE中看。因为一般只更新IE中的player。如果字下面出现了明显的阴影.则成功了.结果如下图所示:下面我们看个例子:有如下3张图片:gif图片如下:png图片如下jpg图片如下:在flash8中,我们可以将他们load进flash新建一个fla,加入如下as代码
11、:Stage.scaleMode = noScale; urls = progressive.jpg, test2.png, test1.gif; var i = 0; while (i 3) var cl = this.createEmptyMovieClip(test + i, i + 1); cl.createEmptyMovieClip(holder, 1); cl.holder.loadMovie(urlsi); cl.onPress = function () this.startDrag(); ; cl.onRelease = function () this.stopDrag(
12、); ; i+; 最终的结果如下:看看ExternalInterface类的主要方法。可以看出,ExternalInterface类主要是用于和,还有javascript进行交互的。_arrayToXML _argumentsToXML _objectToXML _toXML _objectToAS _arrayToAS _argumentsToAS _toAS _arrayToJS _objectToJS _toJS JavaScript to FlashActionScript 导入flash.external.ExternalInterface; class ExternalInterf
13、aceTest public function ExternalInterfaceTest() /第一个参数是暴露给javascript的名 /第二个参数是真实调用的 ExternalInterface.addCallback(actionScriptFunction, actionScriptFunction); public function actionScriptFunction(input:String):String trace(input); return input; HTML / JavaScript /flashId, 是网页中flash的名 var flash = (na
14、vigator.appName.indexOf (Microsoft) !=-1)?windowflashId:documentflashId; flash.actionScriptFunction(Hello World.); Flash to JavaScript在 HTML页面: function myJavaScriptFunction(input) window.alert(input); ActionScript导入flash.external.ExternalInterface; class ExternalInterfaceTest public function Extern
15、alInterfaceTest() if(ExternalInterface.available) ExternalInterface.call(myJavaScriptFunction, Hello World); FileReference最主要的方法有个:最主要的方法有2个,browse(),用于 点击后弹出文件选择框upload();如果你上传的服务器脚本是sonny.jsp。上传则可以写成upload(sonny.jsp,POST);upload常见事件如下:onUploadStart:开始上传onUploadProgress上传进度onUploadSuccess上传成功onUplo
16、adFailed上传失败好,下面举个例子。因为没有服务器的支持。主要介绍browse一段。新建fla,然后在root上建立一个sonny_mc和一个sonny_txt 动态文本将下面脚本放入帧上:var fileRef = (new .FileReference(); sonny_mc.onRelease = function () if (fileRef.browse() sonny_txt.text = File Name: + fileRef.name; ;发布一下。在浏览器中看看效果。一般来说,使用filter类分为个步骤。设置filter对象2 定义filter的各个参数将需要效果的
17、的filters属性设置为由filter对象组成的Array.如下所示:var myfilter = new flash.filters.DropShadowFilter(); / customize the filter through public properties mc.filters = myfilter;下面演示一个经典的例子。显示了模糊,阴影,外辉,内辉四种效果(/ Blur,/ Shadow,/ GlowFilter (outer),/ GlowFilter (inner))新建一个fla,画一个正方形,分明命名为clip_0到clip_3,将下面的代码加入帧上。var my
18、Blur = new flash.filters.BlurFilter(); myBlur.clone = true; myBlur.blurX = 20; myBlur.blurY = 20; clip_0.filters = myBlur; var myShadow = new flash.filters.DropShadowFilter (); myShadow.strength = 1; myShadow.blurX = 20; myShadow.blurY = 20; myShadow.angle = 45; clip_1.filters = myShadow; var myGlow
19、 = new flash.filters.GlowFilter (); myGlow.strength = 1; myGlow.blurY = 20; myGlow.blurX = 20; myGlow.inner = false; myGlow.color = 0xff0000; myGlow.strength = 1; myGlow.angle = 45; clip_2.filters = myGlow; var myGlow = new flash.filters.GlowFilter (); myGlow.strength = 1; myGlow.blurY = 20; myGlow.
20、blurX = 20; myGlow.inner = true; myGlow.color = 0x000000; myGlow.strength = 1; myGlow.angle = 45; clip_3.filters = myGlow;可以看到如下效果:主要介绍了flash中的bitmap位图类。具体是flash.display.BitmapData 主要有setPixel, getPixel ,通过这个方面来提供对位图的像素操作我们马上来看一个例子吧:新建一个fla,把如下代码放在帧上:var img_bmp = new flash.display.BitmapData(256,25
21、6,true); for ( var y:Number=0; y256; y+ ) for ( var x:Number=0; x256; x+ ) var a:Number = y; var r:Number = x; var g:Number = 256-x; var b:Number = 256-y; var c:Number = (a24)|(r16)|(g8)|(b0); img_bmp.setPixel32(x,y,c); _root.createEmptyMovieClip(bmp, 1); _root.bmp.attachBitmap(img_bmp, 2);发布。出现结果如下
22、:下面是学习了国外网站的一个例子,代码如下:pixelSize = 5; var contain = _root.createEmptyMovieClip(contain, 1 ); contain._y = 235; bitmapData = new flash.display.BitmapData( 300, 225, false ); contain.attachBitmap(bitmapData, 1); bitmapData.draw( clip ); for ( var x=0; x300/pixelSize; x+ ) for ( var y=0; y225/pixelSize; y+ ) var seed = _root.bitmapData.getPixel( x*pixelSize, y*pixelSize ); for ( var a=0; apixelSize; a+ ) for ( var b=0; bpixelSize; b+ ) _root.bitmapData.setPixel( x*pixelSize+a, y*pixelSize+b, seed ); 运行后的结果如下图,图的上半部分是原图,下半部分是生成的像素图: