谁能务实重行解释意思as3.0每行的意思谢谢了

AS3.0中人物行走代码剖析
先提供下人物行走图片素材:
     
  根据以上图片实现人物行走的具体实现方法是:通过改变Bitmap实例的bitmapData属性,来动态的改变Bitmap实例在舞台上的显示。
然后设置enterFrame 或 Timer事件,使Bitmap实例的bitmapData属性不断的改变,就可以实现人物行走的效果。
  具体代码如下:
人物行走代码
<span STYLE="CoLor: #&package&2&{
&3&&&&&import&flash.display.B
&4&&&&&import&flash.display.BitmapD
&5&&&&&import&flash.display.DisplayO
&6&&&&&import&flash.display.S
&7&&&&&import&flash.events.MouseE
&8&&&&&import&flash.events.TimerE
&9&&&&&import&flash.geom.M
<span STYLE="CoLor: #&&&&&import&flash.utils.T
<span STYLE="CoLor: #&&&&&[SWF(width=<span STYLE="CoLor: #,height=<span STYLE="CoLor: #)]
<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&&public&class&main&extends&Sprite
<span STYLE="CoLor: #&&&&&{
<span STYLE="CoLor: #&&&&&&&&&[Embed(source="img/B3.PNG")]
<span STYLE="CoLor: #&&&&&&&&&private&var&MovePng:C
<span STYLE="CoLor: #&&&&&&&&&private&var&_bmp:B
<span STYLE="CoLor: #&&&&&&&&&private&var&_bmd:BitmapD
<span STYLE="CoLor: #&&&&&&&&&private&var&_arr:A
<span STYLE="CoLor: #&&&&&&&&&private&var&timer:T
<span STYLE="CoLor: #&&&&&&&&&private&var&i:uint=<span STYLE="CoLor: #;
<span STYLE="CoLor: #&&&&&&&&&private&var&j:uint=<span STYLE="CoLor: #;
<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&&&&&&public&function&main()
<span STYLE="CoLor: #&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&var&png:DisplayObject=new&MovePng();
<span STYLE="CoLor: #&&&&&&&&&&&&&_bmd=new&BitmapData(png.width,&png.height,&true,&<span STYLE="CoLor: #);
<span STYLE="CoLor: #&&&&&&&&&&&&&_bmd.draw(png);
<span STYLE="CoLor: #&&&&&&&&&&&&&_arr=fillArr(_bmd,&<span STYLE="CoLor: #,&<span STYLE="CoLor: #,&_arr);
<span STYLE="CoLor: #&&&&&&&&&&&&&_bmp=new&Bitmap();
<span STYLE="CoLor: #&&&&&&&&&&&&&addChild(_bmp);
<span STYLE="CoLor: #&&&&&&&&&&&&&_bmp.bitmapData=_arr[<span STYLE="CoLor: #][<span STYLE="CoLor: #];
<span STYLE="CoLor: #&&&&&&&&&&&&&timer=new&Timer(<span STYLE="CoLor: #0);
<span STYLE="CoLor: #&&&&&&&&&&&&&timer.addEventListener(TimerEvent.TIMER,&onTimer);
<span STYLE="CoLor: #&&&&&&&&&&&&&stage.addEventListener(MouseEvent.MOUSE_DOWN,&move);
<span STYLE="CoLor: #&&&&&&&&&}
<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&&&&&&private&function&onTimer(e:TimerEvent):void
<span STYLE="CoLor: #&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&_arr[i].push(_arr[i].shift());
<span STYLE="CoLor: #&&&&&&&&&&&&&_bmp.bitmapData=_arr[i][<span STYLE="CoLor: #];
<span STYLE="CoLor: #&&&&&&&&&}
<span STYLE="CoLor: #&&&&&&&&&
<span STYLE="CoLor: #&&&&&&&&&private&function&move(e:MouseEvent):void
<span STYLE="CoLor: #&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&timer.stop();
<span STYLE="CoLor: #&&&&&&&&&&&&&j=j==<span STYLE="CoLor: #?<span STYLE="CoLor: #:<span STYLE="CoLor: #;
<span STYLE="CoLor: #&&&&&&&&&&&&&if(j==<span STYLE="CoLor: #){
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&i=++i&&&<span STYLE="CoLor: #&?&<span STYLE="CoLor: #&:&i;
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&timer.start();
<span STYLE="CoLor: #&&&&&&&&&&&&&}
<span STYLE="CoLor: #&&&&&&&&&}
<span STYLE="CoLor: #&<span STYLE="CoLor: #&&&&&&&&&private&function&fillArr(bmd:BitmapData,&wNum:uint,&hNum:uint,&arr:Array):Array
<span STYLE="CoLor: #&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&arr=[];
<span STYLE="CoLor: #&&&&&&&&&&&&&var&mx:Matrix=new&Matrix();
<span STYLE="CoLor: #&&&&&&&&&&&&&var&sw:Number=bmd.width&/&wN
<span STYLE="CoLor: #&&&&&&&&&&&&&var&sh:Number=bmd.height&/&hN
<span STYLE="CoLor: #&&&&&&&&&&&&&var&_bmd:BitmapData=new&BitmapData(sw,&sh);
<span STYLE="CoLor: #&&&&&&&&&&&&&for&(var&i:uint=<span STYLE="CoLor: #;&i&&&hN&i++)
<span STYLE="CoLor: #&&&&&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&arr[i]=[];
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&for&(var&j:uint=<span STYLE="CoLor: #;&j&&&wN&j++)
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&{
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&&&&&_bmd=_bmd.clone();
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&&&&&mx.tx=-<span STYLE="CoLor: #&*&sw&*&j;
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&&&&&mx.ty=-<span STYLE="CoLor: #&*&sh&*&i;
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&&&&&_bmd.draw(bmd,&mx);
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&&&&&arr[i][j]=_
<span STYLE="CoLor: #&&&&&&&&&&&&&&&&&}
<span STYLE="CoLor: #&&&&&&&&&&&&&}
<span STYLE="CoLor: #&&&&&&&&&&&&&return&
<span STYLE="CoLor: #&&&&&&&&&}
<span STYLE="CoLor: #&&&&&}
<span STYLE="CoLor: #&}<span STYLE="CoLor: #&
演示效果见
  实现要点:通过Matrix将人物行走图片的各个动作分离出来,放进数组里(此时数组里的每个元素都是BitmapData的一个实例),然后遍历数组的各个项。
关键点1:Bitmap的bitmapData属性改变后,Bitmap的显示即发生改变。
关键点2:BitmapData实现draw方法后,BitmapData即发生变化,代码中66行_bmd=_bmd.clone();是将一个新的实例赋值给了_bmd,相当于又建立了个BitmapData的实例。这样一来通过draw方法就不会改变原来的_bmd的内容了。如果没有这一行,那么数组里的每个元素将都是一模一样的值即都是最后一个_bmd,将不会实现行走效果。
关键点3:Matrix,这个类不仅能将图片切割,而且能实现图片的马赛克效果等。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 7806|回复: 3
使用Flash CS5 AS3.0 实现多点触摸之官方帮助教程
AS3 flash iphone IOS 多点 多点触摸 多点触控&&Multitouch TouchEvent GestureEvent% T) T0 x, Q, w&&G( y! }
1 [) r* U! @' P& Z
Flash Platform 的触摸事件处理功能包括从启用触摸的设备上一个或多个接触点的输入。此外,Flash 运行时处理将多个触摸点与移动结合以创建动作的事件。换句话说,Flash 运行时解释两种输入类型:
触摸 使用启用触摸的设备中的单点设备(例如手指、笔针或其他工具)输入。某些设备支持多个同步接触点(使用手指或笔针)。
7 }6 |5 L/ D' i! q, K; r&&U4 U$ o
多点触控 使用多个同步接触点输入。
. g9 t( q3 M3 E&&Z0 |% ~, N; V
动作 由设备或操作系统解释以响应一个或多个触摸事件的输入。例如,用户同时旋转两个手指,设备或操作系统会将触摸输入解释为旋转动作。有些动作使用一个手指或触摸点执行,而有些动作需要多个触摸点。设备或操作系统确定要分配给输入的动作类型。* E$ y8 Z0 l6 p
触摸和动作输入都可以是多点触控输入,具体取决于用户的设备。ActionScript 提供了相应 API,用于处理触摸事件、动作事件以及针对多点触控输入单独跟踪的触摸事件。+ j% c# |; l! p&&i; s! P5 h. B
&&\; o9 Z, X7 e. s* P9 ?2 l
注: 侦听触控和手势事件可能会占用大量的处理资源(相当于每秒呈现若干帧),这取决于计算设备和操作系统。当您并不是真正需要触控或手势所提供的额外功能时,最好使用鼠标事件。当您使用触控或手势事件时,请考虑在平移、旋转或缩放操作期间减少可能发生图形更改的数量,尤其是当可以快速调度此类事件时。例如,当用户使用缩放手势调整某个组件的大小时,您可以停止该组件内的动画。
; C5 O0 @9 i7 p$ B9 m' w* b
通过flash CS5 可以轻松开发多点触摸,&&而且并运行在iphone ipad 的IOS系统上.
: c- \# E* ^2 t/ b&&c( L5 E5 W
5 y9 N' V. L4 {
触摸和拖动
好贴 ) G2 K; W' H0 b9 z
学习咯!!
特棒的帖子,学习下
地址:成都市高升桥东路2号高盛中心1109室 电话:028--
版权所有 Copyright(C)
All rights reserved
电子邮件:
在线咨询QQ:
MSN:蜀ICP备号一聚教程网:一个值得你收藏的教程网站
flash as3.0 跨域的解决办法
时间: 00:00:00
编辑:简简单单
来源:转载
跨域问题相信不是所有人都可以遇到,如果你在本地发布,或者说直接Ctrl+Enter在FlashIDE中预览,是不会遇到跨域问题的,当然,跨域有个前提,那就是Flash不是完全独立的,与外界要做一些通信和交互,如果你的Flash是完全独立的文件,没有和外界发生任何交互和数据通信的话,那么你可以不考虑跨域问题,因为这也不存在跨域问题。
什么是跨域?
跨域简单的说就是访问其他域名的文件或资源,比如a.com的Flash去访问b.com的资源,那么就会引起跨域的问题,因为a.com和b.com不是同一个域名。
为什么有跨域问题?
其实不仅仅是Flash,Javascript等一些脚本也有跨域的问题,这个主要是自身的安全机制所决定的,因为跨域访问一些文件或资源有一定的危险性,他超过了网站自身的范围,对于站外的资源无法审核其安全性,在网络病毒木马日益猖獗的今天,跨域限制访问是其安全策略的一个重要解决手段。
跨域有什么问题?
跨域的问题有很多,最直接的就是所访问的文件被限制了,这样一来,你的Flash就不能正常工作了,所以是让人很头疼的一件事情。
现在的Flash已经不仅仅是作为一个动画了,更多的有了数据交互,所以和外界的通信来作为一个互动性比较强的媒介来展现,跨域也是其中必须解决的一个问题。
恩,那也许有人说了,既然有跨域的问题,那我把资源都放在同一个域名下不就可以了?恩,的确可以这样做,但是有时候我们也会遇到访问外部资源的情况,而且在一个比较正规的项目中,Flash和Html往往是分开放的,很多公司也是这样,为了便于维护和管理,所以跨域的问题就容易出现。
??乱淮蠖眩?旅妫?痛游沂导实南钅恐欣锤嫠叽蠹腋迷跹?饩隹缬蛭侍猓?嘈庞辛舜宋模?蠹医窈笤儆龅娇缬蛭侍饩湍苡?卸?饬恕?/p>
1、Flash自身的安全机制设置:
Flash中,在IDE运行是没有任何安全限制的,但是发布出去的话,就会有不少限制,Flash有2中发布方式,一个是仅访问网络,一个是仅访问本地,大家可以在文件-发布设置-Flash选项卡中看到,注意必须是在Flash文件有效时才会有哦,如果当前编辑的是as文件是木有这个选择菜单的:
这里就已经限制了Flash的安全级别,如果是只访问本地,那么Flash中所有的对Web的访问都将禁止,而只访问网络的话,对本地的文件访问都将禁止,所以大家根据实际的用途来选择,如果你希望你的Flash放到Web上,那么就选择只访问网络,这样的话你测试就务必放在WebService中测试了,本地运行就会出现各种问题(如果有数据通信的话),例如:测试URLhttp://127.0.0.1/123.swf。
2、ActionScript代码设置:
AS2写法:System.security.allowDomain(&*&);//针对不同http资源
System.security.allowInsecureDomain(&*&);//针对需要安全验证的资源,比如https
AS3写法:flash.system.Security.allowDomain(&*&);
flash.system.Security.allowInsecureDomain(&*&);
上面就是严格的写法,AS3还好说,大家要注意一下AS2,AS2是木有flash.system这个包的,但是你import flash.system并不会报错,所以如果你把AS3的代码复制进去运行虽然一切正常,但是实际是木有任何效果的。一定要注意!
上面的代码就是说允许Flash去访问任何URL资源,如果只想访问特定的URl,就把*改成该URL即可,如果多个URl,就用逗号分隔就可以了,注意allowInsecureDomain是允许访问带验证的URL资源,比如https打头的,如果你访问的只是普通http的话就不需要了。
3、html的设置:
如果你需要和页面的JS通信,那么html里就必须有这样一个参数:
&param name=&allowScriptAccess& value=&always& /&
参数always表示始终允许脚本访问,如果是never,就表示始终不允许。
4、加载外部资源:
如果你要读取一个外部文件,比如swf,picture,mp3等等,那么就需要一个跨域策略文件(crossdomain.xml),这个其实就是一个xml文件,具体内容是:
&?xml version=&1.0&?&
&cross-domain-policy&
&&& &allow-access-from domain=&www.explorechn.com& /&
&&& &allow-access-from domain=&explorechn.com& /&
&&& &allow-access-from domain=&223.4.119.191& /&
&/cross-domain-policy&
这就是跨域策略文件,allow-access-from domain表示允许访问的URl,如果有多个依次添加,如果允许所有就一个 allow-access-from domain = &*&就可以了。
需要说明一下这个文件该怎么用,如果你的Flash在a.com下,你需要访问b.com的资源,那么把这个xml放在b.com的根目录就可以自动访问了,当然,你也可以访问其他目录的策略文件。
flash.system.Security.loadPolicyFile(URL:String);
通过这个loadPolicyFile就可以主动去加载一个安全策略文件了,注意上面是AS3的写法,AS2不一样哦,参考上面的写法。
5、各个浏览器的跨域问题:
IE就不说了,这个基本没啥问题,包括Flash自己生成的Html就对IE的支持做的很好,这里就说说Chrome和FF的问题:
对于FLash,IE是认object标签的,但是FF和Chrome是认embed标签的,所以这个很重要,如果在调试的时候,发现firebug等工具提示&...... is not a Function&,我们就要从以下地方查找原因:
1、addCallback是否成功注册
2、allowScriptAccess是否允许always,默认不允许
3、Flash是否完全加载完毕
一般来说,第三点是我们最容易遇到的,如果你的Flash没有加载完毕就去调用函数的话,是找不到这个函数的。
这里需要注意另外一个错误提示,就是&Error calling method on NPObject&,如果出现这个错误,就要小心了:
1、安全策略问题,请参考上面所有的解决方案
2、自身函数错误

我要回帖

更多关于 as3 textfield 换行 的文章

 

随机推荐