|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
网页设计者使用Flash创作出既漂亮又可改变尺寸的导航界面以及其他奇特的效果。Flash的前身是FutureWave公司的FutureSplash,是世界上第一个商用的二维矢量动画软件。
后面进修了FlashAS3教程:ImageLoader类,可是偶然我们在做项目时大概会碰到如许或那样的成绩,这篇里给人人专门供应些办理举措。
在做项目标时分,总会碰着良多,奇奇异怪的成绩,看了这篇文章信任会有些匡助,固然不是很周全,但只需是我碰着过的成绩,就分享给人人!可是也怕有些想不起了。。全力额、、
====================气逝世你的分割线====================
1、数组的排序成绩:Array.sort()办法
人人都常常用排序,一样平常都是字符串排序甚么的,都不会发明甚么的,如今来看一个风趣的征象
CODE:
vara:Array=[7,3,32,64,96,13,42];
a.sort();
trace(a);
//输入:13,3,32,42,64,7,96奇异了,为何排序出来的器材是个如许的。。
剖析为何:细心看一下,会发明每一个数字的第一个数字,切实其实是按排序放好的:1,3,3,4,6,7,9
为何会如许呢?细心来看看Array的官方文档
QUOTE:默许情形下,Array。sort()按以下体例举行排序:
1、排序辨别巨细写(Z优先于a)。
2、按升序排序(a优先于b)。
3、修正该数组以反应排序按次;在排序后的数组中不按任何特定按次一连安排具有不异排序字段的多个元素。
4、元素不管属于何种数据范例,都作为字符串举行排序,以是100在99之前,这是由于"1"的字符串值小于"9"的字符串值。 不难发明,第4条申明了,默许是以字符串举行排序,而不是以字符串排序,难怪会呈现如许的了局额
那末应当怎样排序才会呈现我们要的谜底呢?
CODE:
vara:Array=[7,3,32,64,96,13,42];
a.sort(Array.NUMERIC);
trace(a);
//输入:3,7,13,32,42,64,96加的这个参数是甚么器材额。。细心看看匡助文档吧。。
然后Array供应了几个常量分离是:
QUOTE:CASEINSENSITIVE:uint=1[static]指定Array类排序办法为不辨别巨细写的排序。
DESCENDING:uint=2[static]指定Array类排序办法为降序排序。
NUMERIC:uint=16[static]指定Array类排序办法为数值(而不是字符串)排序。
RETURNINDEXEDARRAY:uint=8[static]指定排序前往的数组包括数组索引。
UNIQUESORT:uint=4[static]指定Array类排序办法的独一排序请求。 ====================气逝世你的分割线====================
2、Loader.load加载图片,显现不出来
这个成绩能够一笔带过额。。良多人都碰着过,实际上是由于你没有加checkPolicyFile
假如断定图片跨域了,那末加载图片的时分,应当如许写
CODE:
varloader:Loader=newLoader;
varrequest:URLRequest=newURLRequest(url);
varlc:LoaderContext=newLoaderContext(true);
loader.load(request,lc):加的这个newLoaderContext(true),能够往参考官方匡助文档
这个机关函数能够传三个参数
第一参数:指定是不是往加载跨域文件
第二参数:指定要利用的使用程序域
第三参数:指定要利用的平安沙箱
====================气逝世你的分割线====================
3、flash嵌进代码
常常出成绩,好比翻开窗口会被制止,flash游戏做偏向键的,屏幕会随着动等相似成绩
我也常常碰着如许的成绩,花工夫研讨了一下
注重第一个,嵌进代码中有一个使flash通明的参数,不要把它设置成通明,那末良多成绩都能够办理,不信的话,人人能够尝尝,另有良多不经常使用的属性,有些能够制止flash某些办法的利用,很烦人的,出格是某些博客,公然平台等,传flash以后,他在嵌进代码中会加一些如许的属性,那末flash有良多事变都不克不及做
别的另有一个就是,假如是从flash中弹出新窗口,设置成不通明也会被制止,可是在以后窗口翻开,就不会
这是我在做项目标时分,碰着的成绩,和我的办理办法,假如有高人有更好的举措,必定要告知我额。。。
====================气逝世你的分割线====================
4、mask遮罩层
mask这个属性信任良多人看过匡助文档以后,不会细心往看,出格是熟习AS2的setMask的人
固然包含我本人也放过如许的毛病,因而在此提起,但愿列位老手在进修的时分,把匡助文档看分明
QUOTE:mask属性
mask:DisplayObject[read-write]
言语版本:ActionScript3.0
Player版本:FlashPlayer9
挪用显现工具被指定的mask工具遮罩。要确保当舞台缩放时蒙版仍旧无效,mask显现工具必需处于显现列表的举动部分。但不绘制mask工具自己。将mask设置为null可删除蒙版。
要可以缩放遮罩工具,它必需在显现列表中。要可以拖动蒙版Sprite工具(经由过程挪用其startDrag()办法),它必需在显现列表中。要为基于sprite正在调剂的mouseDown事务挪用startDrag()办法,请将sprite的buttonMode属性设置为true。 依据匡助文档的说法,假如要缩放遮罩层,就必需把遮罩层放在响应的显现列表中,也就是addChild(mask)
好比:我如今利用的是
stage.scaleMode=StageScaleMode.SHOW_ALL;
假如说你的遮罩层没有addChild那末,在缩放窗口的时分,mask是不会改动宽高;反之到场了显现列表,就会随着窗口一同缩放
mask的拖拽和点击等事务也是云云!
综上所述:设置遮罩层最好做法是放到显现列表,固然不扫除有出格感化的
别的,你把mask的属性清空,原本被做为遮罩层的,就能够看的到了,不然是看不到遮罩层的
====================气逝世你的分割线====================
5、稀里糊涂的mc
你利用Loader加载出去的mc,假如内里是动画,大概带有声响
你加载出去,就算你不addChild,他也在播放的,并且偶然候你把持他stop,还把持不了。。
办理计划是:加stop(),做动画素材的时分,只管把关头动画都做在主场景帧上,那末程序中就能够把持动画了
置于声响,还真是个头疼的器材,固然利用mc的一样办理计划也是能够的,可是我倡议,把声响做到库中
然后利用ClassLoader把声响拿上去,然后用程序把持声响。
====================气逝世你的分割线====================
6、鬼魂般的容器
一个容器,当被addChild后,你就能够直不雅的看失掉他,可是你又removeChild,良多人都以为如许,容器就不存在了,实则否则,他还存在
好比你做一个飞机游戏,飞机爆炸后,你就会removeChild它,可是如许做是不敷的,他仍然还存在谁人地位,并且x,y值是仍然稳定的
假如飞机上还写了碰撞检测,假如这时候候有枪弹飞过去,仍然会算碰撞乐成,另有良多相似的例子
团体倡议:两个举措,复杂的游戏嘛,能够设个全局逻辑值,当断定不必要在碰撞检测,把这个值酿成false,每次检测碰撞,也反省一下这个值,就好了
第二个举措是庞大一点的,扩大容器类,侦听他的removedFromStage,removed事务和addedToStage,added事务,假如到场了,则容器中某个值即是true,反之是false
这个属性就能够叫前往是不是被到场显现工具
固然另有其他的举措,好比反省容器的contains办法,能够反省出以后容器中是不是含有容器,假如removeChild,那末你反省了局就是不存在
====================气逝世你的分割线====================
oh。。先写这么多,一定不是很完整。。一会儿我也没举措把我在项目中碰着的任何成绩搬出来。。想起来,我在持续写。。
可以把它存成AS档做为外部连结档案(如定义ActionScript类则必须在写在as文件里,再通过import加入类),以方便共同工作和更进阶的程序修改。 |
|