随笔分类 -  12.Flex/Flash/AS3.0

摘要:碰撞检测基本上可能分为二类:对象与对象的碰撞检测、对象与点的碰撞检测为了方便测试,先写一个box类(生成一个小矩形)最基本的对象碰撞检测:hitTestObject如果把Box换成前面例子中的Ball,就是下面这个样子:很明显:矩形换成球后,碰撞检测变得不精确了,有一些球似乎并没有真正撞到其它球也停下来了,这是为什么腻?答案就在于:Flash对象碰撞检测默认采用“对象的矩形边界&rdq... 阅读全文
posted @ 2010-04-19 11:24 菩提树下的杨过 阅读(4960) 评论(9) 推荐(1) 编辑
摘要:上一篇里演示的弹性运动加上摩擦力因素后,物体最终基本上都会比较准确的停在目标位置。但是我们回想一下现实世界中的弹簧,如果把弹簧的一头固定起来(即相当于目标点),而另一端栓一个球,把球拉开或压缩一定距离然后松手,事实上小球永远也不可能到达弹簧固定的那一端(因为弹簧即使压缩到最紧,也总有一定的长度)所以如果要在Flash里模拟现实中的弹簧,真正的目标点绝不是弹簧的端点,而是目标点再偏移一段距离(即弹簧... 阅读全文
posted @ 2010-04-18 13:15 菩提树下的杨过 阅读(1668) 评论(0) 推荐(0) 编辑
摘要:动画中的弹性运动 从视觉效果上接近 物理经典力学中的单摆运动或弹簧(胡克定律F=Kx)振动先看下面的模拟演示:规律:小球先从出发点(初始为最左侧)向目标点(中心点)加速狂奔,奔的过程中速度越来越大,但加速度越来越小,等经过目标点时,发现速度太大刹不住车(此时速度达到最大值,但加速度减为0),奔过头了!于是加速度发生逆转,从0开始变为负值,从而导致速度越来越小,等速度减到0时,也奔到了最右侧(此时负... 阅读全文
posted @ 2010-04-17 12:02 菩提树下的杨过 阅读(2082) 评论(0) 推荐(0) 编辑
摘要:缓动 与 匀变速 看上去很类似,但其实有区别:匀变速的公式为 V = V0 + at --速度v与时间t是线性(正比)关系,而且这种运动不需要确定目标点,速度可以按照这种规律一直变下去而缓动指的是物体越接近目标时速度越慢,速度跟距离成反比关系,用公式描述为 V = k S (0<k<1),这种运动需要先确定一个目标点,比如车辆定点停车:先指定一个位置,然后汽车从远处开过来,快到停车点时... 阅读全文
posted @ 2010-04-16 17:07 菩提树下的杨过 阅读(2545) 评论(0) 推荐(1) 编辑
摘要:以前为了赶项目,利用系统组件制作过一款视频播放器(见Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器),但是系统组件实在是太大了,最终生成的swf居然有103K,随着AS3的深入学习,昨天又弄了一个只用AS3的播放器,最终只有8.82K,呵呵,这肥减得那是相当厉害。用到了上一篇(Flash/Flex学习笔记(35):自己动手实现一个滑块控件(JimmySilder))里自... 阅读全文
posted @ 2010-04-16 10:29 菩提树下的杨过 阅读(8073) 评论(1) 推荐(3) 编辑
摘要:先看最终的演示:滑块条的应用实在太广泛了:mp3播放器中声量的大小控制,视频播放时的画面亮度调节,阅读新闻时字体大小的实时调整,对象的大小互动控制...分析:1.任何一个滑块条控件的UI部分,基本上可以分为:背景滑块条 + 滑块按钮 二个部分所以我分成了三部分: JimmySilderBar(背景条),JimmySilderButton(拖动钮),JimmySilder(真正的滑动控件,将前二个组... 阅读全文
posted @ 2010-04-15 13:34 菩提树下的杨过 阅读(3269) 评论(3) 推荐(1) 编辑
摘要:如果想在一个自定义类中注册对stage对象的监听事件,然后在另一个文档类中使用该类的实例(或在fla的时间轴上使用该类的实例),你会很郁闷的发现:在构造函数中始终无法引用到this.stage(用trace(this.stge)会一直返回null),既然引用都得不到,当然也就无法注册事件了,正确的做法如下:即必须在ADDED_TO_STAGE事件以后,才能引用到stage对象,当然还有一个提前是该... 阅读全文
posted @ 2010-04-15 13:06 菩提树下的杨过 阅读(2517) 评论(2) 推荐(0) 编辑
摘要:类似C#中自定义事件需要一个自定义的EventArgs子类一样,AS3也需要开发者自定义一个Event类的子类,这里我们假设一种场景:设计一个Person(人物)类,里面有Age(年龄),Name(姓名),我们希望每当Person类的实例Age(年纪)发生变化时,能触发一些自定义事件,从而调用某些特定的处理方法。 1.先设计Event类的子类AgeChangeEvent这里我们定义了二类事件:年龄... 阅读全文
posted @ 2010-04-14 21:14 菩提树下的杨过 阅读(2516) 评论(0) 推荐(0) 编辑
摘要:AS3历经若干年的成长,已经完全进化为一门面向对象的(动态)语言,但很多介绍AS3的书籍上往往只注意了AS3语言本身,而淡化了如何跟Flash IDE协同开发。1.如何在Flash时间轴代码上创建一个外部as文件中定义的MovieClip实例?假设外部有一个MyClip.as文件,内容如下:新建一个fla文件(注意:要与MyClip.as处于同一目录),然后在时间轴的代码中就可以这样使用了:Ctr... 阅读全文
posted @ 2010-04-14 16:32 菩提树下的杨过 阅读(1445) 评论(0) 推荐(0) 编辑
摘要:题外话:个别朋友总是问我同样的问题,做为一名c#/silverlight程序员为啥还要学flash ?回 答:看日本片时,就不能对照看欧美的么? 不体会日本的细腻,又怎能感觉到欧美的粗放;同样都是web相关的技术,不必报门户之见;何况这二者有很多可以相互借鉴的东西。注:这个例子来自[FL车在臣](在blueidea上又名“寂寞火山”)翻译的“Animation ... 阅读全文
posted @ 2010-04-14 12:59 菩提树下的杨过 阅读(2253) 评论(6) 推荐(0) 编辑
摘要:对象拖拽:这其实就是以前所学知识:Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag)+ Flash/Flex学习笔记(23):运动学原理的综合运用,要提一下的是下面代码中对于EnterFrame的添加与移除操作对象投掷:在上面的代码中,鼠标的拖拽只影响了小球的y坐标(注:指对运动方面的影响),即仅相当于举高了小球。而投掷则意味着:在鼠标松开小球的那一瞬间,小球也... 阅读全文
posted @ 2010-04-13 13:50 菩提树下的杨过 阅读(1675) 评论(8) 推荐(1) 编辑
摘要:对于从Sprite类继承来的对象,要实现拖放当然是Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag)里讲的方法最方便,但是对于不是从Sprite类继承得来的对象,这startDrag/stopDrag是不能用的,这时候只能采用最通常用做法:利用Mouse_Down,Mouse_UP,Mouse_Move事件来处理注意:对象的Mouse_Move事件,只有当鼠标在... 阅读全文
posted @ 2010-04-09 12:35 菩提树下的杨过 阅读(2758) 评论(1) 推荐(0) 编辑
摘要:在开发过程中,经常会遇到要从一个界面跳到另一个界面的情况,比如:软件中的窗口跳转,web开发中的页面跳转...但在Flash的世界里:只有帧,没有窗口与页面,所以控制时间轴/帧之间的跳转,就成为这一需求最常见的解决办法 源文件: http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/FrameControl.fla 阅读全文
posted @ 2010-04-08 20:40 菩提树下的杨过 阅读(2484) 评论(0) 推荐(0) 编辑
摘要:虽然label组件很好用,但是达人们都好象不太喜欢用组件(用组件后最明显的问题:会使swf文件增大好多),所以我也慢慢开始习惯能不用组件则尽量不用注:txtMsg为舞台上的动态文本,二个按钮是从公共库里拉出来的实例源文件:http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/txtScroll.rar 阅读全文
posted @ 2010-04-08 17:32 菩提树下的杨过 阅读(1165) 评论(0) 推荐(0) 编辑
摘要:在一些实时视频或视频分享应用中,需要动态显示麦克风的音量大小,或者检测视频是不是正在播放,这里演示一种简单的音量指示器1.先写一个指示器类其实就是一个根据百分比来填充的矩形2.如何获取音量大小以及监测摄像头直播状态音量大小可以通过activityLevel属性获得,但摄像头的画面变化程度却无法直接获取,但每当摄像头画面有活动时ACTIVITY事件将被触发,所以可在该事件中监测最后一次活动的时间与当... 阅读全文
posted @ 2010-04-08 14:30 菩提树下的杨过 阅读(3877) 评论(3) 推荐(0) 编辑
摘要:直接上代码吧,关键地方都加上注释了: 阅读全文
posted @ 2010-04-08 09:40 菩提树下的杨过 阅读(1828) 评论(2) 推荐(0) 编辑
摘要:摩擦力:假如一个物体在某个方向上沿直线运行,摩擦力会使该方向上的速度越来越小,直到停止。上图示意了该过程,物体以moveAngle角度正向运动,最终的速度speed矢量为vx矢量与vy矢量的矢量和,在每个单位时间内的位移即Speed矢量的大小,分解到x,y轴后,即为vx与vy;加入摩擦力后,speed矢量每单位时间将减少Friction值,也就是视觉上的越来越慢。上面这种方法从物理意义上讲最接近现... 阅读全文
posted @ 2010-04-06 13:00 菩提树下的杨过 阅读(1350) 评论(0) 推荐(0) 编辑
摘要:粒子爆炸:仍然要用到以前的小球类,不过稍加改造增加了x,y轴的速度,其它没变原理:在舞台的某一区域放置大量小球实例,然后在某个时刻让其向四面八方运动即可(即改变每个小球在x,y轴上的坐标)问题:效率!让CPU在每帧对于大量对象进行重绘是很耗资源的,所以当小球跑出舞台边界时,得想办法通知CPU:这些小球不需要再处理了(反正也看不见)!否则纯属折腾CPU,下面的代码用一个数组存放所有对象实例的引用,然... 阅读全文
posted @ 2010-04-05 17:54 菩提树下的杨过 阅读(2028) 评论(1) 推荐(0) 编辑
摘要:先写一个公用的小球类Ball:圆周运行与椭圆运动:主要依靠三角函数结合椭圆公式计算对象的x,y坐标 匀加速直线运动:速度公式:v = v0 + at,物理学上的公式虽然是这样,但是到了Flash中思路得稍微换一下,Flash默认为每秒24帧,而EnterFrame事件在每次进入新一帧时触发,所以可粗略的认为每一帧就是一个“单位时间”,匀加速的重要特征就是每单位时间速度增加固... 阅读全文
posted @ 2010-04-03 18:01 菩提树下的杨过 阅读(1823) 评论(0) 推荐(0) 编辑
摘要:Silverlight中称之为“效果(Effect)”的东东,在Flash里叫“滤镜(Filter)",而且Flash里内置的滤镜要比Silverlight丰富很多,几乎所有对象都有一个filters的属性,它是一个数组,可以将一个或多个滤镜同时应用于某一对象,类似的,如果要去除已经应用的滤镜效果,只要将filters数组清空即可 阅读全文
posted @ 2010-04-03 11:50 菩提树下的杨过 阅读(1402) 评论(0) 推荐(0) 编辑