ActionScript 椭圆运动

### ActionScript 椭圆运动实现详解 #### 一、概述 ActionScript 是一种面向对象的脚本语言,主要用于Adobe Flash Player 和 Adobe AIR 上创建交互式应用程序、游戏和动画。在给定的代码示例中,主要实现了多个 MovieClip 对象(即图形对象)沿着椭圆路径移动的效果。这种效果在很多动画场景中非常实用,例如制作动态按钮或创建有吸引力的动画背景等。 #### 二、核心知识点分析 ##### 1. 变量定义与初始化 ```as3 stop(); var btnStr:String = "mc"; var btnNum:Number = 5; var mcStr:String = "mc"; var mcNum:Number = btnNum; var rel:Number = 1; var base:MovieClip = this.roll; var btnBase:MovieClip = base; var angStep:Number = Math.round(360 / mcNum); var cx:Number = 0; var cy:Number = 0; var ra:Number = 250; var rb:Number = 20; var et:Number = 1; ``` - **`stop();`**: 停止当前的脚本执行。 - **`btnStr`** 和 **`mcStr`**: 定义了 MovieClip 的名称前缀。 - **`btnNum`** 和 **`mcNum`**: 表示 MovieClip 的数量。 - **`rel`**: 控制椭圆运动的方向。 - **`base`**: 当前的 MovieClip 对象,用于存储其他 MovieClip。 - **`btnBase`**: 同 `base`,用于存储控制按钮。 - **`angStep`**: 每个 MovieClip 在椭圆上的角度增量。 - **`cx`** 和 **`cy`**: 椭圆的中心坐标。 - **`ra`** 和 **`rb`**: 椭圆的半径,分别是水平方向和垂直方向。 - **`et`**: 运动时间间隔。 ##### 2. 函数实现 - **`ellipseMove()`**: 实现椭圆运动的核心函数。 - **参数说明**: - **`mc`**: 需要进行椭圆运动的 MovieClip 对象。 - **`x1`** 和 **`y1`**: 椭圆的中心坐标。 - **`a`** 和 **`b`**: 椭圆的半径。 - **`deltaAng`**: 每次移动的角度增量。 - **`t`**: 动画持续时间。 - **内部实现**: - 使用正弦和余弦函数计算 MovieClip 在椭圆上的位置。 - 利用 Tween 库实现平滑过渡。 - 调整 MovieClip 的大小、透明度以及模糊效果以增强视觉效果。 - **`getEffect()`**: 计算特定效果(如透明度变化)的函数。 - **参数说明**: - **`ty`**: MovieClip 的 y 坐标。 - **`y1`**: 椭圆的中心 y 坐标。 - **`b`**: 椭圆垂直方向的半径。 - **`max`** 和 **`min`**: 效果的最大值和最小值。 - **内部实现**: - 根据 MovieClip 的 y 坐标计算效果值。 - **`setEvent()`**: 控制椭圆运动开始和结束的函数。 - **参数说明**: - **`i`**: 控制按钮的序号。 - **内部实现**: - 根据传入的参数调整椭圆运动的方向和起始位置。 - **`disBtns()`** 和 **`enBtns()`**: 分别用于禁用和启用控制按钮的函数。 - **参数说明**: - **`base`**: 存储按钮的 MovieClip 对象。 - **`nameStr`**: 按钮名称的前缀。 - **`n`**: 按钮的数量。 - **内部实现**: - 遍历所有按钮并根据需要启用或禁用它们。 #### 三、总结 通过上述分析可以看出,该代码片段利用了 ActionScript 的强大功能来实现复杂的椭圆运动效果。这种效果不仅能够增强动画的视觉吸引力,还能够在一定程度上提升用户的交互体验。通过对关键变量和函数的理解,开发者可以轻松地将其应用到自己的项目中,并根据实际需求进行调整和优化。


















var btnStr:String = "mc";
var btnNum:Number = 5;
var mcStr:String = "mc";
var mcNum:Number = btnNum;
var rel:Number = 1;
var base:MovieClip = this.roll;
var btnBase:MovieClip = base;
var angStep:Number = Math.round(360/mcNum);
var cx:Number = 0;
var cy:Number = 0;
var ra:Number = 250;
var rb:Number = 20;
var et:Number = 1;
var statMov:Array = [];
import mx.transitions.Tween;
import mx.transitions.easing.*;
import flash.filters.BlurFilter;
/* FUNCTION */
function ellipseMove(mc:MovieClip, x1:Number, y1:Number, a:Number, b:Number, deltaAng:Number, t:Number) {
var deltaX:Number;
var deltaY:Number;
var mcSin:Number;
var mcCos:Number;
!mc.ang ? mc.ang=0 : mc.ang=mc.ang;
deltaAng = deltaAng*Math.PI/180;
ang = deltaAng+mc.ang;
angTween = new Tween(mc, "ang", mx.transitions.easing.Strong.easeOut, mc.ang, ang, t, true);
angTween.onMotionChanged = function() {
mcSin = Math.sin(mc.ang);

- wkj_01212011-09-16片段啊,也没有点注释啊,很晕!!


- 粉丝: 5
- 资源: 9
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- [LG PLC例程源码]流延膜设备.zip
- [LG PLC例程源码]恒压供水系统.zip
- [LG PLC例程源码]韩国大浩切纸机程序.zip
- AJ-Captcha-Go资源
- Magic.NET-C#资源
- MDword-PHP资源
- excelize-wasm-JavaScript资源
- ERD-ONLINE-SQL资源
- Demo-计算机二级资源
- 毕业设计前端-毕业设计资源
- InnovationAndEntrepreneurship-大创资源
- SmartCar_Code-智能车资源
- 每周精选合集-活动资源
- deepseek4j-DeepSeek资源
- 大学生活动社交小程序-活动资源
- 圣诞老人你来做(Santa Yourself)-活动资源


